如果通知听不到,请不要放音量?

时间:2016-09-30 22:39:26

标签: android notifications android-audiomanager

处理可以“躲避”的AudioFocus丢失的标准方法如下:

OnAudioFocusChangeListener afChangeListener = new OnAudioFocusChangeListener() {
    public void onAudioFocusChange(int focusChange) {
        if (focusChange == AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) {
            // Lower the volume
        } 
    }
};

但是,如果按照所示实现,即使通知听不到,也会降低音量,例如在Android 5.0+中启用DnD模式时。显然有几种不同的方法可以确定DnD是否有效:getAutomaticZenRule()(wtf?),getCurrentInterruptionFilter()getNotificationPolicy()(需要特殊访问权限)。其中没有一个可用于< API 23.

是否有一种简洁的方式来判断请求AudioFocus的流是否可以实际听到,而不会混淆上述所有内容?谷歌播放音乐似乎处理这个案件很好。

1 个答案:

答案 0 :(得分:0)

OnAudioFocusChangeListener afChangeListener = new OnAudioFocusChangeListener() {
    public void onAudioFocusChange(int focusChange) {
        if (focusChange == AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) {
             if (!(audioManager.getStreamVolume(AudioManager.STREAM_NOTIFICATION) == 0))
            // Lower the volume
        } 
    }
};

完成这项工作。