Forward keyevents to AudioManager when browser activity is on top
Fixes-issue: SWE-3166
Change-Id: Ibd0e1f0c6d8a2582dedc1047476c810a573ea823
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 397528d..6b5e424 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -41,6 +41,7 @@
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Rect;
+import android.media.AudioManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
@@ -48,6 +49,7 @@
import android.net.wifi.WifiManager;
import android.net.wifi.ScanResult;
import android.os.AsyncTask;
+import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
@@ -1112,9 +1114,38 @@
return false;
}
+ private void handleMediaKeyEvent(KeyEvent event) {
+
+ int keyCode = event.getKeyCode();
+ // send media key events to audio manager
+ if (Build.VERSION.SDK_INT >= 19) {
+
+ switch (keyCode) {
+ case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
+ case KeyEvent.KEYCODE_MEDIA_STOP:
+ case KeyEvent.KEYCODE_MEDIA_NEXT:
+ case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
+ case KeyEvent.KEYCODE_MEDIA_REWIND:
+ case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD:
+ case KeyEvent.KEYCODE_MUTE:
+ case KeyEvent.KEYCODE_MEDIA_PLAY:
+ case KeyEvent.KEYCODE_MEDIA_PAUSE:
+ case KeyEvent.META_SHIFT_RIGHT_ON:
+ case KeyEvent.KEYCODE_MEDIA_EJECT:
+ case KeyEvent.KEYCODE_MEDIA_RECORD:
+ case KeyEvent.KEYCODE_MEDIA_AUDIO_TRACK:
+
+ AudioManager audioManager = (AudioManager) mActivity.getApplicationContext()
+ .getSystemService(Context.AUDIO_SERVICE);
+ audioManager.dispatchMediaKeyEvent(event);
+ }
+ }
+ }
+
@Override
public boolean onUnhandledKeyEvent(KeyEvent event) {
if (!isActivityPaused()) {
+ handleMediaKeyEvent(event);
if (event.getAction() == KeyEvent.ACTION_DOWN) {
return mActivity.onKeyDown(event.getKeyCode(), event);
} else {