diff options
19 files changed, 76 insertions, 20 deletions
diff --git a/api/test-current.txt b/api/test-current.txt index 0cd20be4b879..d6018cccb6e5 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -742,6 +742,13 @@ package android.hardware.display { field public static final android.os.Parcelable.Creator<android.hardware.display.AmbientBrightnessDayStats> CREATOR; } + public class AmbientDisplayConfiguration { + ctor public AmbientDisplayConfiguration(android.content.Context); + method public boolean alwaysOnAvailable(); + method public boolean alwaysOnAvailableForUser(int); + method public boolean alwaysOnEnabled(int); + } + public final class BrightnessChangeEvent implements android.os.Parcelable { method public int describeContents(); method public void writeToParcel(android.os.Parcel, int); @@ -1992,6 +1999,7 @@ package android.provider { field public static final String AUTOFILL_USER_DATA_MIN_VALUE_LENGTH = "autofill_user_data_min_value_length"; field public static final String CONTENT_CAPTURE_ENABLED = "content_capture_enabled"; field public static final String DISABLED_PRINT_SERVICES = "disabled_print_services"; + field public static final String DOZE_ALWAYS_ON = "doze_always_on"; field @Deprecated public static final String ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES = "enabled_notification_policy_access_packages"; field public static final String ENABLED_VR_LISTENERS = "enabled_vr_listeners"; field public static final String LOCATION_ACCESS_CHECK_DELAY_MILLIS = "location_access_check_delay_millis"; diff --git a/core/java/com/android/internal/hardware/AmbientDisplayConfiguration.java b/core/java/android/hardware/display/AmbientDisplayConfiguration.java index 87e048cdd4a9..b122f199bc6f 100644 --- a/core/java/com/android/internal/hardware/AmbientDisplayConfiguration.java +++ b/core/java/android/hardware/display/AmbientDisplayConfiguration.java @@ -11,11 +11,12 @@ * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and - * limitations under the License + * limitations under the License. */ -package com.android.internal.hardware; +package android.hardware.display; +import android.annotation.TestApi; import android.content.Context; import android.os.Build; import android.os.SystemProperties; @@ -24,16 +25,25 @@ import android.text.TextUtils; import com.android.internal.R; +/** + * AmbientDisplayConfiguration encapsulates reading access to the configuration of ambient display. + * + * {@hide} + */ +@TestApi public class AmbientDisplayConfiguration { private final Context mContext; private final boolean mAlwaysOnByDefault; + /** {@hide} */ + @TestApi public AmbientDisplayConfiguration(Context context) { mContext = context; mAlwaysOnByDefault = mContext.getResources().getBoolean(R.bool.config_dozeAlwaysOnEnabled); } + /** {@hide} */ public boolean enabled(int user) { return pulseOnNotificationEnabled(user) || pulseOnLongPressEnabled(user) @@ -41,67 +51,83 @@ public class AmbientDisplayConfiguration { || wakeScreenGestureEnabled(user); } + /** {@hide} */ public boolean pulseOnNotificationEnabled(int user) { - return boolSettingDefaultOn(Settings.Secure.DOZE_ENABLED, user) && pulseOnNotificationAvailable(); + return boolSettingDefaultOn(Settings.Secure.DOZE_ENABLED, user) + && pulseOnNotificationAvailable(); } + /** {@hide} */ public boolean pulseOnNotificationAvailable() { return ambientDisplayAvailable(); } + /** {@hide} */ public boolean pickupGestureEnabled(int user) { return boolSettingDefaultOn(Settings.Secure.DOZE_PICK_UP_GESTURE, user) && dozePickupSensorAvailable(); } + /** {@hide} */ public boolean dozePickupSensorAvailable() { return mContext.getResources().getBoolean(R.bool.config_dozePulsePickup); } + /** {@hide} */ public boolean tapGestureEnabled(int user) { return boolSettingDefaultOn(Settings.Secure.DOZE_TAP_SCREEN_GESTURE, user) && tapSensorAvailable(); } + /** {@hide} */ public boolean tapSensorAvailable() { return !TextUtils.isEmpty(tapSensorType()); } + /** {@hide} */ public boolean doubleTapGestureEnabled(int user) { return boolSettingDefaultOn(Settings.Secure.DOZE_DOUBLE_TAP_GESTURE, user) && doubleTapSensorAvailable(); } + /** {@hide} */ public boolean doubleTapSensorAvailable() { return !TextUtils.isEmpty(doubleTapSensorType()); } + /** {@hide} */ public boolean wakeScreenGestureAvailable() { return mContext.getResources() .getBoolean(R.bool.config_dozeWakeLockScreenSensorAvailable); } + /** {@hide} */ public boolean wakeScreenGestureEnabled(int user) { return boolSettingDefaultOn(Settings.Secure.DOZE_WAKE_SCREEN_GESTURE, user) && wakeScreenGestureAvailable(); } + /** {@hide} */ public long getWakeLockScreenDebounce() { return mContext.getResources().getInteger(R.integer.config_dozeWakeLockScreenDebounce); } + /** {@hide} */ public String doubleTapSensorType() { return mContext.getResources().getString(R.string.config_dozeDoubleTapSensorType); } + /** {@hide} */ public String tapSensorType() { return mContext.getResources().getString(R.string.config_dozeTapSensorType); } + /** {@hide} */ public String longPressSensorType() { return mContext.getResources().getString(R.string.config_dozeLongPressSensorType); } + /** {@hide} */ public boolean pulseOnLongPressEnabled(int user) { return pulseOnLongPressAvailable() && boolSettingDefaultOff( Settings.Secure.DOZE_PULSE_ON_LONG_PRESS, user); @@ -111,28 +137,49 @@ public class AmbientDisplayConfiguration { return !TextUtils.isEmpty(longPressSensorType()); } + /** + * Returns if Always-on-Display functionality is enabled on the display for a specified user. + * + * {@hide} + */ + @TestApi public boolean alwaysOnEnabled(int user) { return boolSetting(Settings.Secure.DOZE_ALWAYS_ON, user, mAlwaysOnByDefault ? 1 : 0) && alwaysOnAvailable() && !accessibilityInversionEnabled(user); } + /** + * Returns if Always-on-Display functionality is available on the display. + * + * {@hide} + */ + @TestApi public boolean alwaysOnAvailable() { return (alwaysOnDisplayDebuggingEnabled() || alwaysOnDisplayAvailable()) && ambientDisplayAvailable(); } + /** + * Returns if Always-on-Display functionality is available on the display for a specified user. + * + * {@hide} + */ + @TestApi public boolean alwaysOnAvailableForUser(int user) { return alwaysOnAvailable() && !accessibilityInversionEnabled(user); } + /** {@hide} */ public String ambientDisplayComponent() { return mContext.getResources().getString(R.string.config_dozeComponent); } + /** {@hide} */ public boolean accessibilityInversionEnabled(int user) { return boolSettingDefaultOff(Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED, user); } + /** {@hide} */ public boolean ambientDisplayAvailable() { return !TextUtils.isEmpty(ambientDisplayComponent()); } @@ -145,7 +192,6 @@ public class AmbientDisplayConfiguration { return SystemProperties.getBoolean("debug.doze.aod", false) && Build.IS_DEBUGGABLE; } - private boolean boolSettingDefaultOn(String name, int user) { return boolSetting(name, user, 1); } diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 4c4bd6c2990f..38324f525656 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -7483,6 +7483,7 @@ public final class Settings { * @hide */ @SystemApi + @TestApi public static final String DOZE_ALWAYS_ON = "doze_always_on"; private static final Validator DOZE_ALWAYS_ON_VALIDATOR = BOOLEAN_VALIDATOR; diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeDockHandler.java b/packages/SystemUI/src/com/android/systemui/doze/DozeDockHandler.java index 5353ee6c8ab3..06dbdbf1efa8 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeDockHandler.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeDockHandler.java @@ -17,11 +17,11 @@ package com.android.systemui.doze; import android.content.Context; +import android.hardware.display.AmbientDisplayConfiguration; import android.os.Handler; import android.os.UserHandle; import android.util.Log; -import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.systemui.dock.DockManager; import com.android.systemui.doze.DozeMachine.State; diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java b/packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java index 325018227692..36e28dc0156d 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java @@ -21,9 +21,9 @@ import android.app.Application; import android.content.Context; import android.hardware.Sensor; import android.hardware.SensorManager; +import android.hardware.display.AmbientDisplayConfiguration; import android.os.Handler; -import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.Dependency; import com.android.systemui.R; diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java b/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java index 4d89a391a14f..6c4be0617043 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java @@ -17,12 +17,12 @@ package com.android.systemui.doze; import android.annotation.MainThread; +import android.hardware.display.AmbientDisplayConfiguration; import android.os.Trace; import android.os.UserHandle; import android.util.Log; import android.view.Display; -import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.internal.util.Preconditions; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.util.Assert; diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java index d1e127d91db8..c5799cc6738b 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java @@ -30,6 +30,7 @@ import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.hardware.TriggerEvent; import android.hardware.TriggerEventListener; +import android.hardware.display.AmbientDisplayConfiguration; import android.net.Uri; import android.os.Handler; import android.os.SystemClock; @@ -40,7 +41,6 @@ import android.util.Log; import androidx.annotation.VisibleForTesting; -import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto; import com.android.systemui.plugins.SensorManagerPlugin; diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java index b6e830cb50ea..3654aace2ba5 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java @@ -27,6 +27,7 @@ import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; +import android.hardware.display.AmbientDisplayConfiguration; import android.os.Handler; import android.os.SystemClock; import android.os.UserHandle; @@ -34,7 +35,6 @@ import android.text.format.Formatter; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; -import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.internal.util.Preconditions; import com.android.systemui.dock.DockManager; import com.android.systemui.statusbar.phone.DozeParameters; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java index 10497734d0b1..a17e04259fe3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java @@ -17,6 +17,7 @@ package com.android.systemui.statusbar.phone; import android.content.Context; +import android.hardware.display.AmbientDisplayConfiguration; import android.os.PowerManager; import android.os.SystemProperties; import android.os.UserHandle; @@ -26,7 +27,6 @@ import android.util.MathUtils; import android.util.SparseBooleanArray; import com.android.internal.annotations.VisibleForTesting; -import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.systemui.Dependency; import com.android.systemui.R; import com.android.systemui.doze.AlwaysOnDisplayPolicy; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java index d3ff63aa5cce..50c4fac31bbf 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java @@ -29,6 +29,7 @@ import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.drawable.Drawable; +import android.hardware.display.AmbientDisplayConfiguration; import android.media.AudioManager; import android.media.session.MediaSessionLegacyHelper; import android.net.Uri; @@ -56,7 +57,6 @@ import android.view.WindowInsetsController; import android.widget.FrameLayout; import com.android.internal.annotations.VisibleForTesting; -import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.internal.view.FloatingActionMode; import com.android.internal.widget.FloatingToolbar; import com.android.systemui.Dependency; diff --git a/packages/SystemUI/src/com/android/systemui/tuner/TunerFragment.java b/packages/SystemUI/src/com/android/systemui/tuner/TunerFragment.java index ecf1784e66c4..0070dcf9a604 100644 --- a/packages/SystemUI/src/com/android/systemui/tuner/TunerFragment.java +++ b/packages/SystemUI/src/com/android/systemui/tuner/TunerFragment.java @@ -19,6 +19,7 @@ import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; import android.content.DialogInterface; +import android.hardware.display.AmbientDisplayConfiguration; import android.os.Build; import android.os.Bundle; import android.provider.Settings; @@ -29,7 +30,6 @@ import android.view.MenuItem; import androidx.preference.Preference; import androidx.preference.PreferenceFragment; -import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.systemui.R; diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeConfigurationTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeConfigurationTest.java index 45342d4bc3a9..6807c22175ab 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeConfigurationTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeConfigurationTest.java @@ -18,12 +18,12 @@ package com.android.systemui.doze; import static junit.framework.TestCase.assertEquals; +import android.hardware.display.AmbientDisplayConfiguration; import android.os.UserHandle; import android.provider.Settings; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; -import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.systemui.SysuiTestCase; import org.junit.Before; diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeConfigurationUtil.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeConfigurationUtil.java index e4558df962e3..9438cbb6ebcd 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeConfigurationUtil.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeConfigurationUtil.java @@ -16,12 +16,13 @@ package com.android.systemui.doze; +import android.hardware.display.AmbientDisplayConfiguration; + import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import static org.mockito.Mockito.withSettings; -import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.systemui.statusbar.phone.DozeParameters; import org.mockito.Answers; diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeDockHandlerTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeDockHandlerTest.java index 0fc0953f333e..23ff3d483599 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeDockHandlerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeDockHandlerTest.java @@ -27,6 +27,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.Instrumentation; +import android.hardware.display.AmbientDisplayConfiguration; import android.os.Handler; import android.os.Looper; import android.support.test.InstrumentationRegistry; @@ -35,7 +36,6 @@ import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.testing.TestableLooper.RunWithLooper; -import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.systemui.SysuiTestCase; import com.android.systemui.dock.DockManager; import com.android.systemui.dock.DockManagerFake; diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeMachineTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeMachineTest.java index 5a6200f5f80a..f972508c0375 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeMachineTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeMachineTest.java @@ -38,11 +38,11 @@ import static org.mockito.Mockito.reset; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import android.hardware.display.AmbientDisplayConfiguration; import android.support.test.filters.SmallTest; import android.testing.AndroidTestingRunner; import android.testing.UiThreadTest; -import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.systemui.SysuiTestCase; import com.android.systemui.util.wakelock.WakeLockFake; diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java index 066dff28fb25..463a6e63835e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java @@ -31,12 +31,12 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.AlarmManager; +import android.hardware.display.AmbientDisplayConfiguration; import android.support.test.filters.SmallTest; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.testing.TestableLooper.RunWithLooper; -import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.systemui.SysuiTestCase; import com.android.systemui.plugins.SensorManagerPlugin; import com.android.systemui.statusbar.phone.DozeParameters; diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java index cdac7c979c55..ca373478f33c 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java @@ -27,6 +27,7 @@ import static org.mockito.Mockito.when; import android.app.AlarmManager; import android.app.Instrumentation; +import android.hardware.display.AmbientDisplayConfiguration; import android.os.Handler; import android.os.Looper; import android.support.test.InstrumentationRegistry; @@ -34,7 +35,6 @@ import android.support.test.filters.SmallTest; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper.RunWithLooper; -import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.systemui.SysuiTestCase; import com.android.systemui.dock.DockManager; import com.android.systemui.dock.DockManagerFake; diff --git a/services/core/java/com/android/server/dreams/DreamManagerService.java b/services/core/java/com/android/server/dreams/DreamManagerService.java index bffa8f486db7..3052e3cdcd21 100644 --- a/services/core/java/com/android/server/dreams/DreamManagerService.java +++ b/services/core/java/com/android/server/dreams/DreamManagerService.java @@ -28,6 +28,7 @@ import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ServiceInfo; import android.database.ContentObserver; +import android.hardware.display.AmbientDisplayConfiguration; import android.hardware.input.InputManagerInternal; import android.os.Binder; import android.os.Build; @@ -46,7 +47,6 @@ import android.service.dreams.IDreamManager; import android.util.Slog; import android.view.Display; -import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.internal.util.DumpUtils; import com.android.server.FgThread; import com.android.server.LocalServices; diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java index 176dbbf6a965..89d24b194b13 100644 --- a/services/core/java/com/android/server/power/PowerManagerService.java +++ b/services/core/java/com/android/server/power/PowerManagerService.java @@ -36,6 +36,7 @@ import android.content.res.Resources; import android.database.ContentObserver; import android.hardware.SensorManager; import android.hardware.SystemSensorManager; +import android.hardware.display.AmbientDisplayConfiguration; import android.hardware.display.DisplayManagerInternal; import android.hardware.display.DisplayManagerInternal.DisplayPowerRequest; import android.hardware.power.V1_0.PowerHint; @@ -81,7 +82,6 @@ import android.view.Display; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.app.IAppOpsService; import com.android.internal.app.IBatteryStats; -import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.internal.os.BackgroundThread; import com.android.internal.util.DumpUtils; import com.android.server.EventLogTags; |