我正在尝试使用服务中的audiomanager.setSpeakerphoneOn(true)
以编程方式设置扬声器,但它似乎不起作用,我不知道为什么。
我应该做点什么吗?
由于
答案 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时(早期版本需要)运行扬声器电话。
祝你好运。