2012-04-02 130 views
4

有誰知道我可以檢測到設備上的耳機插孔是否在Android上拔掉?我有一個音樂播放器,當耳機拔下時我需要暫停音樂。我發現的最接近的東西是使用AudioManager。這是正確的方向嗎?耳機插孔聽衆Android

回答

11

這是我落得這樣做:

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

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

+0

雖然我沒有關於如何做到這一點的全部細節,我相信你能在以下行中使用「ACTION_HEADSET_PLUG」:IntentFilter receiverFilter = new IntentFilter(Intent.ACTION_HEADSET_PLUG); HeadsetStateReceiver receiver = new headsetStateReceiver(); registerReceiver(this.toggleDeviceConnectionState(),receiverFilter); – shim 2012-11-09 21:18:43

+0

@shim只需檢查意向(https://developer.android.com/reference/android/content/Intent.html#ACTION_HEADSET_PLUG)的文檔,你就是對的:是的,該意圖過濾器存在,但從API21 +他們建議您改用AudioManager。我認爲之所以是因爲BECOMING_NOISY也考慮了其他類型的音頻輸出設備(例如藍牙耳機),例如,如果藍牙耳機斷開連接,它也應該進行廣播。我現在正在嘗試它,但爲了向後兼容,我想這兩種方法都需要實施... – 2017-12-28 16:23:51