废话不多说,直接上代码:
private void setSpeakerphoneOn(boolean on) {
if (on) {
// 为true打开喇叭扩音器;为false关闭喇叭扩音器.
audioManager.setSpeakerphoneOn(true);
} else {
audioManager.setSpeakerphoneOn(false);//关闭扬声器
audioManager.setRouting(AudioManager.MODE_NORMAL, AudioManager.ROUTE_EARPIECE, AudioManager.ROUTE_ALL);
setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);
//把声音设定成Earpiece(听筒)出来,设定为正在通话中
// audioManager.setMode(AudioManager.MODE_IN_CALL);
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
}
}
这里将audioManager.setMode(AudioManager.MODE_IN_CALL)注释掉换成audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION)的原因是因为
Android 5.0版本限制使用AudioManager.MODE_IN_CALL模式了,除非是系统应用,第三方应用使用AudioManager.MODE_IN_COMMUNICATION替代之
2016年06月18日18:20:23
发现个问题:
某些情况下,这写代码可能会出问题,用户点击音量按钮获取不到音量控制权
添加如下

本文介绍了在Android中如何切换听筒和扬声器模式,提供了关键代码示例。在Android 5.0之后,对于第三方应用,应使用AudioManager.MODE_IN_COMMUNICATION代替AudioManager.MODE_IN_CALL。同时,为解决音量控制问题,添加了调整系统声音设置的代码。
最低0.47元/天 解锁文章
7161

被折叠的 条评论
为什么被折叠?



