Как сделать так, чтобы приложение для голосового чата Android WebRTC работало с фоновой музыкой на гарнитуре BT - PullRequest
0 голосов
/ 06 мая 2019

Я занимаюсь разработкой приложения для чата Android VoIP, основанного на встроенных библиотеках WebRTC. Требуется работать одновременно с любой фоновой музыкой, воспроизводимой в данный момент с использованием гарнитуры BT.

У нас есть следующее:

  • BT-гарнитура подключена
  • фоновая музыка играет из любого музыкального приложения, мы слышим ее через наушники гарнитуры

Мое приложение инициализирует звук так:

audioManager.setMode(AudioManager.MODE_NORMAL);

Также пробовал MODE_IN_COMMUNICATION, но он мгновенно устанавливает плохое качество вывода (как webRTC, так и музыки), что недопустимо. Тогда у нас есть два случая:

1) Использование

audioManager.setSpeakerphoneOn(false);
audioManager.setBluetoothScoOn(true);
audioManager.setMicrophoneMute(false);
audioManager.startBluetoothSco();

приводит к остановке воспроизведения музыки.

2) Не используется startBluetoothSco () и другие строки выше - приводит к хорошему воспроизведению музыки с выходом webRTC, но webRTC использует микрофон устройства вместо одного на гарнитуре

Требуемое поведение заключается в том, что музыка продолжает воспроизводиться через BT вместе с выводом webRTC и сбором голоса с микрофона гарнитуры. Есть идеи как этого достичь?

PS. AudioManager.requestAudioFocus () определенно понадобится в будущем, чтобы реагировать на запросы других голосовых приложений, просто хотел максимально упростить вопрос. Но в случае, если это имеет значение, я пытался не использовать его или использовать следующим образом, оба не решают проблему:

audioManager.requestAudioFocus(audioFocusChangeListener,
                AudioManager.STREAM_VOICE_CALL,
                AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK);
...