gpt4 book ai didi

Android 如何更改默认的 VideoView/MediaPlayer 全屏?

转载 作者:行者123 更新时间:2023-11-30 04:30:25 25 4
gpt4 key购买 nike

我目前正致力于在 VideoView 中播放视频(.mp4 文件在两个 android 平板电脑上都运行良好)。首先,我使用了 VideoView,但设备 (EKEN M003S) 以全屏方式播放视频,而不是在我将宽度和高度都设置为 272 x 153 dp 的 VideoView 中。所以我尝试制作一个扩展类的 VideoView 来覆盖 onMeasure() 和 changeVideoSize()。像这样:

    public class EkenVideoView extends VideoView {
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
//Log.i("@@@@", "onMeasure");
int width = getDefaultSize(mVideoWidth, widthMeasureSpec);
int height = getDefaultSize(mVideoHeight, heightMeasureSpec);
if (mVideoWidth > 0 && mVideoHeight > 0) {
if ( mVideoWidth * height > width * mVideoHeight ) {
//Log.i("@@@", "image too tall, correcting");
height = width * mVideoHeight / mVideoWidth;
} else if ( mVideoWidth * height < width * mVideoHeight ) {
//Log.i("@@@", "image too wide, correcting");
width = height * mVideoWidth / mVideoHeight;
} else {
//Log.i("@@@", "aspect ratio is correct: " +
//width+"/"+height+"="+
//mVideoWidth+"/"+mVideoHeight);
}
}
if (screenMode == DisplayMode.ORIGINAL) {
if (mVideoWidth > 0 && mVideoHeight > 0) {
if ( mVideoWidth * height > width * mVideoHeight ) {
// video height exceeds screen, shrink it
height = width * mVideoHeight / mVideoWidth;
} else if ( mVideoWidth * height < width * mVideoHeight ) {
// video width exceeds screen, shrink it
width = height * mVideoWidth / mVideoHeight;
} else {
// aspect ratio is correct
}
}
}
else if (screenMode == DisplayMode.FULL_SCREEN) {
// just use the default screen width and screen height
}
else if (screenMode == DisplayMode.ZOOM) {
// zoom video
if (mVideoWidth > 0 && mVideoHeight > 0 && mVideoWidth < width) {
height = mVideoHeight * width / mVideoWidth;
}
}
//Log.i("@@@@@@@@@@", "setting size: " + width + 'x' + height);
setMeasuredDimension(272, 153);
}

public void changeVideoSize(int width, int height)
{
mVideoWidth = width;
mVideoHeight = height;

// not sure whether it is useful or not but safe to do so
getHolder().setFixedSize(272, 153);

requestLayout();
invalidate(); // very important, so that onMeasure will be triggered
}

我输入宽度 272 和高度 153 以强制 .mp4 视频的宽度和高度为该尺寸,但 EKEN M003S 继续以全屏模式播放视频。因此,当我运行应用程序时,一切正常,视频在所有其他 View 下方的层上全屏播放,使 Activity 及其下方的视频变得半透明。

除了 EKEN M003S,我敢肯定有些设备还具有强制视频默认全屏播放的功能,并且还有一种方法可以覆盖该默认设置。如果有办法,请教我怎么做。谢谢。

最佳答案

http://clseto.mysinablog.com/index.php?op=ViewArticle&articleId=2992625

我已经在华硕 TF 101(1280x800 分辨率)上测试了这段代码,并让视频以 640x480 分辨率运行。尝试在 XML 文件和 changeVideoSize() 方法中设置尺寸,尝试设置 screenMode = DisplayMode.ORIGINAL

关于Android 如何更改默认的 VideoView/MediaPlayer 全屏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7837558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com