我在一个广播接收器(电话状态监听器)中使用以下代码来启用扬声器:
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上进行测试。