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

我目前正在VideoView中播放视频(.mp4文件,这两个Android平板电脑都能很好地工作)。 首先我使用VideoView,但设备(EKEN M003S)全屏播放视频,而不是在VideoView中设置宽度和高度272 x 153 dp。 所以我试图让一个扩展的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继续以全屏模式播放视频。 因此,当我运行该应用程序时,一切正常,并且视频以全屏方式在所有其他视图下方的图层中播放,使活动在其下方的视频中变得透明。

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


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

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

链接地址: http://www.djcxy.com/p/46489.html

上一篇: Android How to change default VideoView / MediaPlayer full screen?

下一篇: Problem with videoView on Android