美文网首页
记一次解决问题的过程(AudioManager.setMode(

记一次解决问题的过程(AudioManager.setMode(

作者: enRegan | 来源:发表于2020-09-30 14:34 被阅读0次

    这两天适配大屏机AMR编码格式的时候遇到个问题,和编码没关系的。
    当大屏机没连蓝牙耳机时是好的,语音播放正常;
    连接蓝牙耳机时执行操作:

    AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
    am.setBluetoothScoOn(true);
    am.stopBluetoothSco();
    am.setMode(AudioManager.MODE_IN_COMMUNICATION);
    am.setMicrophoneMute(false);
    am.startBluetoothSco();
    

    然后使用耳机播放声音,这里也正常;
    当再断开蓝牙耳机的时候执行操作:

    AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
    am.setBluetoothScoOn(false);
    if (am.isBluetoothScoOn()) {
           am.stopBluetoothSco();
    }
    setSpeakerphoneOn(context, true);
    

    这时候语音外放出来的声音非常小,这时候再在最后面设置Mode后am.setMode(AudioManager.MODE_NORMAL);声音依然小;
    经过大量的资料查阅,最终在https://blog.csdn.net/hugoshine/article/details/10056875中找到了答案,setMode要放在设置BluetoothSco和SpeakerphoneOn中间设置,最后修改为

    AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
    am.setBluetoothScoOn(false);
    if (am.isBluetoothScoOn()) {
           am.stopBluetoothSco();
    }
    am.setMode(AudioManager.MODE_NORMAL);
    setSpeakerphoneOn(context, true);
    

    语音播放声音正常,问题解决

    相关文章

      网友评论

          本文标题:记一次解决问题的过程(AudioManager.setMode(

          本文链接:https://www.haomeiwen.com/subject/amiuuktx.html