Kotlin
Android ダイアログを画面いっぱいに表示する
tanaka at 2020年04月22日 10:00:24
AndroidのViewをフェードイン(アウト)させる時に便利なAlphaAnimationクラス
tanaka at 2020年04月15日 10:00:37
Androidに表示する画像を動的に回転させる
tanaka at 2020年03月25日 10:00:35
- 2020年03月11日
- Android
Raspberry Pi 4上でAndroidの実行
tanaka at 2020年03月11日 10:00:58
- 2020年02月05日
- Android
Androidでネットワーク上の動画を再生する
ネットワーク上に保存している動画を
VideoViewというViewを使用して再生するアプリを作成しました。
ネットワーク上のファイルを参照するので、
AndroidManifestにインターネットパーミッションを許可するために
<uses-permission android:name=”android.permission.INTERNET” />
を追加し、
平文通信を行う必要があるときは、同じく AndroidManifest のapplicationに
android:usesCleartextTraffic=”true”
を追加します。
stringsファイルに動画ファイルのURLを追加し
レイアウトファイルにVideoViewというViewを追加し、
javaファイルにコードを書いていきます。
以下ソースコードです。
package com.example.videoviewsample;
import androidx.appcompat.app.AppCompatActivity;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;
public class MainActivity extends AppCompatActivity {
private VideoView videoView;
private int currentPosition = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
videoView = findViewById(R.id.videoView);
// 動画へのURLを取得
String Path = getString(R.string.video_path);
Uri video = Uri.parse(Path);
// 動画をコントロールするためMediaController
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(videoView);
// VideoViewに動画URLとコントローラーを設定
videoView.setMediaController(mediaController);
videoView.setVideoURI(video);
// 保存した値があれば取得
if(savedInstanceState!=null)
{
// 値がなければ0
currentPosition = savedInstanceState.getInt("CURRENT_POSITION", 0);
}
// 再生準備を待つリスナーを設定
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
{
@Override
public void onPrepared(MediaPlayer arg0)
{
// 再生準備ができたら再生開始
videoView.start();
}
});
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// どこまで再生しているかを保存する
outState.putInt("CURRENT_POSITION", currentPosition);
}
@Override
protected void onPause() {
// どこまで再生しているかを取得
currentPosition = videoView.getCurrentPosition();
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
// どこまで再生しているかを設定
videoView.seekTo(currentPosition);
}
}
ただ動画を再生するだけなら簡単ですが、
動画からアスペクト比情報を取得できないと、
アスペクト比が崩れてしまいますね。
水曜担当:Tanaka
tanaka at 2020年02月05日 10:00:20