Android:name="android.intent.action.MEDIA_BUTTON"のマニフェストに BroadcastReceiver を登録し、 registerMediaButtonEventReceiverメソッド を使用して AudioManager にレシーバーを登録しました。今私の受信機能は以下に定義されています。
public void onReceive(final Context context, Intent intent) {
Log.e(LOG_TAG, "Entering Receiver");
KeyEvent event = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
int action = event.getAction();
if (action == KeyEvent.ACTION_DOWN) {
Log.e(LOG_TAG, "Down");
} else {
Log.e(LOG_TAG, "Up");
}
}
このコードは、メディア ボタンのアップ イベントとダウン イベントがログに記録されたときに出力されるだけです。クリックする速度が速すぎると、すべてのアップ イベントを登録できません。何が間違っているかについて何か考えはありますか?私の LogCat 出力は以下のとおりです。ボタンを押したままにすると、この出力を再現できますが、私はそうしていません。
04-24 01:47:38.136: E/MicReceiver(3769): Entering Receiver
04-24 01:47:38.136: E/MicReceiver(3769): Down
04-24 01:47:38.187: E/MicReceiver(3769): Entering Receiver
04-24 01:47:38.187: E/MicReceiver(3769): Down
04-24 01:47:38.257: E/MicReceiver(3769): Entering Receiver
04-24 01:47:38.257: E/MicReceiver(3769): Down
04-24 01:47:38.281: E/MicReceiver(3769): Entering Receiver
04-24 01:47:38.281: E/MicReceiver(3769): Down
04-24 01:47:38.390: E/MicReceiver(3769): Entering Receiver
04-24 01:47:38.390: E/MicReceiver(3769): Down
04-24 01:47:38.402: E/MicReceiver(3769): Entering Receiver
04-24 01:47:38.402: E/MicReceiver(3769): Up