如果我暂停我的活动,返回时我会崩溃
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 上,因此检查是否一切正常。还有