gpt4 book ai didi

android - 使用 AudioManager 会干扰通话音频

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:48:36 37 4
gpt4 key购买 nike

我在 BroadcastReceiver(电话状态监听器)中使用以下代码来启用扬声器:

final Handler mHandler = new Handler();
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_IN_CALL);
audioManager.setSpeakerphoneOn(true);
}
}, 500);

当通过我的应用发起新的拨出电话时会发生这种情况。通话断开后,我关闭扬声器:

AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_NORMAL);
audioManager.setSpeakerphoneOn(false);

这一切似乎都运作良好……第一次。之后,我手机的音频流似乎乱七八糟。随后的调用出奇地安静,即使是从我的应用程序代码外部进行的调用(未触发上述设置)也是如此。我似乎可以随机恢复通话音频,但我不确定是什么原因导致它恢复。

关于我可能做错了什么的任何想法?是否有我不知道的 Android 错误?如何避免在后续通话中静音?

编辑:我正在 Galaxy S4 上进行测试。

最佳答案

我已经解决了这个问题。看来搞砸我的音频的代码是这一行:

audioManager.setMode(AudioManager.MODE_IN_CALL);

我之所以使用这种方法,是因为如果没有它,我就无法成功设置免提电话(我在另一个 Stack Overflow 答案中找到了设置模式的建议……它有效,但产生了问题)。

我真正需要做的就是删除这一行并将处理程序延迟从 500 增加到 2000

我还按照 this answer 中的建议维护了对 AudioManager 的静态引用.在这种特殊情况下似乎没有必要,但安全总比后悔好。

关于android - 使用 AudioManager 会干扰通话音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26406736/

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