AudioManager не работает - не включает громкую связь и не отключает звук - PullRequest
0 голосов
/ 30 апреля 2019

В приложении WebRT, которое поддерживает видеочат, я хочу, чтобы мобильные телефоны воспроизводили звук, используя громкую связь, а не наушники.

Я пытался использовать AppRTCAudioManager (который оборачивает AudioManager) для установки отключения звука и громкой связи, используя AudioManager напрямую для установки отключения звука, размещения кода различными способами и т. Д.

android.permission.MODIFY_AUDIO_SETTINGS предоставляется.

private void gotRemoteStream(MediaStream stream){
...
runOnUiThread(new Runnable() {
            @Override
            public void run() {
...
audioManager = AppRTCAudioManager.create(context);...
audioManager.start((x, y) -> {}) // a callback that does logging, omitted for clarity

// First try setting audio device with the AppRTCAudioManager, which wraps AudioManager.
audioManager.selectAudioDevice(AppRTCAudioManager.AudioDevice.SPEAKER_PHONE);

AppRTCAudioManager.AudioDevice ad = audioManager.getSelectedAudioDevice(); 
//Shows SPEAKER_PHONE, but sound still plays from earpiece.


// Next try it with the AudioManager itself.
AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
                    am.setMode(AudioManager.MODE_IN_COMMUNICATION);
                    am.setMicrophoneMute(true);
                    am.setSpeakerphoneOn(true);
                    boolean mute = am.isMicrophoneMute(); //false
                    boolean on = am.isSpeakerphoneOn(); //false
}

Метод audioManager.getSelectedAudioDevice отображает аудиоустройство как громкую связь, но am.isSpeakerphoneOn показывает, что громкая связь по-прежнему выключена.

Кроме того, отключение микрофона с помощью am.setMicrophoneMute ничего не делает. am.IsМикрофон немой все еще говорит ложь.

Заранее спасибо за любую помощь.

ОБНОВЛЕНИЕ: мой мобильный телефон загадочным образом начал играть через громкую связь. Но код AudioManager все еще ничего не делает. Я изменил код AudioManager, чтобы выбрать в качестве аудиоустройства EARPIECE, но теперь он все еще воспроизводится через громкую связь.

1 Ответ

0 голосов
/ 02 мая 2019

Наконец-то нашел ответ;Я неправильно набрал разрешение <uses-permission android:name="audioid.permission.MODIFY_AUDIO_SETTINGS"/>!Видимо, компилятор Android Studio не проверяет ошибки в файле манифеста.Так что это не предупредило меня, что я набрал «audioid» вместо «android».

...