Bluetooth 蓝牙耳机接收噪音-如何激活噪音抑制器,如噪音

Bluetooth 蓝牙耳机接收噪音-如何激活噪音抑制器,如噪音,bluetooth,android-audiomanager,audiorecord,audiotrack,noise-reduction,Bluetooth,Android Audiomanager,Audiorecord,Audiotrack,Noise Reduction,我通过蓝牙耳机(ERA JAWBONE)录制语音,并在手机扬声器上实时播放。这适用于以下代码: buffer = new byte[buffersize]; android.os.Process.setThreadPriority( android.os.Process.THREAD_PRIORITY_URGENT_AUDIO); aManager.startBluetoothSco(); aManager.setBluetoot

我通过蓝牙耳机(ERA JAWBONE)录制语音,并在手机扬声器上实时播放。这适用于以下代码:

    buffer = new byte[buffersize];

    android.os.Process.setThreadPriority(
                android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);
    aManager.startBluetoothSco();
    aManager.setBluetoothScoOn(true);
    aManager.setMode(AudioManager.MODE_NORMAL);

    arec = new AudioRecord(
                MediaRecorder.AudioSource.VOICE_RECOGNITION,
                hz,
                AudioFormat.CHANNEL_IN_MONO,
                AudioFormat.ENCODING_PCM_16BIT,
                buffersize); 

    if (AcousticEchoCanceler.isAvailable()) {
        AcousticEchoCanceler echoCanceller =        AcousticEchoCanceler.create(arec.getAudioSessionId());
        if (echoCanceller != null) {
            echoCanceller.setEnabled(true);
        }
    } else { Log.e(TAG, "Echo Canceler not available");}

    if (NoiseSuppressor.isAvailable()) {
        NoiseSuppressor noiseSuppressor = NoiseSuppressor.create(arec.getAudioSessionId());
        if (noiseSuppressor != null) {
            noiseSuppressor.setEnabled(true);
        }
    } else { Log.e(TAG, "Noise Suppressor not available");}


atrack = new AudioTrack(AudioManager.STREAM_MUSIC,
                    hz,
                    AudioFormat.CHANNEL_OUT_MONO,
                    AudioFormat.ENCODING_PCM_16BIT,
                    buffersize,
                    AudioTrack.MODE_STREAM);

    atrack.setPlaybackRate(pbhz);
    }


    aManager.setStreamSolo(AudioManager.STREAM_MUSIC, true);

    arec.startRecording();
    atrack.play();
    onRecording=true;

    Runnable runnable = new Runnable() {
          @Override
          public void run() {
              while (onRecording) {
                 arec.read(buffer, 0, buffersize);

                 atrack.write(buffer, 0, buffer.length);
             }          
            }
        };
        new Thread(runnable).start();
    }
但是我的耳机接收到了房间里的每一个声音并开始回响。当我使用耳机打电话时,我的声音很清晰。根据规范,颌骨使用NoiseAsAssin,但我很确定当我使用上面的代码时,它不会被激活。我的设备上也没有噪音抑制器或回声消除器


有没有办法过滤掉噪音,让手机扬声器发出清晰的声音?

我也有同样的问题。你解决了吗?这是我的项目没有-还没有找到答案。如果你有任何进展,请告诉我。我花了两周的时间来了解发生了什么。我发现如果我们关掉扬声器(只使用耳机),回声就不会出现。然而,我的主要目标是使用演讲者。所以,我不解决它,这是我的新代码和系统设计