用于设置音量级别的Android API

时间:2013-09-20 14:46:47

标签: android audio android-audiomanager

我们可以使用哪种Android API在平板电脑上设置音量,以便在插入耳机时播放音调。 目前我使用以下API,在插入耳机时似乎不起作用。

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

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

当我在此设置后播放所需的音调时,音频通过扬声器进行路由(即使已连接耳机)但音量太高,看起来setStreamVolume API无效,因为我已设置它只有9级,这是非常低的。 如果我取下耳机并运行我的用例,那么这个API工作正常,即音调以较低的音量播放。

当插入耳机时,是否还有其他API可用于设置播放音调的音量?

1 个答案:

答案 0 :(得分:2)

除非您的应用是蜂窝电话替换,否则使用MODE_IN_CALL实际上会优化蜂窝音频并使资源上的STREAM_MUSIC匮乏。如果您使用带有MODE_IN_CALL的STREAM_MUSIC音频,则根据AudioPolicyManagerBase的手机制造商/运营商扩展,您会看到许多奇怪的行为,例如您可能会看到的情况。

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

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

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