【发布时间】:2014-07-17 18:13:00
【问题描述】:
我的活动中有一个 SurfaceView,它连接到一个 MediaPlayer。首次创建活动时视频运行良好,但当我按下主页按钮然后返回应用程序时,SurfaceView 变黑,甚至电影中的音频也无法播放。
@Override
public void onCreate(Bundle savedInstanceState) {
mSurfaceView = (SurfaceView) findViewById(R.id.surface);
mSurfaceView.getHolder().addCallback(this);
mSurfaceView.getHolder().setFixedSize(1080, 1920);
mSurfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
if (mp == null)
mp = new MediaPlayer();
Uri video = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.video);
try {
mp.setDataSource(this, video);
mp.prepare();
} catch (IOException e) {
return;
}
mp.setLooping(true);
//Get the SurfaceView layout parameters
android.view.ViewGroup.LayoutParams lp = mSurfaceView.getLayoutParams();
lp.width = 1080;
lp.height = 1920;
//Commit the layout parameters
mSurfaceView.setLayoutParams(lp);
mp.setDisplay(mSurfaceView.getHolder());
//Start video
mp.start();
}
我研究了其他解决方案,但他们使用的是扩展 SurfaceView 并实现 Runnable 的自定义类。我希望使用默认的 SurfaceView 类。有没有办法解决这个问题?
【问题讨论】:
-
你在 SurfaceChanged 和 SurfaceDestroyed 上做什么?
-
没什么。哦,那会是个问题吗?
标签: android surfaceview