編輯:Android開發實例
Android 系統通常支持多種音頻設備,常見的有手機內置揚聲器,插孔式有線耳機,藍牙 A2DP(藍牙立體聲音頻傳輸規范(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? 未知設備 }
當耳機線脫落,藍牙設備斷開,音頻輸出流會自動切換到內置揚聲器。如果此時您正在大聲播放音樂,這可能不是您期待的結果。
不過也不用擔心,當出現硬件設備切換的時候,Android 會發送系統廣播 ACTION_AUDIO_BECOMING_NOISY ,您的應用程序中應該注冊一個 BroadcastReceiver 來監聽這個消息,當出現這種情況的時候,如果正在聽音樂,較好的設計方案是暫停當前音樂的播放,如果正在玩游戲,那麼盡量降低游戲的音量是個不錯的解決方法。
示例代碼如下:
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://developer.android.com/training/managing-audio/audio-output.html
轉自: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/ | 潤物無聲
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩
Android提供了許多方法來控制播放的音頻/視頻文件和流。其中該方法是通過一類稱為MediaPlayer。Android是提供MediaPlayer類訪問內置的媒體播放
本人工作有一個月多了。對於android很多東西,都有了新的了解或者說真正的掌握。為了讓更多的像我這樣的小白少走彎路,所以我會堅持將我在工作中遇到的一些比較令我印
Android作為一個偉大的系統,自然提供了設置默認打開程序的實現.在這篇文章中,我會介紹如何在Android系統中設置默認的程序. 在設置默認程序之前,無非有兩