- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在开发 2 个需要协同工作的 VoIP 应用程序;一个是软电话应用程序(应用程序 A),它使用预期的各种音频模式,即 RINGTONE、IN_COMMUNICATION 等。另一个应用程序(应用程序 B)需要音频模式正常。我尝试确保它们彼此配合得很好,因此当软件电话 App A 完成通话时,它会将音频模式返回到正常。同样,如果 App B 需要在 App A 可能正在执行的操作过程中运行,它会保存找到的音频模式并在完成后恢复该模式。
例如,对于来电,App A 可能会像这样更改音频模式:
如果应用程序 B 需要在通话连接时执行某些操作(上面的第 2 步),它将
两个应用都使用它们的应用程序上下文获取 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/
我正在开发 2 个需要协同工作的 VoIP 应用程序;一个是软电话应用程序(应用程序 A),它使用预期的各种音频模式,即 RINGTONE、IN_COMMUNICATION 等。另一个应用程序(应用程
我正在使用使用AudioManager更改音频状态的应用程序。当应用程序处于后台时,将模式更改回正常状态时,应用程序崩溃。 这是设备特定的问题。该应用仅在后台运行时,仅在具有Android 8.0或A
我是一名优秀的程序员,十分优秀!