2

我们可以使用哪个 Android API 在我的平板电脑上设置音量级别,以便在插入耳机时播放音调。目前,我使用以下 API,插入耳机后似乎无法正常工作。

audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 9, AudioManager.FLAG_SHOW_UI);

我进行了以下设置,以便在插入耳机时通过扬声器路由音频(这是我的应用程序的要求) audioManager.setMode(AudioManager.MODE_IN_CALL); audioManager.setSpeakerphoneOn(true);

当我在此设置后播放我想要的音调时,音频通过扬声器路由(即使连接了耳机)但音量太高,看起来setStreamVolumeAPI 不起作用,因为我已将其设置为仅音量级别 9,即相当低。如果我取下耳机并运行我的用例,那么这个 API 工作正常,即以较低的音量播放音调。

插入耳机时,是否有任何其他 API 可用于设置在 Android 中播放音调的音量?

4

1 回答 1

2

除非您的应用程序是蜂窝呼叫替代品,否则使用 MODE_IN_CALL 实际上会优化蜂窝音频并耗尽 STREAM_MUSIC 的资源。如果您将 STREAM_MUSIC 音频与 MODE_IN_CALL 一起使用,则取决于 AudioPolicyManagerBase 的电话制造商/运营商扩展,您将看到许多奇怪的行为,例如您所看到的情况。

首先,确保您指定通过 STREAM_MUSIC 播放音频。这样您的音量控制确实是在控制正确的流。

其次,我建议使用 MODE_IN_COMMUNICATION 而不是 MODE_IN_CALL。许多制造商/运营商特定的音频策略仅特定于 MODE_IN_CALL(蜂窝电话)。

第三,如果仍然发生,您应该在不同的手机制造商/运营商上测试您的应用程序以隔离问题。有时这是您无法修复的特定于设备的缺陷。我自己也见过一些这样的案例。

于 2013-09-21T07:41:58.770 回答