アクティビティを一時停止すると、戻ったときにクラッシュします
Caused by: java.lang.IllegalStateException
at android.media.MediaPlayer.prepareAsync(Native Method)
ビデオが中断したところに正確に戻り、そこから続行できるようにしたい. また、現在行っていないオリエンテーションにも耐えられるようにしたいと考えています。これを達成する方法についてのヒントをありがとう。API-16にぶつかって一部のユーザーを失うのではなく、API 14を使い続けたいので、私はExoPlayerを使用していません。
私のセットアップはActivity -> Fragment {TextureView}
. 縦向きでは、フラグメントは画面の半分です。ランドスケープでは、フラグメントはフルスクリーンです。
コードスニペット
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width, int height) {
surface = new Surface(surfaceTexture);
playVideoNow();
}
private void playVideoNow() {
if(null== textureView || null==surface || null==mCurrVideo) return;
try {
final String url = mCurrVideo.getUrl();
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(getContext(), Uri.parse(url));
mediaPlayer.setSurface(surface);
mediaPlayer.setLooping(false);
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer player) {
mediaPlayer.start();
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
playVideoNow()
BroadcastReceiverなどの複数の可能な場所から呼び出されるonResume
ため、すべてが正常であるかどうかを確認します。また、