android - 声音互相抵消了吗?

标签 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");
    }
}

这可以正常工作,并且可以停止播放(弹出)一个音频,让其他音频播放(来自后台服务的一个)。现在,当他们两个同时玩时,我遇到了问题。例如,当我点击确切的按钮时,与背景服务的音频即将开始的时间相同。发生这种情况时,我的应用程序会自动静音!有什么办法可以让后台服务音频具有偏好?莫名其妙地说:如果两个音频片段恰好同时启动,我想让后台服务音频播放。 我已经整天都在搜索此内容,但这似乎不是一个常见问题...?非常感谢您为解决此问题所提供的帮助!

谢谢,

丰富

最佳答案

我认为当您单击按钮时,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");
    }
}

关于android - 声音互相抵消了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33712845/

相关文章:

android - 5.7"640x480 LCD 图形用户界面设计安卓

javascript - 下一个音频标签开始时停止音频标签

jquery - html5一次只播放一个文件,而停止播放另一个文件?与jQuery的?

android - 查询联系人数据库中的电子邮件时出现语法错误

Android Studio 启动失败 - ClassNotFoundException : com. intellij.ide.plugins.PluginManager

android - 当我使用 TYPE_APPLICATION_OVERLAY 时,对话框不可见

.NET Remoting 线程锁定机制

Java生产者消费者停止消费者线程

ios - 如何确保我的 DispatchQueue 专门在主线程上执行一些代码?

html - 在网页中循环后台MIDI文件