Я пытаюсь использовать медиа-мероприятия для воспроизведения, паузы, следующей, предыдущей музыки из приложения для Android.java.lang.NoSuchMethodException: dispatchMediaKeyEvent [класс android.view.KeyEvent]
Когда я запускаю его на Samsung s4 (Android версии 4.4.2), я могу выполнять все действия. Но я не могу выполнять эти действия с моего Nexus 5 (Android версии 5.0.1).
Я получаю ошибку при обработке ключевых событий.
Мой код:
private void handleMediaKeyEvent(KeyEvent keyEvent) {
/*
* Attempt to execute the following with reflection.
*
* [Code]
* IAudioService audioService = IAudioService.Stub.asInterface(b);
* audioService.dispatchMediaKeyEvent(keyEvent);
*/
boolean dispatchMediaKeyEvent = false;
try {
// Get binder from ServiceManager.checkService(String)
IBinder iBinder = (IBinder) Class.forName("android.os.ServiceManager")
.getDeclaredMethod("checkService",String.class)
.invoke(null, Context.AUDIO_SERVICE);
// get audioService from IAudioService.Stub.asInterface(IBinder)
Object audioService = Class.forName("android.media.IAudioService$Stub")
.getDeclaredMethod("asInterface",IBinder.class)
.invoke(null,iBinder);
// Dispatch keyEvent using IAudioService.dispatchMediaKeyEvent(KeyEvent)
Class.forName("android.media.IAudioService")
.getDeclaredMethod("dispatchMediaKeyEvent",KeyEvent.class)
.invoke(audioService, keyEvent);
dispatchMediaKeyEvent = true;
} catch (Exception e1) {
e1.printStackTrace();
}
// If dispatchMediaKeyEvent failed then try using broadcast
if (!dispatchMediaKeyEvent) {
Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON);
intent.putExtra(Intent.EXTRA_KEY_EVENT, keyEvent);
mContext.sendOrderedBroadcast(intent, null);
}
}
И я получаю ошибку:
02-14 15:37:08.744: W/System.err(3474): java.lang.NoSuchMethodException: dispatchMediaKeyEvent [class android.view.KeyEvent]
02-14 15:37:08.745: W/System.err(3474): at java.lang.Class.getMethod(Class.java:664)
02-14 15:37:08.745: W/System.err(3474): at java.lang.Class.getDeclaredMethod(Class.java:626)
Может кто-нибудь предложить решение, чтобы сделать его работать на всех устройствах Android?
, где находится этот метод? dispatchMediaKeyEvent –