我在 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 上进行测试。