我想在后台播放MediaPlayer视频,所以当用户离开我的应用时,他仍会听到音频,当他回到应用程序时,他会看到视频。我设法用Service播放MediaPlayer做了第一部分,但我在第二部分遇到了问题。当我离开应用程序并返回视频时,不会在SurfaceView中显示。
当用户返回时我创建了新的Surface,所以我尝试了这个:
public void surfaceCreated(SurfaceHolder holder) {
if(mService!=null && mService.player.isPlaying()){
try {
mService.player.setDisplay(holder);
mService.player.prepare();
mService.player.start();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
虽然mService
是我的服务,但他持有MediaPlayer player
。
在我的研究中,我看到了这篇文章: Black screen when returning to video playback activity in Android
但这是一年前发布的,所以也许任何人都有任何不同的新答案。
编辑: 我忘了说视频是流媒体,所以重置不是一个好选择(我试过:))。
是否可以在服务中保存SurfaceView,以及当用户返回以获取视图并将其动态添加到当前布局时?
答案 0 :(得分:0)
首次启动Activity时:onResume() - > onSurfaceCreated() - > onSurfaceChanged()。
当你离开Activity:onPause() - > onSurfaceDestroyed()
所以,你离开你的应用程序,表面将自动销毁,你也无法在使用中保存surfaceview
请记住,如果您想再次显示视频,必须在onStart
中再次创建surfaceview和holder回调,以防您的家庭或锁屏被按下
surfaceView = (SurfaceView) findViewById(R.id.surfaceView);
holder = surfaceView.getHolder();
holder.setFixedSize(800, 480);
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);