Android以编程方式设置扬声器

时间:2010-04-18 17:05:57

标签: android audio speakerphone

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

由于

2 个答案:

答案 0 :(得分:17)

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

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

答案 1 :(得分:4)

在Android 4.1及更多时候,当您拨打电话时,手机会自动关闭扬声器电话。所以你需要做的是在接收器上添加免提电话,该接收器在状态为“offHook”时监听正在进行的呼叫,甚至延迟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时(早期版本需要)运行扬声器电话。

祝你好运。