Wie kann ich überprüfen, ob Play/Pause-Taste in meinem Headset geklickt ist? Danach kann ich eine Methode implementieren, die typische Action (Play/Pause) für meine eigene Aktion ändern kann (herunterfahren usw.)?Android - Überprüfen der Headset-Taste klicken
Antwort
verwenden Wenn Sie diese aus einer Tätigkeit im Vordergrund zu hören versuchen, verwenden onKeyDown()
und für KEYCODE_MEDIA_PLAY_PAUSE
beobachten.
Verwenden Sie eine BroadcastReceiver
für ACTION_MEDIA_BUTTON
, wenn Sie versuchen, dieses Ereignis aus dem Hintergrund zu hören (z. B. ein Dienst, der Musik spielt).
Sie können ACTION_MEDIA_BUTTON Absicht Lesen Sie mehr über Link Hope this Hilfe
Es ist mein Rundfunkempfänger, aber es funktioniert nicht, was ist los? public final BroadcastReceiver hReceiver = new BroadcastReceiver() { \t \t public void OnReceive (Context Kontext Intent Absicht) { \t String action = intent.getAction(); \t \t \t \t Absicht mediaButtonIntent = neue Absicht (Intent.ACTION_MEDIA_BUTTON); \t \t if (mediaButtonIntent.equals (action)) \t { \t \t adapter.add ("Klick"); \t \t} \t}; – PatLas
Momentan benutze ich unter dem Code Headset Knopf Klick Ereignis es funktioniert für mich. versuchen Sie diesen Code
enter code here
//Receiver
public class MediaButtonEventReceiver extends BroadcastReceiver {
private static final String TAG = "MediaButtonIntentReceiv";
public MediaButtonIntentReceiver() {
super();
}
@Override
public void onReceive(Context context, Intent intent) {
String intentAction = intent.getAction();
if (!Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
return;
}
KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (event == null) {
return;
}
int action = event.getAction();
if (action == KeyEvent.ACTION_DOWN) {
// do something
Log.e(TAG, "onReceive: ");
Toast.makeText(context, "BUTTON PRESSED!", Toast.LENGTH_SHORT).show();
}
abortBroadcast();
}
}
//Write this code in onCreateview in your activity
IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
MediaButtonIntentReceiver r = new MediaButtonIntentReceiver();
filter.setPriority(1000); //this line sets receiver priority
registerReceiver(r, filter);
// manifest.xml
<receiver android:name=".MediaButtonIntentReceiver">
<intent-filter >
<action android:name="android.intent.action.MEDIA_BUTTON"/>
</intent-filter>
</receiver>
es funktioniert für mich –
Es ist mein Rundfunkempfänger, aber es funktioniert nicht, was ist los? public final BroadcastReceiver hReceiver = new BroadcastReceiver() { \t \t public void OnReceive (Context Kontext Intent Absicht) { \t String action = intent.getAction(); \t \t \t \t Absicht mediaButtonIntent = neue Absicht (Intent.ACTION_MEDIA_BUTTON); \t \t if (mediaButtonIntent.equals (action)) \t { \t \t adapter.add ("Klick"); \t \t} \t}; – PatLas
@ user1320033: Sie müssen Ihren Aktions-String nicht testen, wenn Sie diesen 'BroadcastReceiver' nur einmal mit dem richtigen' IntentFilter' verwenden. Außerdem testen Sie es falsch. – CommonsWare
Also, was soll ich tun, um es richtig zu überprüfen? – PatLas