diff --git a/res/values/strings.xml b/res/values/strings.xml
index 0ce90759174..e061f6e5655 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -6059,6 +6059,15 @@
applications in virtual reality mode.
+
+ When device is in VR mode
+
+
+ Use low motion blur settings
+
+
+ Do nothing
+
Do Not Disturb access
@@ -6938,7 +6947,7 @@
This permission allows an app to display on top of other apps you\u2019re using and may interfere with your use of the interface in other applications, or change what you think you are seeing in other applications.
-
+
vr virtual reality listener stereo helper service
system alert window dialog draw on top other apps
diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml
index 54b17d3befa..816f27bee4b 100644
--- a/res/xml/display_settings.xml
+++ b/res/xml/display_settings.xml
@@ -106,4 +106,9 @@
settings:keywords="@string/keywords_display_cast_screen"
android:fragment="com.android.settings.wfd.WifiDisplaySettings" />
+
+
diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java
index 95b2879b760..8e389a930c5 100644
--- a/src/com/android/settings/DisplaySettings.java
+++ b/src/com/android/settings/DisplaySettings.java
@@ -17,12 +17,14 @@
package com.android.settings;
import android.app.Activity;
+import android.app.ActivityManager;
import android.app.UiModeManager;
import android.app.WallpaperManager;
import android.app.admin.DevicePolicyManager;
import android.content.ContentResolver;
import android.content.Context;
import android.content.ComponentName;
+import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.hardware.Sensor;
@@ -87,6 +89,7 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
private static final String KEY_CAMERA_DOUBLE_TAP_POWER_GESTURE
= "camera_double_tap_power_gesture";
private static final String KEY_WALLPAPER = "wallpaper";
+ private static final String KEY_VR_DISPLAY_PREF = "vr_display_pref";
private Preference mFontSizePref;
@@ -207,6 +210,40 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
removePreference(KEY_AUTO_ROTATE);
}
+ if (isVrDisplayModeAvailable(activity)) {
+ DropDownPreference vrDisplayPref =
+ (DropDownPreference) findPreference(KEY_VR_DISPLAY_PREF);
+ vrDisplayPref.setEntries(new CharSequence[] {
+ activity.getString(R.string.display_vr_pref_low_persistence),
+ activity.getString(R.string.display_vr_pref_off),
+ });
+ vrDisplayPref.setEntryValues(new CharSequence[] { "0", "1" });
+
+ final Context c = activity;
+ int currentUser = ActivityManager.getCurrentUser();
+ int current = Settings.Secure.getIntForUser(c.getContentResolver(),
+ Settings.Secure.VR_DISPLAY_MODE,
+ /*default*/Settings.Secure.VR_DISPLAY_MODE_LOW_PERSISTENCE,
+ currentUser);
+ vrDisplayPref.setValueIndex(current);
+ vrDisplayPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ int i = Integer.parseInt((String) newValue);
+ int u = ActivityManager.getCurrentUser();
+ if (!Settings.Secure.putIntForUser(c.getContentResolver(),
+ Settings.Secure.VR_DISPLAY_MODE,
+ i, u)) {
+ Log.e(TAG, "Could not change setting for " +
+ Settings.Secure.VR_DISPLAY_MODE);
+ }
+ return true;
+ }
+ });
+ } else {
+ removePreference(KEY_VR_DISPLAY_PREF);
+ }
+
mNightModePreference = (ListPreference) findPreference(KEY_NIGHT_MODE);
if (mNightModePreference != null) {
final UiModeManager uiManager = (UiModeManager) getSystemService(
@@ -256,6 +293,11 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
com.android.internal.R.bool.config_cameraDoubleTapPowerGestureEnabled);
}
+ private static boolean isVrDisplayModeAvailable(Context context) {
+ PackageManager pm = context.getPackageManager();
+ return pm.hasSystemFeature(PackageManager.FEATURE_VR_MODE_HIGH_PERFORMANCE);
+ }
+
private void updateTimeoutPreferenceDescription(long currentTimeout) {
TimeoutListPreference preference = mScreenTimeoutPreference;
String summary;
@@ -515,6 +557,9 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
if (!isCameraDoubleTapPowerGestureAvailable(context.getResources())) {
result.add(KEY_CAMERA_DOUBLE_TAP_POWER_GESTURE);
}
+ if (!isVrDisplayModeAvailable(context)) {
+ result.add(KEY_VR_DISPLAY_PREF);
+ }
return result;
}
};