繁体   English   中英

如何修复音频? (优先)

[英]How can I fix my audio? (Prioritize)

当同时播放两个音频时...声音正在消除。 我该如何解决这种奇怪的现象?

我有一些代码,其中单击按钮时有音频, 并且每隔十秒钟就有一次音频(在后台服务中)。 我有以下代码在播放十秒间隔时停止按钮音频,并且工作正常:

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

这可以正常工作,并且可以停止播放(弹出)一个音频,让另一个音频播放(来自后台服务的一个)。 现在,当他们两个同时玩时,我遇到了问题。 例如,当我从后台服务开始播放音频时, 正好在同一时间点按按钮。 当它们同时播放时,音频会被切断

有什么办法可以让后台服务音频具有偏好? 莫名其妙地说: 如果两个音频片段在同一时间开始播放,我想让后台服务音频播放。

从视觉上考虑:

在此处输入图片说明

https://upload.wikimedia.org/wikipedia/zh/4/49/Preference_example.jpg

我想说的是,如果我可以在苹果和橙子之间进行选择,请选择苹果。 又如,如果我有两个音频播放器同时播放,请选择一个(苹果)。

谢谢你的帮助,

鲁奇尔

您可能有比赛条件。 在这三行中

1    if(!manager.isMusicActive()) {
2        MediaPlayer pop = MediaPlayer.create(context, R.raw.pop);
3        pop.start();

在第1行和第3行之间,另一个播放器有机会获得媒体播放器并开始播放,尤其是在第2行很慢的情况下。

我建议让一个媒体播放器供两个播放器访问(即在其他位置创建“ MediaPlayer pop”并共享),或者找到另一种方式来同步不同的播放器。 也许是在比赛开始前发出停止通知,而不是检查比赛状态。

您可以使用代码在其他播放器启动或暂停时播放或暂停音频。

   AudioManager.OnAudioFocusChangeListener afChangeListener =
    new AudioManager.OnAudioFocusChangeListener() {
        public void onAudioFocusChange(int focusChange) {
            if (focusChange == AUDIOFOCUS_LOSS_TRANSIENT) {
                // Pause playback
            } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
                // Resume playback
            } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) {
                am.unregisterMediaButtonEventReceiver(RemoteControlReceiver);
                am.abandonAudioFocus(afChangeListener);
                // Stop playback
            }
        }
    };

有关更多参考,请访问http://developer.android.com/training/managing-audio/audio-focus.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM