14

我正在尝试在audiomanager.setSpeakerphoneOn(true)服务中以编程方式在通话中设置免提电话,但它似乎不起作用,我不知道为什么。我应该做点别的吗?

谢谢

4

2 回答 2

17

检查您的清单文件是否具有执行此操作所需的权限。

我认为这是您需要的权限MODIFY_AUDIO_SETTINGS

于 2010-04-18T18:38:42.503 回答
4

在 android 4.1 及更高版本中,当您拨打电话时,手机会自动关闭免提电话。因此,您需要做的是在接收器中添加免提电话,以便在状态为“摘机”时侦听正在拨打的电话,甚至延迟 0.5 秒以打开扬声器,如下所示:

final Handler mHandler = new Handler();
mHandler.postDelayed(new Runnable() {
    @Override
    public void run() {
    audioManager.setMode(AudioManager.MODE_IN_CALL);
    audioManager.setSpeakerphoneOn(true);
    MainActivity.shouldTurnSpeakerOn = false;
    MainActivity.shouldTurnSpeakerOff = true;
    Log.d("incoming_call","speaker_on");                    
    }
}, 500);

请记住将此添加到 Phone 状态侦听器。并在状态为 IDLE 时关闭免提电话(早期版本需要)。

祝你好运。

于 2014-08-17T06:20:38.030 回答