diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/service/MediaPlayerLifecycleSupport.java b/ultrasonic/src/main/java/org/moire/ultrasonic/service/MediaPlayerLifecycleSupport.java index 3c4c0750..2cf3d392 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/service/MediaPlayerLifecycleSupport.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/service/MediaPlayerLifecycleSupport.java @@ -183,7 +183,7 @@ public class MediaPlayerLifecycleSupport context.registerReceiver(headsetEventReceiver, headsetIntentFilter); } - private void handleKeyEvent(KeyEvent event) + public void handleKeyEvent(KeyEvent event) { if (event.getAction() != KeyEvent.ACTION_DOWN || event.getRepeatCount() > 0) { diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/service/MediaPlayerService.java b/ultrasonic/src/main/java/org/moire/ultrasonic/service/MediaPlayerService.java index 9613d403..41e42045 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/service/MediaPlayerService.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/service/MediaPlayerService.java @@ -71,6 +71,7 @@ public class MediaPlayerService extends Service private final Lazy downloaderLazy = inject(Downloader.class); private final Lazy localMediaPlayerLazy = inject(LocalMediaPlayer.class); private final Lazy nowPlayingEventDistributor = inject(NowPlayingEventDistributor.class); + private final Lazy mediaPlayerLifecycleSupport = inject(MediaPlayerLifecycleSupport.class); private LocalMediaPlayer localMediaPlayer; private Downloader downloader; @@ -893,6 +894,17 @@ public class MediaPlayerService extends Service super.onSeekTo(pos); } + @Override + public boolean onMediaButtonEvent(Intent mediaButtonEvent) { + // This probably won't be necessary once we implement more + // of the modern media APIs, like the MediaController etc. + KeyEvent event = (KeyEvent) mediaButtonEvent.getExtras().get("android.intent.extra.KEY_EVENT"); + MediaPlayerLifecycleSupport lifecycleSupport = mediaPlayerLifecycleSupport.getValue(); + lifecycleSupport.handleKeyEvent(event); + + return true; + } + } ); }