Android OSのバージョン4.0.3(ICS)用のAndroidアプリケーションを作成しています。問題は、BroadcastReceiverのonReceive()メソッドのLog.d()から出力が得られないことです。これは、アプリケーションがブロードキャストを適切に処理していないことを意味します。ACTION_MEDIA_BUTTONのBroadcastReceiverが動作しない
ACTION_MEDIA_BUTTONをクリックしたときにコードを実行する方法について、何度も質問をしました。私がコピーしたコードを貼り付けても、私の仕事がうまくいかなかったら、それが機能するかどうかを確認するだけです。
ACTION_MEDIA_BUTTON私は対処したいボタンをイヤホンで使用することで、ユーザーは電話をかけたり、終了したり、音楽を再生/一時停止することができます。 私のアプリケーションがこのボタンを操作するのではなく、クリックすると、Nexus S Androidのストック音楽プレーヤーが曲を再生し始めます。
私は別のクラスに自分のコードを配置していません。なぜこれが機能しないのでしょうか?
ここでのonCreate()メソッド(私が書いたコードは動作しませんでした後、私はウェブサイトをオフにコピーし、この特定のコード)で見つかったコードです:
IntentFilter mediaButtonFilter = new IntentFilter(
Intent.ACTION_MEDIA_BUTTON);
mediaButtonFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
BroadcastReceiver brMediaButton = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
Log.d("Event", "Media button!");
this.abortBroadcast();
KeyEvent key = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if(key.getAction() == KeyEvent.ACTION_UP) {
int keycode = key.getKeyCode();
if(keycode == KeyEvent.KEYCODE_MEDIA_NEXT) {
Log.d("TestApp", "Next Pressed");
} else if(keycode == KeyEvent.KEYCODE_MEDIA_PREVIOUS) {
Log.d("TestApp", "Previous pressed");
} else if(keycode == KeyEvent.KEYCODE_HEADSETHOOK) {
Log.d("TestApp", "Head Set Hook pressed");
}
}
}
};
registerReceiver(brMediaButton, mediaButtonFilter);
は、私は本当にのためにテストする必要があるすべてがありますKEYCODE_HEADSETHOOKしかし、それはテストのための他のコードを持って傷ついていない、私はすべてを正しく動作させることができたらそれを修正します。私のマニフェストで
:
<intent-filter android:priority="2147483647" >
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
私はもともと、私はすべてのエラーメッセージは表示されませんでしたが、私はこのためのパーミッションを指定していないので、これはアクセス許可の問題かもしれ思いました。
私が以前に言ったように、私はこれに多くのバリエーションを試しました。 1つの例は、CommonsWareの修正を伴うこのリンクbroadcastreceiver onReceive problem ACTION_MEDIA_BUTTON Androidのコードの使用でした。しかし、再び、私はそれを変更して、別のクラスにはなかった。
ご協力いただきありがとうございます。
[こちら](http://stackoverflow.com/questions/3369554/how-to-handle-long-press-media-button-in-order-to (http://stackoverflow.com/questions/6603170/broadcastreceiver-onreceive-problem-action-media-button-android) これはあなたの問題を解決すると期待しています – silwar
私はほとんどあなたと同じコードで、Android 2.2/2.3でもうまくいきます。しかし、あなたのように私はそれをICSで動作させることはできません... – user1026605
同じです。 Android 4.0より前で動作します。 APIが変更されました。 – joepetrakovich