【问题标题】:Why Java AudioEffect not working with Oboe?为什么 Java AudioEffect 不能与双簧管一起使用?
【发布时间】:2021-01-22 14:42:56
【问题描述】:

Android 版本:10 Android 设备:OnePlus 6

我曾尝试使用 AudioManager 中的 sessionID 应用 Java AudioEffect,从 LINK 获得帮助,但在使用 AcousticEchoCanceler.create(sessionId) 时我总是得到空指针异常;但是当我传递 Java AudioRecord getAudioSessionId() 的 sessionId 时,它可以工作。

我的代码是:

 val audioManager: AudioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
 val sessionId = audioManager.generateAudioSessionId()

C代码是

 recordingBuilder.setSessionId(static_cast<oboe::SessionId>(sessionId));
  oboe::Result recordStreamResult = recordingBuilder.openStream(&recordStream);

我已经在 OnePlus 6 和 Motorola one Macro 上尝试过此代码

【问题讨论】:

  • 在您的 C 代码中,sessionId 的类型是什么?
  • 另外,如果您在 C++ 中使用 recordingBuilder.setSessionId(SessionId::Allocate) 创建录制流,然后调用 recordStream-&gt;getSessionId,然后将其传递给 AudioEchoCanceller.create,会发生什么情况?这应该在 C++ 中而不是在 Java/Kt 中分配会话 ID
  • 是的,我已经检查了我创建并从 JAVA 传递到 C++ 的 sessionID 工作正常。我已经通过记录 recordStream->getSessionId 进行了检查,它与 JAVA 相同。我已经解决了这个问题,并会为任何被卡住的人发布答案

标签: java android c++ oboe


【解决方案1】:

我已经解决了以下问题:为什么我的 AcousticEchoCanceler.create(sessionId) 返回 null,即使它可用。

这里是代码

  val audioManager: AudioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
  val sessionId = audioManager.generateAudioSessionId()
  //This is the line that enables AEC, when MODE is set
  audioManager.mode = AudioManager.MODE_IN_COMMUNICATION 

当模式明确设置为 MODE_IN_COMMUNICATION 时,AcousticEchoCancelation 开始工作。您可以在此处启用或禁用它。

val isAecAvailable = AcousticEchoCanceler.isAvailable()
val acousticEchoCanceler = AcousticEchoCanceler.create(sessionId)
acousticEchoCanceler.enabled = true //THIS ENABLED THE AEC

if (acousticEchoCanceler != null)
    Log.e(TAG, "AEC STATUS:  ${acousticEchoCanceler.enabled}")
else
Log.e(TAG, "AEC  IS NULL")

目前,我使用的是双簧管版本:1.5 稳定版

【讨论】:

    猜你喜欢
    • 2014-04-24
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 2018-03-09
    • 2021-06-14
    • 2012-10-09
    相关资源
    最近更新 更多