summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xcore/java/android/provider/Settings.java27
-rw-r--r--services/core/java/com/android/server/lights/LightsService.java36
-rw-r--r--services/core/java/com/android/server/vr/EnabledComponentsObserver.java2
-rw-r--r--services/core/java/com/android/server/vr/SettingsObserver.java5
4 files changed, 57 insertions, 13 deletions
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 6b60f47c7d7f..d80d4bedf9f4 100755
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -6043,6 +6043,33 @@ public final class Settings {
public static final String ENABLED_VR_LISTENERS = "enabled_vr_listeners";
/**
+ * Behavior of the display while in VR mode.
+ *
+ * One of {@link #VR_DISPLAY_MODE_LOW_PERSISTENCE} or {@link #VR_DISPLAY_MODE_OFF}.
+ *
+ * @hide
+ */
+ public static final String VR_DISPLAY_MODE = "vr_display_mode";
+
+ /**
+ * Lower the display persistence while the system is in VR mode.
+ *
+ * @see PackageManager#FEATURE_VR_MODE_HIGH_PERFORMANCE
+ *
+ * @hide.
+ */
+ public static final int VR_DISPLAY_MODE_LOW_PERSISTENCE = 0;
+
+ /**
+ * Do not alter the display persistence while the system is in VR mode.
+ *
+ * @see PackageManager#FEATURE_VR_MODE_HIGH_PERFORMANCE
+ *
+ * @hide.
+ */
+ public static final int VR_DISPLAY_MODE_OFF = 1;
+
+ /**
* This are the settings to be backed up.
*
* NOTE: Settings are backed up and restored in the order they appear
diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
index 5953ddecd222..07048a491543 100644
--- a/services/core/java/com/android/server/lights/LightsService.java
+++ b/services/core/java/com/android/server/lights/LightsService.java
@@ -17,16 +17,16 @@
package com.android.server.lights;
import com.android.server.SystemService;
-import com.android.server.vr.VrManagerInternal;
import com.android.server.vr.VrManagerService;
-import com.android.server.vr.VrStateListener;
+import android.app.ActivityManager;
import android.content.Context;
import android.os.Handler;
-import android.os.IBinder;
import android.os.Message;
import android.os.RemoteException;
import android.os.Trace;
+import android.os.UserHandle;
+import android.provider.Settings;
import android.service.vr.IVrManager;
import android.service.vr.IVrStateCallbacks;
import android.util.Slog;
@@ -36,6 +36,7 @@ public class LightsService extends SystemService {
static final boolean DEBUG = false;
final LightImpl mLights[] = new LightImpl[LightsManager.LIGHT_ID_COUNT];
+ private boolean mVrModeEnabled;
private final class LightImpl extends Light {
@@ -179,17 +180,34 @@ public class LightsService extends SystemService {
}
}
+ private int getVrDisplayMode() {
+ int currentUser = ActivityManager.getCurrentUser();
+ return Settings.Secure.getIntForUser(getContext().getContentResolver(),
+ Settings.Secure.VR_DISPLAY_MODE,
+ /*default*/Settings.Secure.VR_DISPLAY_MODE_LOW_PERSISTENCE,
+ currentUser);
+ }
+
private final IVrStateCallbacks mVrStateCallbacks = new IVrStateCallbacks.Stub() {
@Override
public void onVrStateChanged(boolean enabled) throws RemoteException {
LightImpl l = mLights[LightsManager.LIGHT_ID_BACKLIGHT];
- if (enabled) {
- if (DEBUG) Slog.v(TAG, "VR mode enabled, setting brightness to low persistence");
- l.enableLowPersistence();
-
+ int vrDisplayMode = getVrDisplayMode();
+
+ // User leaves VR mode before altering display settings.
+ if (enabled && vrDisplayMode == Settings.Secure.VR_DISPLAY_MODE_LOW_PERSISTENCE) {
+ if (!mVrModeEnabled) {
+ if (DEBUG)
+ Slog.v(TAG, "VR mode enabled, setting brightness to low persistence");
+ l.enableLowPersistence();
+ mVrModeEnabled = true;
+ }
} else {
- if (DEBUG) Slog.v(TAG, "VR mode disabled, resetting brightnes");
- l.disableLowPersistence();
+ if (mVrModeEnabled) {
+ if (DEBUG) Slog.v(TAG, "VR mode disabled, resetting brightnes");
+ l.disableLowPersistence();
+ mVrModeEnabled = false;
+ }
}
}
};
diff --git a/services/core/java/com/android/server/vr/EnabledComponentsObserver.java b/services/core/java/com/android/server/vr/EnabledComponentsObserver.java
index 30194bf87c78..249a076df8f1 100644
--- a/services/core/java/com/android/server/vr/EnabledComponentsObserver.java
+++ b/services/core/java/com/android/server/vr/EnabledComponentsObserver.java
@@ -212,7 +212,7 @@ public class EnabledComponentsObserver implements SettingChangeListener {
if (userManager == null) {
return null;
}
- return userManager.getProfileIdsWithDisabled(ActivityManager.getCurrentUser());
+ return userManager.getEnabledProfileIds(ActivityManager.getCurrentUser());
}
public static ArraySet<ComponentName> loadComponentNames(PackageManager pm, int userId,
diff --git a/services/core/java/com/android/server/vr/SettingsObserver.java b/services/core/java/com/android/server/vr/SettingsObserver.java
index ce76863b0c16..3d1227d052dd 100644
--- a/services/core/java/com/android/server/vr/SettingsObserver.java
+++ b/services/core/java/com/android/server/vr/SettingsObserver.java
@@ -38,7 +38,7 @@ import java.util.Set;
public class SettingsObserver {
private final String mSecureSettingName;
- private final BroadcastReceiver mSettingRestorReceiver;
+ private final BroadcastReceiver mSettingRestoreReceiver;
private final ContentObserver mContentObserver;
private final Set<SettingChangeListener> mSettingsListeners = new ArraySet<>();
@@ -67,7 +67,7 @@ public class SettingsObserver {
@NonNull final Uri settingUri, @NonNull final String secureSettingName) {
mSecureSettingName = secureSettingName;
- mSettingRestorReceiver = new BroadcastReceiver() {
+ mSettingRestoreReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_SETTING_RESTORED.equals(intent.getAction())) {
@@ -117,7 +117,6 @@ public class SettingsObserver {
*/
public void addListener(@NonNull SettingChangeListener listener) {
mSettingsListeners.add(listener);
-
}
/**