Аудио поток остается на наушнике после использования AudioManager

После того, как я использую Android AudioManager, чтобы включить SCO ON и громкую связь, я возвращаю его туда, где он был запущен, а затем медиапоток останется на наушнике, а не на динамике телефона. Здесь я делаю изменения для маршрутизации потока через громкую связь SCO (которая прекрасно работает)

    if (am2.isBluetoothScoAvailableOffCall()) {
                            am2.startBluetoothSco();
                        }
                        if(!am2.isSpeakerphoneOn()){
                            speakerPhoneWasOn = false;
                            am2.setSpeakerphoneOn(true);
                        }
                        myHash.put(TextToSpeech.Engine.KEY_PARAM_STREAM,
                                String.valueOf(AudioManager.STREAM_VOICE_CALL));
                        am2.requestAudioFocus(null, AudioManager.STREAM_VOICE_CALL,
                                AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);

Затем я пытаюсь изменить все обратно после прочтения моего сообщения (я использую TTS)

if(SMSstream == 1){
                if (am2.isBluetoothScoAvailableOffCall()) {
                    am2.stopBluetoothSco();

                }
                if(!speakerPhoneWasOn){
                    am2.setSpeakerphoneOn(false);
                }


            }
            else{

            }
            am2.setMode(OLD_AUDIO_MODE);
            am2.abandonAudioFocus(null);

Но он остается с наушником телефона вместо динамика до перезагрузки. Я видел несколько постов, которые имели противоположную проблему, но ни одного с этой проблемой. У меня есть Droid 3 с Android 2.3.4.

Вы можете увидеть весь проект и исходный код здесь: http://code.google.com/p/a2dpvolume/

1 ответ

ОК, я наконец исправил эту проблему. Это не красиво. Я считаю, что в AudioManager есть какая-то ошибка. Даже после отказа от фокуса потоки устройств останутся в беспорядке. Если только последний TTS не был прочитан по музыкальному потоку непосредственно перед тем, как оставить фокус, он будет неправильно маршрутизировать потоки, приглушать потоки и т. Д. Итак, я просто читаю один период, если SMS было прочитано поверх любого потока, кроме музыкального потока до отказ от фокуса. Я также убрал порядок, в котором звонил, и исправил некоторые режимы телефона и т. Д. После прочтения TTS. Странно, похоже, хорошо работает.

Другие вопросы по тегам