我有 AcousticEchoCanceler 为我尝试过的所有其他设备类型的 VoIP 调用工作,但不是在任何三星设备上。设备报告 AcousticEchoCanceler 可用,但它什么也不做。
我得到的:
-
acousticEchoCanceler.setEnabled(true);
-
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
- Audio Session ID 传递给
AudioTrack
- 采样率:16k
- 尝试过单声道和立体声录音
-
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
-
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
有人让 AcousticEchoCanceler 在三星设备上工作吗?
最佳答案
我最近遇到了同样的问题。对我来说最重要的部分是在创建 AudioRecord 之前使用 audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION)。
接下来创建音频记录:
mAudioRecord = new AudioRecord(MediaRecorder.AudioSource.VOICE_COMMUNICATION, mSamplingRate, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, audioRecordBufferSize);
最后创建并启用 NS 和 AEC:
mNoiseSuppressor = NoiseSuppressor.create(mAudioRecord.getAudioSessionId());
if (mNoiseSuppressor != null) {
int res = mNoiseSuppressor.setEnabled(true);
}
mAcousticEchoCanceler = AcousticEchoCanceler.create(mAudioRecord.getAudioSessionId());
if (mAcousticEchoCanceler != null) {
int res = mAcousticEchoCanceler.setEnabled(true);
}
AudioTrack 不需要关联到与 AudioTrack 相同的 Audio Session ID(我想它应该自动完成)。
关于android - 三星设备上的 AcousticEchoCanceler 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46560814/