gpt4 book ai didi

Android AudioManager.setMode(MODE_NORMAL) 失败

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:04:23 40 4
gpt4 key购买 nike

我正在开发 2 个需要协同工作的 VoIP 应用程序;一个是软电话应用程序(应用程序 A),它使用预期的各种音频模式,即 RINGTONE、IN_COMMUNICATION 等。另一个应用程序(应用程序 B)需要音频模式正常。我尝试确保它们彼此配合得很好,因此当软件电话 App A 完成通话时,它会将音频模式返回到正常。同样,如果 App B 需要在 App A 可能正在执行的操作过程中运行,它会保存找到的音频模式并在完成后恢复该模式。

例如,对于来电,App A 可能会像这样更改音频模式:

  1. MODE_RINGTONE 来电时
  2. MODE_IN_COMMUNICATION 通话时连接
  3. MODE_NORMAL 通话结束后

如果应用程序 B 需要在通话连接时执行某些操作(上面的第 2 步),它将

  1. 保存 MODE_IN_COMMUNICATION
  2. 设置 MODE_NORMAL
  3. 做它需要做的事
  4. 恢复 MODE_IN_COMMUNICAITON

两个应用都使用它们的应用程序上下文获取 Android AudioManager。

我遇到的问题是,我不明白的是,一旦 App B 完成了上述步骤,App A 在通话终止后尝试将音频模式返回到 NORMAL 的尝试失败。

myAudioManagerReference.setMode(AudioManager.MODE_NORMAL);
if (myAudioManagerReference.getMode() != AudioManager.MODE_NORMAL)
Log.w(CLASSTAG, "failure to set audio mode to MODE_NORMAL);

我的应用程序 B 是否可以对 AudioManager 模式进行某种锁定?或者更改了应用程序 A 的权限,使其无法将模式更改回正常?我发现,一旦我退出 App B,App A 就可以成功将模式更改为 NORMAL。

最佳答案

这看起来很可能是固件问题。我在该设备(一种工业移动设备)上看到来自 ALSA 驱动程序的可疑日志,看起来该驱动程序有时可能使用错误的 PID 来更改音频模式。我也无法在任何其他设备上重现相同的问题,包括来自同一制造商的一些设备。

不幸的是,我还没有从制造商(和 ALSA 驱动程序编写者)处确认是这种情况。

关于Android AudioManager.setMode(MODE_NORMAL) 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24435141/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com