2016-09-30 51 views
1

處理AudioFocus的損失可以「躲開」的標準方法如下:如果通知無法聽到,請不要播放音頻音量?

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

但是,如果這是作爲顯示即使該通知是聽不見的,你會調低音量,如當DnD模式在Android 5.0+中打開時。顯然,用於確定DnD是否有效的幾種不同方法:getAutomaticZenRule()(wtf?),getCurrentInterruptionFilter()getNotificationPolicy()(其需要特殊訪問)。 < API 23中沒有一個可用。

是否有一種簡潔的方式來判斷請求可以通過鴨子進行的AudioFocus的流是否真的可以聽到,而不會混淆以上所有內容? Google Play音樂似乎很好地處理了這種情況。

回答

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 
     } 
    } 
}; 

完成這項工作。