diff options
author | Chih-Chung Chang <chihchung@google.com> | 2011-11-29 14:21:11 +0800 |
---|---|---|
committer | Chih-Chung Chang <chihchung@google.com> | 2011-11-29 15:12:14 +0800 |
commit | b5947c5669b3492d7e1295c16ab3efa00bfeb431 (patch) | |
tree | 40ef362ee62647111058e7de66e000bdd981c7b0 /src/com/android/gallery3d/app/MoviePlayer.java | |
parent | ef71b24dbf31f73e6df8ae15ac2a1ad1cbc255f6 (diff) | |
download | android_packages_apps_Snap-b5947c5669b3492d7e1295c16ab3efa00bfeb431.tar.gz android_packages_apps_Snap-b5947c5669b3492d7e1295c16ab3efa00bfeb431.tar.bz2 android_packages_apps_Snap-b5947c5669b3492d7e1295c16ab3efa00bfeb431.zip |
Fix 5661035: Accepts bluetooth keys while playing a video from gallery.
Change-Id: I8174b1a97baad563d8bbd685b9aab3a8ca428ead
Diffstat (limited to 'src/com/android/gallery3d/app/MoviePlayer.java')
-rw-r--r-- | src/com/android/gallery3d/app/MoviePlayer.java | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/com/android/gallery3d/app/MoviePlayer.java b/src/com/android/gallery3d/app/MoviePlayer.java index 9c81c79c2..3de534b97 100644 --- a/src/com/android/gallery3d/app/MoviePlayer.java +++ b/src/com/android/gallery3d/app/MoviePlayer.java @@ -30,6 +30,7 @@ import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import android.os.Handler; +import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; @@ -333,6 +334,55 @@ public class MoviePlayer implements startVideo(); } + // Below are key events passed from MovieActivity. + public boolean onKeyDown(int keyCode, KeyEvent event) { + + // Some headsets will fire off 7-10 events on a single click + if (event.getRepeatCount() > 0) { + return isMediaKey(keyCode); + } + + switch (keyCode) { + case KeyEvent.KEYCODE_HEADSETHOOK: + case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE: + if (mVideoView.isPlaying()) { + pauseVideo(); + } else { + playVideo(); + } + return true; + case KeyEvent.KEYCODE_MEDIA_PAUSE: + if (mVideoView.isPlaying()) { + pauseVideo(); + } + return true; + case KeyEvent.KEYCODE_MEDIA_PLAY: + if (!mVideoView.isPlaying()) { + playVideo(); + } + return true; + case KeyEvent.KEYCODE_MEDIA_PREVIOUS: + case KeyEvent.KEYCODE_MEDIA_NEXT: + // TODO: Handle next / previous accordingly, for now we're + // just consuming the events. + return true; + } + return false; + } + + public boolean onKeyUp(int keyCode, KeyEvent event) { + return isMediaKey(keyCode); + } + + private static boolean isMediaKey(int keyCode) { + return keyCode == KeyEvent.KEYCODE_HEADSETHOOK + || keyCode == KeyEvent.KEYCODE_MEDIA_PREVIOUS + || keyCode == KeyEvent.KEYCODE_MEDIA_NEXT + || keyCode == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE + || keyCode == KeyEvent.KEYCODE_MEDIA_PLAY + || keyCode == KeyEvent.KEYCODE_MEDIA_PAUSE; + } + // We want to pause when the headset is unplugged. private class AudioBecomingNoisyReceiver extends BroadcastReceiver { |