Merge "Hide overlay windows in VR mode" into nyc-dev

This commit is contained in:
Svetoslav Ganov
2016-03-01 23:02:30 +00:00
committed by Android (Google) Code Review

View File

@@ -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;