【问题标题】:Choose volume channel to change on volume key press选择音量通道以在音量键按下时更改
【发布时间】:2012-11-09 08:37:52
【问题描述】:

在 Android 中,通常有 3 个用户感兴趣的音频音量通道:音乐/媒体、铃声和闹钟。通常,当按下硬件音量按钮时,会设置铃声音量并相应地显示带有搜索栏的对话框。

但如果我打开了音乐应用程序并按下音量按钮,媒体音量通道就会设置(并且在搜索栏对话框上会显示一个扬声器图标而不是电话)。我现在的问题是,如何为使用媒体通道音量控制而不是铃声通道的应用程序进行设置?是否有此开关或我必须手动执行此操作(捕捉音量按钮敲击)?

【问题讨论】:

标签: java android


【解决方案1】:

经过一番谷歌搜索,我自己找到了。

您可以在活动的 onCreate 方法中调用setVolumeControlStream。下面的例子。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ...

    // change the music vol instead of ringtone vol
    // when hardware volume buttons are pressed
    setVolumeControlStream(AudioManager.STREAM_MUSIC);
}

【讨论】:

    【解决方案2】:

    流媒体音乐

    AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    int currentVolume = audio.getStreamVolume(AudioManager.STREAM_MUSIC);
    

    用于铃声

    AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    int currentVolume = audio.getStreamVolume(AudioManager.STREAM_RING);
    

    了解更多here

    【讨论】:

    • 对不起,我不想获取音量,但我想设置当用户按下硬件音量键时修改哪个音量流。
    【解决方案3】:

    您使用 AudioManager 并设置以下之一:

    STREAM_ALARM    //The audio stream for alarms
    STREAM_DTMF         //The audio stream for DTMF Tones
    STREAM_MUSIC    //The audio stream for music playback
    STREAM_NOTIFICATION //The audio stream for notifications
    STREAM_RING         //The audio stream for the phone ring
    STREAM_SYSTEM   //The audio stream for system sounds
    STREAM_VOICE_CALL
    

    像这样:

    myManager.getStreamVolume(AudioManager.STREAM_MUSIC);
    

    【讨论】:

    • 对不起,我不想获取音量,但我想设置当用户按下硬件音量键时修改哪个音量流。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 2011-11-23
    • 1970-01-01
    相关资源
    最近更新 更多