2012-04-15 67 views
2

在閱讀了Android開發指南和一些帖子後,我實現了一個簡單的解決方案來捕獲運行Android 2.3.3的平板電腦中的HEADSET UNPLUG事件。ACTION_AUDIO_BECOMING_NOISY未被捕獲

不幸的是,它似乎我失去了一些東西,因爲onReceive()事件永遠不會被捕獲。

貝婁是實現代碼:

public class MusicIntentReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     if (intent.getAction().equals(android.media.AudioManager.ACTION_AUDIO_BECOMING_NOISY)) { 
      Toast.makeText(context, "Headphones disconnected.", Toast.LENGTH_SHORT).show(); 
     } 

    } 


} 

而在Android清單文件:

<receiver android:name=".MusicIntentReceiver"> 
      <intent-filter> 
       <action android:name="android.media.AUDIO_BECOMING_NOISY" /> 
      </intent-filter> 
     </receiver> 

我缺少什麼?

回答

3

當音頻輸出源更改時,NOISY過濾器被觸發,並可能導致時髦的東西。

的耳機插頭正確的過濾器應爲:

IntentFilter commandFilter = new IntentFilter(); 
commandFilter.addAction(Intent.ACTION_HEADSET_PLUG); 

的清單應改爲:

<intent-filter> 
      <action android:name="android.intent.action.HEADSET_PLUG" /> 
</intent-filter> 
+0

我運行到這樣做的問題是它HEADSET_PLUG上的每一個觸發的onCreate活動,所以當我沒有插入耳機時,我收到了很多誤報。 – wblaschko 2014-09-03 21:26:47

+0

您必須在onResume上註冊並取消註冊onPause – 2014-12-04 16:15:53