Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android 音樂編程專題之管理音頻硬件

Android 音樂編程專題之管理音頻硬件

編輯:關於android開發

Android 系統通常支持多種音頻設備,常見的有手機內置揚聲器,插孔式有線耳機,藍牙 A2DP()設備。

獲取當前正在播放音頻的硬件信息

使用不同的硬件設備可能會影響您應用程序的設計方式,您可以通過  來查詢當前正在播放音頻的硬件設備信息,是內置揚聲器,還是有線耳機,或者是藍牙設備。

示例代碼如下:

if (isBluetoothA2dpOn()) {
   // Adjust output for Bluetooth. 藍牙設備
} else if (isSpeakerphoneOn()) {
   // Adjust output for Speakerphone. 內置揚聲器(免提)
} else if (isWiredHeadsetOn()) {
   // Adjust output for headsets 有線耳機
} else {
   // If audio plays and noone can hear it, is it still playing? 未知設備
}

 

處理音頻播放硬件的狀態變化

當耳機線脫落,藍牙設備斷開,音頻輸出流會自動切換到內置揚聲器。如果此時您正在大聲播放音樂,這可能不是您期待的結果。
不過也不用擔心,當出現硬件設備切換的時候,Android 會發送系統廣播 ,您的應用程序中應該注冊一個 來監聽這個消息,當出現這種情況的時候,如果正在聽音樂,較好的設計方案是暫停當前音樂的播放,如果正在玩游戲,那麼盡量降低游戲的音量是個不錯的解決方法。

示例代碼如下:

private class NoisyAudioStreamReceiver extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {
    if (AudioManager.ACTION_AUDIO_BECOMING_NOISY.equals(intent.getAction())) {
       // Pause the playback
    }
  }
}

private IntentFilter intentFilter = new IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY);

private void startPlayback() {
   registerReceiver(myNoisyAudioStreamReceiver(), intentFilter);
}

private void stopPlayback() {
   unregisterReceiver(myNoisyAudioStreamReceiver);
}

參考文摘:

 

轉自:http://blog.zhourunsheng.com/2011/12/android-%e9%9f%b3%e4%b9%90%e7%bc%96%e7%a8%8b%e4%b8%93%e9%a2%98%e4%b9%8b%e7%ae%a1%e7%90%86%e9%9f%b3%e9%a2%91%e7%a1%ac%e4%bb%b6/ | 潤物無聲

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved