注:本文翻譯自Google官方的Android Developers Training文檔,譯者技術一般,由于喜愛安卓而產生了翻譯的念頭,純屬個人興趣愛好。
原文鏈接: http://developer.android.com/training/managing-audio/audio-focus.html
當用戶希望從Android設備欣賞音頻時,他將會有狠多選擇。大多數設備有內置的喇叭,以及有線耳機的插孔,還有很多支持A2DP音頻的藍牙連接設備。
一). 檢查哪個硬件在被使用
你的應用是如何表現的可能會被外放被引導至什么硬件設備所影響。
你可以通過查詢 AudioManager 來確定現在的音頻是被引導至擴音器,有線耳機還是藍牙設備。如下所示:
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?
}
二). 處理音頻外放設備的改變
當沒有插入耳機,也沒有藍牙設備連接,音頻流會自動的引導至擴音器。如果你聽音樂時喜歡吧音量調的像我一樣高,那么你可能會被吵鬧聲驚嚇到。
幸運的是,當這種情況發生時,系統會廣播一個 ACTION_AUDIO_BECOMING_NOISY 行為的intent。注冊一個廣播接收器( BroadcastReceiver )來監聽這一intent是一個很好的習慣,不管你是否在播放音樂。對于音樂播放器來說,用戶一般期望播放被停止,二對于游戲來說,你可能會選擇顯著降低音量。
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);
}
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

