如果app在后台,如何阻止音乐启动?

时间:2014-07-28 14:36:43

标签: android media-player opengl-es-2.0 glsurfaceview

好的,我已经花了两天时间在这上面并且无处可去,所以在这里张贴,希望有人能想出各种各样的解决方案!

在我的应用中,我在 onSurfaceChanged 方法中取消了音乐。似乎是一个非常好的地方,因为它将在我的所有资源都已加载后开始。

一切正常,除了 .....如果用户在所有内容完成加载之前按下主页,那么应用程序(正如人们所期望的那样)愉快地进入后台,但 onSurfaceCreated onSurfaceChanged ,并且仍然会启动对 onDrawFrame 的初始调用...因此,即使应用程序处于“暂停”状态,用户也看不到它,我的音乐也开始播放。

我理解这(调用上面列出的3个回调)是正常行为,GLSurfaceView实际上不会暂停直到它点击 onDrawFrame - 这样做很好,因为即使用户也是如此按回家,事情可以继续在后台加载,但这对我的音乐问题不好!

我已尝试从 onResume 中启动音乐,但第一次运行应用时,所有内容尚未设置。所以我必须为null做一个检查 - 因此它只适用于后续启动(即,从暂停状态)。

任何想法非常欢迎!!

1 个答案:

答案 0 :(得分:1)

在开始播放音乐之前,使用布尔值确保应用面向用户。

onSurfaceChanged

if(canPlay) //Do what you need to play the music

onResume

canPlay = true;

onPause

canPlay = false;

编辑 - 或者在必要时以其他形式使用此机制。如果您正在通过GL播放声音,则可能需要在其他位置设置布尔值。关键是在onPause中关闭机制,在onResume中关闭机制。