【Android】VideoViewを使って動画再生アプリを作る④
-- 全画面で動画再生 --
いよいよVideoViewを使って動画ファイルを再生する部分です。
実装
アプリケーションのタイトルバーを消す
まずは全画面で表示させるために、アプリケーションのタイトルバーを消します。これにはAndroidManifest.xmlのActivityのテーマ指定を以下のようにします。
AndroidManifest.xml
<activity
android:name=".Mp4Activity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen" />
ナビゲーションバーを消す
次に下段のナビゲーションバー(戻るボタンやホームボタンのバー)を消します。これはActivity内のコードで以下のように制御します。
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
);
動画再生
Intentで受け取ったファイルパスをVideoViewに読み込みます。
読み込みの完了をOnPreparedListnerより受け取り、再生を開始します。その際に動画縦幅と横幅を比べて横長の動画の場合、画面の向きを変えて最大サイズで再生できるようにしています。
String path = getIntent().getStringExtra("path");
videoView = findViewById(R.id.videoView);
videoView.setVideoPath(path);
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
if (mediaPlayer.getVideoWidth() > mediaPlayer.getVideoHeight()) {
// 横表示にする
Mp4Activity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else {
// 縦表示にする
Mp4Activity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
videoView.start();
}
});
最後まで再生したらリピートさせる
動画の再生完了をOnCompletionListenerにより受け取り、リピート処理を行います。
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){
@Override
public void onCompletion(MediaPlayer mp) {
videoView.seekTo(0);
videoView.start();
}
});
動作確認
ちょっと分かりにくいですが、横幅の大きい動画を向きを変えて再生しているのがわかると思います。 |
まとめ
ここまで作ってきました動画再生アプリのまとめです。
作り方解説記事
- 【Android】VideoViewを使って動画再生アプリを作る① -- ストレージへのアクセス権限を取得 --
- 【Android】VideoViewを使って動画再生アプリを作る② -- 内部ストレージのファイル検索 --
- 【Android】VideoViewを使って動画再生アプリを作る③ -- カスタムリストビュー --
- 【Android】VideoViewを使って動画再生アプリを作る④ -- 全画面で動画再生 --
アプリケーション
https://play.google.com/store/apps/details?id=com.swapps.mp4viewer
コメント
コメントを投稿