Merge "Fix build break."
diff --git a/src/com/android/phone/PhoneGlobals.java b/src/com/android/phone/PhoneGlobals.java
index 0e7d5d0..2d483d3 100644
--- a/src/com/android/phone/PhoneGlobals.java
+++ b/src/com/android/phone/PhoneGlobals.java
@@ -34,6 +34,8 @@
import android.content.ServiceConnection;
import android.content.res.Configuration;
import android.media.AudioManager;
+import android.media.session.Session;
+import android.media.session.SessionManager;
import android.net.Uri;
import android.os.AsyncResult;
import android.os.Binder;
@@ -216,6 +218,9 @@
// Broadcast receiver purely for ACTION_MEDIA_BUTTON broadcasts
private final BroadcastReceiver mMediaButtonReceiver = new MediaButtonBroadcastReceiver();
+ private final SessionCallback mSessionCallback = new SessionCallback();
+
+ private Session mSession;
/** boolean indicating restoring mute state on InCallScreen.onResume() */
private boolean mShouldRestoreMuteOnInCallResume;
@@ -557,6 +562,14 @@
// audio-mode-related state of our own) is initialized
// correctly, given the current state of the phone.
PhoneUtils.setAudioMode(mCM);
+
+ // Register a MediaSession but don't enable it yet. This is a
+ // replacement for MediaButtonReceiver
+ SessionManager msm = (SessionManager) getSystemService(Context.MEDIA_SESSION_SERVICE);
+ mSession = msm.createSession(LOG_TAG);
+ mSession.addCallback(mSessionCallback);
+ mSession.setFlags(Session.FLAG_EXCLUSIVE_GLOBAL_PRIORITY
+ | Session.FLAG_HANDLES_MEDIA_BUTTONS);
}
if (TelephonyCapabilities.supportsOtasp(phone)) {
@@ -921,10 +934,16 @@
if (!mUpdateLock.isHeld()) {
mUpdateLock.acquire();
}
+ if (!mSession.isActive()) {
+ mSession.setActive(true);
+ }
} else {
if (mUpdateLock.isHeld()) {
mUpdateLock.release();
}
+ if (mSession.isActive()) {
+ mSession.setActive(false);
+ }
}
}
}
@@ -1083,6 +1102,19 @@
}
}
+ private class SessionCallback extends Session.Callback {
+ @Override
+ public void onMediaButton(Intent intent) {
+ KeyEvent event = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
+ if (VDBG) Log.d(LOG_TAG, "SessionCallback.onMediaButton()... event = " + event);
+ if ((event != null) && (event.getKeyCode() == KeyEvent.KEYCODE_HEADSETHOOK)) {
+ if (VDBG) Log.d(LOG_TAG, "SessionCallback: HEADSETHOOK");
+ boolean consumed = PhoneUtils.handleHeadsetHook(phone, event);
+ if (VDBG) Log.d(LOG_TAG, "==> handleHeadsetHook(): consumed = " + consumed);
+ }
+ }
+ }
+
/**
* Broadcast receiver for the ACTION_MEDIA_BUTTON broadcast intent.
*