2

Android dev-guide といくつかの投稿を読んだ後、Android 2.3.3 を実行しているタブレットで HEADSET UNPLUG イベントをキャプチャする簡単なソリューションを実装しました。

残念ながら、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>

私は何が欠けていますか?

4

1 に答える 1

4

NOISY フィルターは、オーディオ出力ソースが変更されるとトリガーされ、ファンキーな問題が発生する可能性があります。

ヘッドセット プラグの正しいフィルターは次のとおりです。

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

マニフェストは次のようになります。

 <intent-filter>
            <action android:name="android.intent.action.HEADSET_PLUG" />
 </intent-filter>
于 2013-01-24T21:35:58.807 に答える