ヘッドセットボタンイベントを処理するための作業コードを作成するのが最善の方法です。私はAndroid developer guideを読んでいますが、明らかに間違っています。クラス名の登録を聞いて聴くように頼んでいるからです。Android:ヘッドセットボタンイベントを処理してMainActivityに情報を送信
am.registerMediaButtonEventReceiver(RemoteControlReceiver); // Wrong
コードを修正するために他の例を確認します。例えば、多くの秘密の提案がthis questionで公開されている、私はまた、このようなthisなどの他のコードを試みたが、MediaSessionで別の解決策、そして、私はこのコードを書いた不要なのクリーニング:
私はクラスRemoteControlReceiverを実施しました。どうやら静的内部クラスの必要がない、実際には、this commentを参照してください。
public class RemoteControlReceiver extends BroadcastReceiver {
public RemoteControlReceiver() {
super();
}
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "EVENT!!", Toast.LENGTH_SHORT).show();
if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {
KeyEvent event = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (KeyEvent.KEYCODE_MEDIA_PLAY == event.getKeyCode()) {
Toast.makeText(context, "EVENT!!", Toast.LENGTH_SHORT).show();
}
}
}
}
その後、私はMainActivityのonCreate(内部の意図を登録){ ...
AudioManager am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
ComponentName mReceiverComponent = new ComponentName(this, RemoteControlReceiver.class);
am.registerMediaButtonEventReceiver(mReceiverComponent);
registerMediaButtonEventReceiver途中で廃止されました...
アクティビティタグの後にマニフェストを記録します:
<activity>
...
</activity>
<receiver android:name=".RemoteControlReceiver" android:enabled="true">
<intent-filter android:priority="2147483647">
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
注:静的内部クラスは、たとえば「.MainActivity $ RemoteControlReceiver」となります。
- なぜregisterMediaButtonEventReceiverが廃止されました:
私はここで
compileSdkVersion 24 buildToolsVersion "24.0.0" ... minSdkVersion 21 targetSdkVersion 24
私の質問に取り組んでいますか?最近このパラダイムは間違っているようですが、これらの問題をAndroid Developer Portalで処理する方法に関する情報は見つかりませんでした。
- MainActivityとどのように対話できますか?私の目的は、いくつかのヘッドセット操作が実行されたときにMainActivityでアクションを実行することです。
マニフェストには 'MainActivity $ MediaButtonReceiver'がありますが、あなたのクラスは' RemoteControlReceiver'と呼ばれています。どちらですか? – ianhanniballake
ニアンニーニングのための@ianhanniballakeありがとうございました。私はすべての実験中に多くの受信機を実装しました。今私はそれを訂正しました。 – donnadulcinea