summaryrefslogtreecommitdiffstats
path: root/services/core/java/com/android/server/media
diff options
context:
space:
mode:
authorJeff Brown <jeffbrown@google.com>2015-03-19 18:26:30 -0700
committerJeff Brown <jeffbrown@google.com>2015-03-20 13:26:09 -0700
commit38d3feb76c2b2783facdab46df64331384d82a9b (patch)
tree763204fafcab2be7368f7dd6376b4e8fad320717 /services/core/java/com/android/server/media
parentbb777ef40d7a181e782dfce652c3d9da390dc9f5 (diff)
downloadframeworks_base-38d3feb76c2b2783facdab46df64331384d82a9b.zip
frameworks_base-38d3feb76c2b2783facdab46df64331384d82a9b.tar.gz
frameworks_base-38d3feb76c2b2783facdab46df64331384d82a9b.tar.bz2
Disable more hotkeys while in setup.
Disables fallback key processing for CALL, CAMERA, and HEADSETHOOK buttons. Bug: 19767816 Change-Id: I423103c367e05827c939cd8d8dbecb6012b0e9f0
Diffstat (limited to 'services/core/java/com/android/server/media')
-rw-r--r--services/core/java/com/android/server/media/MediaSessionService.java16
1 files changed, 15 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/media/MediaSessionService.java b/services/core/java/com/android/server/media/MediaSessionService.java
index 77a1fa9..72e4b4b 100644
--- a/services/core/java/com/android/server/media/MediaSessionService.java
+++ b/services/core/java/com/android/server/media/MediaSessionService.java
@@ -56,6 +56,7 @@ import android.provider.Settings;
import android.speech.RecognizerIntent;
import android.text.TextUtils;
import android.util.Log;
+import android.util.Slog;
import android.util.SparseArray;
import android.view.KeyEvent;
@@ -715,11 +716,19 @@ public class MediaSessionService extends SystemService implements Monitor {
Log.w(TAG, "Attempted to dispatch null or non-media key event.");
return;
}
+
final int pid = Binder.getCallingPid();
final int uid = Binder.getCallingUid();
final long token = Binder.clearCallingIdentity();
-
try {
+ if (!isUserSetupComplete()) {
+ // Global media key handling can have the side-effect of starting new
+ // activities which is undesirable while setup is in progress.
+ Slog.i(TAG, "Not dispatching media key event because user "
+ + "setup is in progress.");
+ return;
+ }
+
synchronized (mLock) {
// If we don't have a media button receiver to fall back on
// include non-playing sessions for dispatching
@@ -1007,6 +1016,11 @@ public class MediaSessionService extends SystemService implements Monitor {
return keyCode == KeyEvent.KEYCODE_HEADSETHOOK;
}
+ private boolean isUserSetupComplete() {
+ return Settings.Secure.getIntForUser(getContext().getContentResolver(),
+ Settings.Secure.USER_SETUP_COMPLETE, 0, UserHandle.USER_CURRENT) != 0;
+ }
+
// we only handle public stream types, which are 0-5
private boolean isValidLocalStreamType(int streamType) {
return streamType >= AudioManager.STREAM_VOICE_CALL