2012-04-15 7 views
2

アンドロイドデベロッパーガイドといくつかの記事を読んだ後、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はANのすべてののonCreateにトリガしていることですアクティビティなので、ヘッドフォンが接続されていないと、誤検知が増えています。 – wblaschko

+0

onResumeに登録してonPauseを登録解除する必要があります –

関連する問題