声音正在取消彼此?

时间:2015-11-14 20:13:23

标签: android multithreading audio service timer

我有一些代码,其中有按钮上的音频按下音频,间隔十秒(在后台服务中)。我有以下代码来播放十秒间隔时停止按钮音频,它工作正常:

public static void myPop(Context context){
    AudioManager manager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
    if(!manager.isMusicActive()) {       //Only if there isn't any other audio playing
        MediaPlayer pop = MediaPlayer.create(context, R.raw.pop);
        pop.start();
    }
    else{
        Log.v(TAG, "Audio is already playing");
    }
}

这样可以正常工作,并且可以停止播放(弹出)一个音频以播放其他音频(来自后台服务的音频)。现在,当他们同时玩的时候我就会遇到问题。例如,当我点击完全时的按钮,同时将来自后台服务的音频即将开始。当发生这种情况时,我的应用程序会自动静音!有没有办法优先考虑后台服务音频?不知何故说:如果两个音频片段在同一时间开始播放,我想让后台服务音频播放。我一直在寻找这一天,但它似乎不是一个常见问题......?我真的很感谢你帮助解决这个问题!

谢谢,

1 个答案:

答案 0 :(得分:0)

我认为当您点击按钮时,media尚未更新其状态。所以它会调用流行音乐。为防止这种情况,请在检查状态之前等待一段时间。

 public static void myPop(Context context){

 try{
    Thread.sleep(500);//500ms = 0.5s
 }catch(InterruptedException ex){
 }
    AudioManager manager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);

    //Wait for sometime and then check status 

    if(!manager.isMusicActive() && hasDelayed1s) {       //Only if there isn't any other audio playing
        MediaPlayer pop = MediaPlayer.create(context, R.raw.pop);
        pop.start();

    }
    else{
        Log.v(TAG, "Audio is already playing");
    }
}