Воспроизведение звука в реальном времени в наушниках во время записи звука с Bluetooth

#java #android #audio-streaming #android-bluetooth #headset

#java #Android #потоковое аудио #android-bluetooth #гарнитура

Вопрос:

Я записываю звук с Bluetooth-гарнитур. Я хочу воспроизвести этот записанный звук в режиме реального времени на своих проводных наушниках. Как я могу направить свой звук на проводные наушники.

Я использую приведенный ниже код для направления звука.

 mAudioManager.setSpeakerphoneOn(false);
mAudioManager.setWiredHeadsetOn(true);
mAudioManager.setRouting(AudioManager.MODE_IN_COMMUNICATION, AudioManager.ROUTE_HEADSET,AudioManager.ROUTE_BLUETOOTH_SCO );
  

Приведенный выше код работает на Android версии 5, но не работает на Android версии 7 и выше.

Нужна помощь в:

  1. почему это не работает в новых версиях Android
  2. Как я могу заставить его работать в более новых версиях.

Ответ №1:

Я решил это, используя приведенный ниже код. Он идеально подходит для старых версий, но звук, направленный на проводные наушники в более новой версии, является шумным. Я постараюсь решить проблему шума и обновлю ответ.

 AudioDeviceInfo[] devices = mAudioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS);
    if (devices  != null){
      for (AudioDeviceInfo device : devices)
         if (device.getType() == AudioDeviceInfo.TYPE_WIRED_HEADSET || device.getType() == AudioDeviceInfo.TYPE_WIRED_HEADPHONES) {
            audioTrack.setPreferredDevice(device);
            mAudioManager.setWiredHeadsetOn(true);
            mAudioManager.setSpeakerphoneOn(false);
          }
     }