Android以编程方式设置扬声器

我试图在编程方式中使用audiomanager.setSpeakerphoneOn(true)在一个服务中调用扬声器,但它似乎不工作,我不知道为什么。 我应该做点什么吗?

谢谢

Solutions Collecting From Web of "Android以编程方式设置扬声器"

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

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

在android 4.1及更高版本中,当您拨打电话时,电话会自动closures扬声器电话。 所以你需要做的就是在收听者的耳机上加上扬声器,这个收听者在状态为“摘机”的时候收听正在进行的呼叫,甚至延迟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); 

请记住将其添加到电话状态监听器。 并且当状态为空闲(在早期版本中需要)时运行扬声器电话。

祝你好运。