2016-06-30-Android音頻焦點AudioFocus使用

Android開發(fā)中免不了需要播放視頻,音頻文件,但是手機上可能有其他的一些軟件,在后臺播放音頻的時候,這個時候另外的軟件也需要播放音頻,這個時候就會出現倆個音頻同時播放的問題,在Android2.2之后提供了audioFocus獲取音頻的焦點,但是這個并不是強制需要實現的,所以當你在測試的時候,有的應用沒有處理的音頻焦點,所以會感覺沒有效果,其實我個認為可以使用系統的音樂播放器做測試,基本不會出現什么問題(處理的時候注意內存泄漏)
https://developer.android.com/training/managing-audio/audio-focus.html

1,獲取焦點
public boolean requestFocus() {    
   if(mFocusChangeListener != null &&mFocusChangeListener.get() != null) {
      return AudioManager.AUDIOFOCUS_REQUEST_GRANTED == 
      mAudioManager.requestAudioFocus(mFocusChangeListener.get(),     
      AudioManager.STREAM_MUSIC,                                  
      AudioManager.AUDIOFOCUS_GAIN);    
    } 
   return false;
}
2,釋放焦點
public boolean abandonFocus() {    
if(mFocusChangeListener != null &&  mFocusChangeListener.get() != null) {        
    return AudioManager.AUDIOFOCUS_REQUEST_GRANTED ==     
        mAudioManager.abandonAudioFocus(mFocusChangeListener);    
    }    
    return false;
}
3,處理丟失焦點1

實現AudioManager.OnAudioFocusChangeListener接口實現onAudioFocusChange(int focusChange)方法

@Override
public void onAudioFocusChange(int focusChange) {
switch (focusChange) {    
   case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT://Pause playback        
        break;    
   case AudioManager.AUDIOFOCUS_GAIN://Resume playback        
       break;    
  case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK://        
      break;    
  case AudioManager.AUDIOFOCUS_LOSS://Stop playback
      //am.unregisterMediaButtonEventReceiver(RemoteControlReceiver);        
      abandonFocus();    
      break;
}
4,處理丟失焦點2

focusChange參數告你音頻焦點時如何改變的,并且能夠是下面的值之一(它們是所有的在AudioManager類中定義的常量):

  1. AUDIOFOCUS_GAIN:你已經獲得音頻焦點;
  2. AUDIOFOCUS_LOSS:你已經失去音頻焦點很長時間了,必須終止所有的音頻播放。因為長時間的失去焦點后,不應該在期望有焦點返回,這是一個盡可能清除不用資源的好位置。例如,應該在此時釋放MediaPlayer對象;
  3. AUDIOFOCUS_LOSS_TRANSIENT:這說明你臨時失去了音頻焦點,但是在不久就會再返回來。此時,你必須終止所有的音頻播放,但是保留你的播放資源,因為可能不久就會返回來。
  4. AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:這說明你已經臨時失去了音頻焦點,但允許你安靜的播放音頻(低音量),而不是完全的終止音頻播放。目前所有的情況下,oFocusChange的時候停止mediaPlayer */
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Android音頻焦點AudioFocus使用 Android開發(fā)中免不了需要播放視頻,音頻文件,但是手機上可能有...
    超__越閱讀 989評論 0 1
  • Media Playback Android多媒體框架包涵了對播放多種通用媒體的類型的支持,所以你可以很容易的集成...
    VegetableAD閱讀 988評論 0 0
  • Android 多媒體框架包含了支持播放的一系列常見多媒體類型,以此可以很容易地整合諸如音頻、視頻、圖片到你的應用...
    LeaYw閱讀 3,341評論 1 22
  • 今天武志紅老師心理學課的留言文章給我了一些思考和啟發(fā),希望能夠引起你的共鳴。 你在工作和生活中是習慣說“YES”還...
    小西伯利亞狼閱讀 746評論 0 0
  • [cp]@HHHHHHa哈: 又是一年夏天到,又是考驗演技的時候了,我就想知道有多少人跟我一樣買西瓜裝模作樣東拍拍...
    阿兒豆豆閱讀 105評論 0 0

友情鏈接更多精彩內容