gpt4 book ai didi

java - 如何修复我的音频? (优先)

转载 作者:行者123 更新时间:2023-12-02 04:09:44 30 4
gpt4 key购买 nike

当同时播放两个音频时...声音会相互抵消。如何解决这个奇怪的现象?

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

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

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

有什么办法可以优先选择后台服务音频吗?不知何故说:如果两个音频 fragment 同时开始,我想让后台服务音频播放。

从视觉上思考这一点:

enter image description here

( https://upload.wikimedia.org/wikipedia/en/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”并共享它),或者找到另一种方法来同步不同的播放器。也许在比赛开始前发出停止信号,而不是检查比赛状态。

关于java - 如何修复我的音频? (优先),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33908881/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com