6

Android には、アプリ内でキー イベントを処理するのに役立つコールバック メソッドがいくつか用意されています。しかし、アプリがバックグラウンドで実行されているときに重要なイベントをリッスンしたい場合はどうすればよいでしょうか? 例えば。検索ボタンの長押しイベントをリッスンして、特別な機能を実行したい。

4

1 に答える 1

10

KeyEvents は、ユーザーがキーを押すためのインターフェイスであり、キーがフォアグラウンドにある場合にのみ、Activity によってのみ処理できます。バックグラウンドで実行されるサービスでさえ、ユーザー入力に反応することを意図していません。

しかし、サービスを使用することで回避策を得ることができます。BroadcastReceiver を登録することで、ハード キー プレス イベントに応答するサービスを作成できます。たとえば、AOSP 音楽アプリでは、BroadcastReceiver ( MediaButtonIntentReceiver )を登録することによってボリューム キー イベントに応答するService ( MediaPlaybackService ) があります。

受信者を登録するコードは次のとおりです。

mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
ComponentName rec = new ComponentName(getPackageName(),
        MediaButtonIntentReceiver.class.getName());
mAudioManager.registerMediaButtonEventReceiver(rec);

これは、ミュージック アプリがフォアグラウンドにない場合でも機能します。この回答のコード スニペット。

于 2012-10-09T05:52:49.600 に答える