diff options
| author | 2016-03-01 23:02:30 +0000 | |
|---|---|---|
| committer | 2016-03-01 23:02:31 +0000 | |
| commit | 2ab93cb22ad641572bdfed1b2d3d9e8dc1e89f1f (patch) | |
| tree | 2e1753b682281c79f3c6b670c7991aa91ee6fe7a | |
| parent | 8486706affc6366af57a4e39797f9bf8d2ad68e3 (diff) | |
| parent | 47d98de60bc5504271e027aef0b7ea218f0aaf59 (diff) | |
Merge "Hide overlay windows in VR mode" into nyc-dev
| -rw-r--r-- | services/core/java/com/android/server/vr/VrManagerService.java | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/vr/VrManagerService.java b/services/core/java/com/android/server/vr/VrManagerService.java index 2f076d1d69e3..7611527d2b99 100644 --- a/services/core/java/com/android/server/vr/VrManagerService.java +++ b/services/core/java/com/android/server/vr/VrManagerService.java @@ -15,9 +15,12 @@ */ package com.android.server.vr; +import android.app.AppOpsManager; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; +import android.os.Binder; +import android.os.IBinder; import android.os.UserHandle; import android.util.ArraySet; import android.util.Slog; @@ -40,6 +43,9 @@ public class VrManagerService extends SystemService { private static native void setVrModeNative(boolean enabled); private final Object mLock = new Object(); + + private final IBinder mOverlayToken = new Binder(); + private boolean mVrModeEnabled = false; private ArraySet<VrStateListener> mListeners = new ArraySet<>(); @@ -97,11 +103,25 @@ public class VrManagerService extends SystemService { // Log mode change event. Slog.i(TAG, "VR mode " + ((mVrModeEnabled) ? "enabled" : "disabled")); setVrModeNative(mVrModeEnabled); + updateOverlayStateLocked(); onVrModeChangedLocked(); } } } + private void updateOverlayStateLocked() { + final long identity = Binder.clearCallingIdentity(); + try { + AppOpsManager appOpsManager = getContext().getSystemService(AppOpsManager.class); + if (appOpsManager != null) { + appOpsManager.setUserRestriction(AppOpsManager.OP_SYSTEM_ALERT_WINDOW, + mVrModeEnabled, mOverlayToken); + } + } finally { + Binder.restoreCallingIdentity(identity); + } + } + private boolean getVrMode() { synchronized (mLock) { return mVrModeEnabled; |