我試圖暫停拔下耳機時正在播放的音樂。活動開始時收到Intent.ACTION_HEADSET_PLUG
我已經創建了一個偵聽ACTION_HEADSET_PLUG意圖和對他們的行爲時,狀態額外爲0(對於不插電)一個BroadcastReceiver。我的問題是,無論活動何時開始,我的BroadcastReceiver都會收到ACTION_HEADSET_PLUG意圖。這不是我期望的行爲。我期望只有在插入或拔下耳機時才能解除意圖。
是不是有一個原因,ACTION_HEADSET_PLUG意圖被注入一個接收器與該IntentFilter後立即被捕獲?有沒有一種明確的方式可以解決這個問題?
我會假設既然默認的音樂播放器實現了類似的功能,當耳機被拔出,這是可能的。
我錯過了什麼?
這是註冊碼
registerReceiver(new HeadsetConnectionReceiver(),
new IntentFilter(Intent.ACTION_HEADSET_PLUG));
這是HeadsetConnectionReceiver
public class HeadsetConnectionReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Log.w(TAG, "ACTION_HEADSET_PLUG Intent received");
}
}
另一種解決方案是使用removeStickyBroadcast()方法,用於在服務正在處理時不能忽略命令的情況。 – greg7gkb 2011-04-22 02:17:54
我認爲更好的解決方案是在接收器中使用[isInitialStickyBroadcast()](http://developer.android.com/reference/android/content/BroadcastReceiver.html#isInitialStickyBroadcast%28%29)。這不需要定義刪除粘性廣播的權限,也不會對其他應用程序造成副作用。 – amram99 2011-08-17 14:41:04
再次道格。我可能誤解了這個意圖,android的接收器系統。但是,你如何獲得isPlaying,我會認識到他們在你原來的活動? :-) – 2011-10-27 14:21:54