0

如果我暂停我的活动,返回时我会崩溃

Caused by: java.lang.IllegalStateException
at android.media.MediaPlayer.prepareAsync(Native Method)

我希望能够返回到视频停止的确切位置并从那里继续。我也希望它能够在定向中生存下来,它现在没有这样做。感谢您提供有关如何完成此操作的任何提示。我没有使用 ExoPlayer,因为我想继续使用 API 14,而不是碰到 API-16 并失去一些用户。

我的设置是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()从多个可能的位置调用,例如onResume在 BroadcastReceiver 上,因此检查是否一切正常。还有

4

0 回答 0