【问题标题】:changing the default audio stream controlled by volume buttons in Android更改 Android 中由音量按钮控制的默认音频流
【发布时间】:2013-09-04 12:11:46
【问题描述】:

我很抱歉这个问题的标题,但我不确定这个特定的 android 功能叫什么
这是我按下音量键时的应用截图

我们可以看到电话符号在顶部,这意味着它是由音量按钮控制的音量
但是,我正在平板电脑(不是手机)上对此进行测试,因此更改此音量对扬声器输出没有影响
我想要做的是将音量按钮映射到此处显示的第二个扬声器图标,这会改变扬声器输出音量
如何设置平板电脑的音量按钮以映射到此输出流(或称为此功能的任何名称)?
我试过了
am.setMode(AudioManager.MODE_NORMAL);

am.setMode(AudioManager.MODE_IN_COMMUNICATION);
其中 am 是 Audiomanager,但两者似乎具有相同的输出

【问题讨论】:

    标签: java android audio android-audiomanager


    【解决方案1】:

    Activity 类有一个setVolumeControlStream 方法:

    建议一个音频流,其音量应由硬件音量控件更改。

    当您的应用程序处于前台时,使用您希望硬件按钮修改音量的流类型调用它(例如STREAM_MUSIC),然后在您想要将行为重置为默认。

    顺便说一下,扬声器图标不代表扬声器的音量。至少我上次检查时,它代表了媒体量(即所有遵循媒体路由策略的流,例如STREAM_MUSIC)。

    【讨论】:

    • 这应该在onCreate()中调用吗?如果这是控制音量的东西,那么 AudioManager 有什么用?
    • 所以我应该在 onCreate() 或 onResume() 用 v 调用它,然后在 onPause() 用 USE_DEFAULT_STREAM_TYPE 调用它?
    • 我在onCreate() 中使用了setVolumeControlStream(AudioManager.STREAM_MUSIC);,在onResume() 中使用了setVolumeControlStream(AudioManager.USE_DEFAULT_STREAM_TYPE);,但它仍然在做同样的事情
    • onResume is called after onCreate 启动活动时。您应该调用setVolumeControlStream(USE_DEFAULT_STREAM_TYPE),以便在您不再想要覆盖哪个卷被修改时调用它。
    • 至于AudioManager的目的;它(主要)用于获取和设置系统范围的音频设置。使用setVolumeControlStream 设置的行为覆盖是特定于活动的。
    猜你喜欢
    • 2016-05-01
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    相关资源
    最近更新 更多