代码之家  ›  专栏  ›  技术社区  ›  sim

Android API设置音量级别

  •  2
  • sim  · 技术社区  · 12 年前

    我们可以使用哪个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中播放音调的音量?

    1 回复  |  直到 12 年前
        1
  •  2
  •   Kevin I. Wu    12 年前

    除非您的应用程序是蜂窝电话的替代品,否则使用MODE_IN_call实际上可以优化蜂窝音频,并在资源上节省STREAM_MUSIC。如果您将STREAM_MUSIC音频与MODE_IN_CALL一起使用,根据AudioPolicyManagerBase的电话制造商/运营商扩展,您将看到许多奇怪的行为,例如您看到的情况。

    首先,请确保指定通过STREAM_MUSIC播放音频。因此,您的音量控制实际上是在控制正确的流。

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

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

    推荐文章