2016-10-10 205 views
0

我在活动中播放声音时遇到问题,我有闹钟管理器,并且我使用媒体播放器播放声音,现在当我尝试设置两个闹钟时(假设这两个闹钟与他们的时间只有1分钟的差别),当第一次闹铃响起时,我没有关闭该活动,然后等待另一分钟另一个活动弹出,然后播放声音,所以有两个声音在后台播放。当另一个声音播放时停止播放先前的声音

我要打上一个活动的声音停止时,在前面

+0

它是一样的活动吗?如果是的话,将属性“singleTop”放入你的清单中,并且只要在媒体播放器开始播放之前请求播放器即可。 – Opiatefuchs

+0

@Opiatefuchs如果我们有多个活动,该怎么办?我有一个以上的活动。 – deejay

+0

临时解决方案..您可以使用1或不到1分钟的声音剪辑。所以它会在第二次闹铃开始前结束。 – deejay

回答

0

另一个警报在你manifest把这个属性为activity

<activity 
    android:name=".YourActivity" 
    android:launchMode="singleTop"> 

什么launchMode手段和可能的状态有,看这里的文档:https://developer.android.com/guide/topics/manifest/activity-element.html

然后你的活动将只开始一次。如果它已经开始了,它就会出现在前景中,并且没有第二个出现。对于MediaPlayer的:

if(mediaPlayer!=null){ 

    if(mediaPlayer.isPlaying()){ 

     mediaPlayer.stop(); 
     mediaPlayer.release(); 
    } 


    mediaPlayer = MediaPlayer.create(this, R.raw.your_sound); 
    mediaPlayer.start(); 
} 

确保您鸵鸟政策打电话mediaPlayer.isPlaying(),如果你之前已经发布的mediaPlayer。这会抛出一个illegalStateException。 这只是从头开始,您必须根据自己的需求进行调整。

+0

这也会覆盖以前的活动吗?所以以前的活动会被丢失并被新的活动改变吗? –

+0

我想我误解了你的回答,以为你是在说如果我在一个活动中分配了媒体播放器的声音(这意味着分配在同一个活动中),所以通过这种方式,这不适用于我,因为下一个闹钟没有出现 –

+0

请显示代码的一部分,你卡住了我认为我们是通过对方说话:) – Opiatefuchs