废话不多说,直接上代码:
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
发现个问题:
某些情况下,这写代码可能会出问题,用户点击音量按钮获取不到音量控制权
添加如下代码即可
audioManager.setMode(AudioManager.STREAM_SYSTEM);
setVolumeControlStream(AudioManager.USE_DEFAULT_STREAM_TYPE);
整合后代码如下所示:
private void setSpeakerphoneOn(boolean on) {
if (on) {
// 为true打开喇叭扩音器;为false关闭喇叭扩音器.
audioManager.setSpeakerphoneOn(true);
// 2016年06月18日 添加的代码,恢复系统声音设置
audioManager.setMode(AudioManager.STREAM_SYSTEM);
setVolumeControlStream(AudioManager.USE_DEFAULT_STREAM_TYPE);
} 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);
}
}
相关资源:视美乐购smlg2020-9-25版.apk-互联 文档类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!