YY项目之Android 听筒 扬声器 切换
YY项目之Android 听筒 扬声器 切换
奔跑的野马 发表于1年前
YY项目之Android 听筒 扬声器 切换
  • 发表于 1年前
  • 阅读 573
  • 收藏 4
  • 点赞 3
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

摘要: Android 听筒 扬声器 切换 适配5.0

废话不多说,直接上代码:

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);
        }
    }
共有 人打赏支持
粉丝 15
博文 88
码字总数 31620
×
奔跑的野马
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: