Studiowałem intencję ACTION_MEDIA_BUTTON
i próbuję jej użyć i przechwycić naciśnięcia przycisków i przedstawić je na ekranie za pomocą tostów. Zarejestrowałem odbiornik do przechwytywania dwie intencje:Jak przechwycić naciśnięcia przycisków w zestawie słuchawkowym w systemie Android?
ACTION_HEADSET_PLUG
- podłączając słuchawkiACTION_MEDIA_BUTTON
- odbieranie przycisku pras
Odbywa się to w moim Główna działalność:
IntentFilter mediaFilter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
mediaFilter.setPriority(10000);
registerReceiver(_receiver, new IntentFilter(Intent.ACTION_HEADSET_PLUG));
registerReceiver(_receiver, mediaFilter);
To jest część r eceiver który obsługuje przycisk pras:
if (action.equals(Intent.ACTION_HEADSET_PLUG))
{
Toast.makeText(context, "earphones activity",Toast.LENGTH_SHORT).show();
if (intent.getExtras().getInt("state")==1)//if plugged
Toast.makeText(context, "earphones plugged",Toast.LENGTH_LONG).show();
else Toast.makeText(context, "earphones un-plugged",Toast.LENGTH_LONG).show();
}
else
if (action.equals(Intent.ACTION_MEDIA_BUTTON))
{
Toast.makeText(context, "button pressed",Toast.LENGTH_LONG).show();
key=intent.getExtras().getString("EXTRA_KEY_EVENT");
Toast.makeText(context, key,Toast.LENGTH_LONG).show();
}
Teraz część, która obsługuje zestawu plug-in i usuwanie działa dobrze, ale część, która przechwyci naciśnij przycisk nie jest.
Czy istnieje jakiś powód, dla którego kod, który obsługuje ACTION_MEDIA_BUTTON
, nie działa?
Czy istnieje specjalne pozwolenie na przechwycenie takiego zamiaru?
Używam Samsung Galaxy S2 do przetestowania kodu.
Przyjrzałem się wszystkim podobnym postom i wypróbowałem wszystko. Niestety nic nie działa.
na jakim urządzeniu to testujesz? – slayton
Samsung galaxy s 2 –
Nie jestem pewien, ale może to być, że TouchWiz nie poprawnie realizuje intencję ANDROID_MEDIA_BUTTON ... – slayton