android - 三星设备上的 AcousticEchoCanceler 无法正常工作

标签 android samsung-mobile echo-cancellation

我有 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/

相关文章:

android - jsignature 签名未显示在三星 Galaxy S4 上

android - Samsung Galaxy Tab 2 10.1 在按相机 Intent 拍照后终止进程

ios - iOS从视频中删除特定声音

audio - 开源编解码器可以减少/最小化背景噪声,还是可以消除回声?

android - 如何使状态栏透明?

Android 导航组件 - 设置 HasOptionsMenu 会使 NavigateUp 按钮无效

android - Gradle:创建lib.aar文件后如何执行任务?

android - android.webkit.WebViewClassic.loadDataWithBaseURL 中 Webview 的 Java 空指针异常

android - 在Android中以编程方式打开ServiceMode菜单

macos - 如何在Mac上设置录制和播放音频。 Mac上的VOIP应用