В приложении 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, но теперь он все еще воспроизводится через громкую связь.