Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过蓝牙录制音频时在耳机上播放实时音频_Java_Android_Audio Streaming_Android Bluetooth_Headset - Fatal编程技术网

Java 通过蓝牙录制音频时在耳机上播放实时音频

Java 通过蓝牙录制音频时在耳机上播放实时音频,java,android,audio-streaming,android-bluetooth,headset,Java,Android,Audio Streaming,Android Bluetooth,Headset,我正在从蓝牙耳机录制音频。我想在有线耳机上实时播放录制的音频。如何将音频定向到有线耳机 我使用下面的代码来指导音频 mAudioManager.setSpeakerphoneOn(false); mAudioManager.setWiredHeadsetOn(true); mAudioManager.setRouting(AudioManager.MODE_IN_COMMUNICATION, AudioManager.ROUTE_HEADSET,AudioManager.ROUTE_BLUETO

我正在从蓝牙耳机录制音频。我想在有线耳机上实时播放录制的音频。如何将音频定向到有线耳机

我使用下面的代码来指导音频

mAudioManager.setSpeakerphoneOn(false);
mAudioManager.setWiredHeadsetOn(true);
mAudioManager.setRouting(AudioManager.MODE_IN_COMMUNICATION, AudioManager.ROUTE_HEADSET,AudioManager.ROUTE_BLUETOOTH_SCO );
以上代码适用于android版本5,但不适用于android版本7及以上

需要以下方面的帮助:

  • 为什么它不能在新的android版本中工作
  • 如何使其在较新版本上工作

  • 我用下面的代码解决了它。它适用于旧版本,但在新版本中直接发送到有线耳机的音频噪音很大。我将尝试解决噪音问题,并更新答案

    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);
              }
         }
    

    我用下面的代码解决了它。它适用于旧版本,但在新版本中直接发送到有线耳机的音频噪音很大。我将尝试解决噪音问题,并更新答案

    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);
              }
         }