如何阻止音乐开始,如果应用程序是在后台



好吧,我花了2天时间在这个问题上,几乎一无所获,所以在这里发帖希望有人能想出一个解决方案!

在我的应用程序中,我在我的onSurfaceChanged方法中启动我的音乐。这似乎是一个很好的地方,因为它将在我所有的资源加载后开始。

一切都很完美,除了.....如果用户按下home一切都完成加载之前,那么应用程序(正如人们所期望的)愉快地进入后台,但是onSurfaceCreatedonSurfaceChanged和对onDrawFrame的初始调用仍然被启动…因此,我的音乐开始播放,即使应用程序处于"暂停"状态,用户无法看到它。

我明白这(调用上面列出的3个回调)是正常的行为,GLSurfaceView实际上不会暂停,直到它击中onDrawFrame -在某种程度上这是好的,因为即使用户按下home,事情可以继续在后台加载,但这对我的音乐问题不好!

我试过从onResume内开始我的音乐,但第一次应用程序运行时,一切还没有设置。所以我必须把null检查到位-因此它只适用于后续启动,(即,从一个暂停状态)。

任何想法非常欢迎!!

使用布尔值来确保应用程序在开始播放音乐之前是面向用户的。

In onSurfaceChanged:

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

In onResume:

canPlay = true;

In onPause:

canPlay = false;

EDIT -或者在必要时以其他形式使用此机制。如果你通过GL播放声音,你可能想在其他地方设置一个布尔值。关键是在onPause中关闭机制,在onResume中打开机制。

最新更新