diff options
| author | 2024-03-15 13:35:07 +0000 | |
|---|---|---|
| committer | 2024-03-15 13:35:07 +0000 | |
| commit | 16619e7acacee5daca271e8f6f39af64e819a22a (patch) | |
| tree | b751bc1ef70ec62a6096c2e59cb3815a7b41680c | |
| parent | 82bb8686edae4f8d17d537b0f7f6327ec6e8e2c8 (diff) | |
| parent | ceb4ae4c854382c44744aa19fee6ab00fa7518d6 (diff) | |
Merge "Adding Dream Category API" into main
8 files changed, 70 insertions, 5 deletions
diff --git a/core/api/test-current.txt b/core/api/test-current.txt index c1af719e91c9..0a26490b772f 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -3065,6 +3065,7 @@ package android.service.dreams { } public static final class DreamService.DreamMetadata { + field @FlaggedApi("android.service.controls.flags.home_panel_dream") @NonNull public final int dreamCategory; field @Nullable public final android.graphics.drawable.Drawable previewImage; field @Nullable public final android.content.ComponentName settingsActivity; field @NonNull public final boolean showComplications; diff --git a/core/java/android/service/dreams/DreamService.java b/core/java/android/service/dreams/DreamService.java index 2d657c2813a5..4060b242292a 100644 --- a/core/java/android/service/dreams/DreamService.java +++ b/core/java/android/service/dreams/DreamService.java @@ -18,7 +18,9 @@ package android.service.dreams; import static android.content.pm.PackageManager.PERMISSION_GRANTED; +import android.annotation.FlaggedApi; import android.annotation.IdRes; +import android.annotation.IntDef; import android.annotation.LayoutRes; import android.annotation.NonNull; import android.annotation.Nullable; @@ -47,6 +49,7 @@ import android.os.Looper; import android.os.PowerManager; import android.os.RemoteException; import android.os.ServiceManager; +import android.service.controls.flags.Flags; import android.util.AttributeSet; import android.util.Log; import android.util.MathUtils; @@ -76,6 +79,8 @@ import org.xmlpull.v1.XmlPullParserException; import java.io.FileDescriptor; import java.io.IOException; import java.io.PrintWriter; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; import java.util.function.Consumer; /** @@ -217,6 +222,33 @@ public class DreamService extends Service implements Window.Callback { */ public static final boolean DEFAULT_SHOW_COMPLICATIONS = false; + /** + * The default value for dream category + * @hide + */ + public static final int DREAM_CATEGORY_DEFAULT = 0; + + /** + * Dream category for Low Light Dream + * @hide + */ + public static final int DREAM_CATEGORY_LOW_LIGHT = 1 << 0; + + /** + * Dream category for Home Panel Dream + * @hide + */ + public static final int DREAM_CATEGORY_HOME_PANEL = 1 << 1; + + /** @hide */ + @IntDef(flag = true, prefix = {"DREAM_CATEGORY"}, value = { + DREAM_CATEGORY_DEFAULT, + DREAM_CATEGORY_LOW_LIGHT, + DREAM_CATEGORY_HOME_PANEL + }) + @Retention(RetentionPolicy.SOURCE) + @interface DreamCategory {} + private final IDreamManager mDreamManager; private final Handler mHandler = new Handler(Looper.getMainLooper()); private IBinder mDreamToken; @@ -1122,12 +1154,15 @@ public class DreamService extends Service implements Window.Callback { try (TypedArray rawMetadata = readMetadata(pm, serviceInfo)) { if (rawMetadata == null) return null; return new DreamMetadata( - convertToComponentName(rawMetadata.getString( + convertToComponentName( + rawMetadata.getString( com.android.internal.R.styleable.Dream_settingsActivity), serviceInfo), rawMetadata.getDrawable( com.android.internal.R.styleable.Dream_previewImage), rawMetadata.getBoolean(R.styleable.Dream_showClockAndComplications, - DEFAULT_SHOW_COMPLICATIONS)); + DEFAULT_SHOW_COMPLICATIONS), + rawMetadata.getInt(R.styleable.Dream_dreamCategory, DREAM_CATEGORY_DEFAULT) + ); } } @@ -1543,11 +1578,23 @@ public class DreamService extends Service implements Window.Callback { @NonNull public final boolean showComplications; - DreamMetadata(ComponentName settingsActivity, Drawable previewImage, - boolean showComplications) { + @NonNull + @FlaggedApi(Flags.FLAG_HOME_PANEL_DREAM) + public final int dreamCategory; + + DreamMetadata( + ComponentName settingsActivity, + Drawable previewImage, + boolean showComplications, + int dreamCategory) { this.settingsActivity = settingsActivity; this.previewImage = previewImage; this.showComplications = showComplications; + if (Flags.homePanelDream()) { + this.dreamCategory = dreamCategory; + } else { + this.dreamCategory = DREAM_CATEGORY_DEFAULT; + } } } } diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index 48cf09a84e57..c77ee4326471 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -8988,6 +8988,14 @@ <!-- Whether to show clock and other complications such as weather in the overlay. Default to true. Note that the overlay on dreams is currently only supported on tablets. --> <attr name="showClockAndComplications" format="boolean" /> + + <!-- Dream Category to determine the type of dream. Default to default. + @hide --> + <attr name="dreamCategory" format="integer"> + <flag name="none" value="0x0" /> + <flag name="low_light" value="0x1" /> + <flag name="home_panel" value="0x2" /> + </attr> </declare-styleable> <!-- Use <code>trust-agent</code> as the root tag of the XML resource that diff --git a/core/res/res/values/public-staging.xml b/core/res/res/values/public-staging.xml index 3303c076c090..4be8c1bb4627 100644 --- a/core/res/res/values/public-staging.xml +++ b/core/res/res/values/public-staging.xml @@ -167,6 +167,8 @@ <public name="shiftDrawingOffsetForStartOverhang" /> <!-- @FlaggedApi("android.view.flags.toolkit_set_frame_rate_read_only") --> <public name="windowIsFrameRatePowerSavingsBalanced"/> + <!-- @FlaggedApi("android.service.controls.flags.Flags.FLAG_HOME_PANEL_DREAM") --> + <public name="dreamCategory"/> </staging-public-group> <staging-public-group type="id" first-id="0x01bc0000"> diff --git a/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java b/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java index a617bf3278d6..fa27db9a427a 100644 --- a/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java +++ b/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java @@ -60,6 +60,7 @@ public class DreamBackend { public CharSequence description; public Drawable previewImage; public boolean supportsComplications = false; + public int dreamCategory; @Override public String toString() { @@ -207,6 +208,7 @@ public class DreamBackend { dreamInfo.settingsComponentName = dreamMetadata.settingsActivity; dreamInfo.previewImage = dreamMetadata.previewImage; dreamInfo.supportsComplications = dreamMetadata.showComplications; + dreamInfo.dreamCategory = dreamMetadata.dreamCategory; } dreamInfos.add(dreamInfo); } diff --git a/packages/SystemUI/res/xml/home_controls_dream_metadata.xml b/packages/SystemUI/res/xml/home_controls_dream_metadata.xml index eb7c79e24b04..69bd9a477f05 100644 --- a/packages/SystemUI/res/xml/home_controls_dream_metadata.xml +++ b/packages/SystemUI/res/xml/home_controls_dream_metadata.xml @@ -16,4 +16,5 @@ <dream xmlns:android="http://schemas.android.com/apk/res/android" android:showClockAndComplications="false" android:previewImage="@drawable/homecontrols_sq" + android:dreamCategory="home_panel" />
\ No newline at end of file diff --git a/services/tests/dreamservicetests/res/xml/test_dream_metadata.xml b/services/tests/dreamservicetests/res/xml/test_dream_metadata.xml index 9211ec1a2f14..6e7d9ad00e34 100644 --- a/services/tests/dreamservicetests/res/xml/test_dream_metadata.xml +++ b/services/tests/dreamservicetests/res/xml/test_dream_metadata.xml @@ -17,4 +17,6 @@ <dream xmlns:android="http://schemas.android.com/apk/res/android" android:settingsActivity= "com.android.frameworks.dreamservicetests/.TestDreamSettingsActivity" - android:showClockAndComplications="false" /> + android:showClockAndComplications="false" + android:dreamCategory="home_panel" + /> diff --git a/services/tests/dreamservicetests/src/com/android/server/dreams/DreamServiceTest.java b/services/tests/dreamservicetests/src/com/android/server/dreams/DreamServiceTest.java index d231e40f5d0d..293ab7baa355 100644 --- a/services/tests/dreamservicetests/src/com/android/server/dreams/DreamServiceTest.java +++ b/services/tests/dreamservicetests/src/com/android/server/dreams/DreamServiceTest.java @@ -48,6 +48,7 @@ public class DreamServiceTest { assertThat(metadata.settingsActivity).isEqualTo( ComponentName.unflattenFromString(testSettingsActivity)); assertFalse(metadata.showComplications); + assertThat(metadata.dreamCategory).isEqualTo(DreamService.DREAM_CATEGORY_HOME_PANEL); } @Test @@ -58,6 +59,7 @@ public class DreamServiceTest { final DreamService.DreamMetadata metadata = getDreamMetadata(testDreamClassName); assertThat(metadata.settingsActivity).isNull(); + assertThat(metadata.dreamCategory).isEqualTo(DreamService.DREAM_CATEGORY_DEFAULT); } private DreamService.DreamMetadata getDreamMetadata(String dreamClassName) |