ヘッドフォンが現在接続されているかどうかの検出に問題が 1 つあります。Intent.ACTION_HEADSET_PLUGを使用していますが、うまく機能します。サービスを開始し、onCreate() メソッドで registerReceiver() を介して受信者を登録します。ほとんどの場合、ACTION_HEADSET_PLUG ブロードキャストをすぐに受信するので、ヘッドフォンが接続されているかどうかがわかります。
しかし、受信機を登録した直後にこのブロードキャストを受信しないことがあります (理由はわかりません)。そのため、ヘッドフォンの現在の状態がわかりません。その場合、それらは接続されていないと推測できるかもしれませんが、100%接続されているかどうかはわかりません。そこで、AudioManager#isWiredHeadsetOn()メソッドを見つけ、必要なパーミッション MODIFY_AUDIO_SETTINGS も追加しました。問題は、ヘッドセット (ヘッドフォン + マイク) でのみ正しく動作することです。ヘッドフォンだけを接続すると、毎回 false が返されます。これを解決する方法を教えてください。Android 2.1向けに開発しています。