0

アクティビティを一時停止すると、戻ったときにクラッシュします

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ため、すべてが正常であるかどうかを確認します。また、

4

0 に答える 0