私は現在、VideoViewのビデオ(2つのアンドロイドタブレットでうまく動作する.mp4ファイル)を再生するために取り組んでいます。最初に私はVideoViewを使用しましたが、デバイス(EKEN M003S)はVideoView内ではなく全画面でビデオを再生しました。これは幅と高さを272 x 153 dpで設定しました。だから私はonMeasure()とchangeVideoSize()をオーバーライドするVideoViewの拡張クラスを作ろうとしました。このように:AndroidデフォルトのVideoView/MediaPlayerフルスクリーンを変更するには?
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
}
私はそのサイズのものであるとのMP4ビデオの幅と高さを強制的に幅272、高さ153に入ったが、EKEN M003Sは、フルスクリーンモードでビデオを再生し続けています。だから、私がアプリケーションを実行すると、すべて正常に動作し、ビデオは、その下のビデオでアクティビティを半透明にする、他のすべてのビューの下のレイヤーでフルスクリーンで再生されます。
EKEN M003S以外にも、一部のデバイスにはデフォルトでフルスクリーンでビデオを再生させる機能もあり、そのデフォルト設定を上書きする方法もあります。方法がある場合は、それを行う方法を教えてください。ありがとうございました。
「一部のデバイスには、ビデオを強制的にフルスクリーンで再生させる機能もあると確信しています」 - 正当なものはありません。それらのAndroidマーケット。これは市場の互換性テストに合格しません。したがって、分析が正しいことが確かな場合は、製造元に連絡し、互換性のないAndroidフォークを回避する方法を尋ねる必要があります。 – CommonsWare