【问题标题】:Android API to set volume level用于设置音量级别的 Android API
【发布时间】:2013-09-20 14:46:47
【问题描述】:

我们可以使用哪个 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 可用于设置插入耳机时在 Android 中播放铃声的音量?

【问题讨论】:

标签: android audio android-audiomanager


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多