W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
編寫:kesenhoo - 原文:http://developer.android.com/training/managing-audio/audio-output.html
當(dāng)用戶想要通過Android設(shè)備欣賞音樂的時(shí)候,他可以有多種選擇,大多數(shù)設(shè)備擁有內(nèi)置的揚(yáng)聲器,有線耳機(jī),也有其它很多設(shè)備支持藍(lán)牙連接,有些甚至還支持A2DP藍(lán)牙音頻傳輸模型協(xié)定。(譯注:A2DP全名是Advanced Audio Distribution Profile 藍(lán)牙音頻傳輸模型協(xié)定! A2DP是能夠采用耳機(jī)內(nèi)的芯片來堆棧數(shù)據(jù),達(dá)到聲音的高清晰度。有A2DP的耳機(jī)就是藍(lán)牙立體聲耳機(jī)。聲音能達(dá)到44.1kHz,一般的耳機(jī)只能達(dá)到8kHz。如果手機(jī)支持藍(lán)牙,只要裝載A2DP協(xié)議,就能使用A2DP耳機(jī)了。還有消費(fèi)者看到技術(shù)參數(shù)提到藍(lán)牙V1.0 V1.1 V1.2 V2.0 - 這些是指藍(lán)牙的技術(shù)版本,是指通過藍(lán)牙傳輸?shù)乃俣?,他們是否支持A2DP具體要看藍(lán)牙產(chǎn)品制造商是否使用這個(gè)技術(shù)。來自百度百科)
使用不同的硬件播放聲音會(huì)影響到應(yīng)用的行為??梢允褂?a rel="external nofollow" target="_blank" target="_blank">AudioManager來查詢當(dāng)前音頻是輸出到揚(yáng)聲器,有線耳機(jī)還是藍(lán)牙上,如下所示:
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?
}
當(dāng)有線耳機(jī)被拔出或者藍(lán)牙設(shè)備斷開連接的時(shí)候,音頻流會(huì)自動(dòng)輸出到內(nèi)置的揚(yáng)聲器上。假設(shè)播放聲音很大,這個(gè)時(shí)候突然轉(zhuǎn)到揚(yáng)聲器播放會(huì)顯得非常嘈雜。
幸運(yùn)的是,系統(tǒng)會(huì)在這種情況下廣播帶有ACTION_AUDIO_BECOMING_NOISY的Intent。無論何時(shí)播放音頻,我們都應(yīng)該注冊一個(gè)BroadcastReceiver來監(jiān)聽這個(gè)Intent。在使用音樂播放器時(shí),用戶通常會(huì)希望此時(shí)能夠暫停當(dāng)前歌曲的播放。而在游戲當(dāng)中,用戶通常會(huì)希望可以減低音量。
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);
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: