From 999383110626df71024ec7a1550f4b0ccdbefd87 Mon Sep 17 00:00:00 2001 From: Kurt Dresner Date: Mon, 9 Nov 2020 09:38:23 -0800 Subject: [PATCH] Expand visibility of projection state API so Android Auto can access it. The PROJECTION_TYPE_* constants and re{quest,lease}Projection APIs were originally marked @TestApi and @hide, but Android Auto needs them to be part of the @SystemApi to be able to use them. Bug: 134997071 Bug: 169702986 Test: Unit tests, tested against Android Auto Change-Id: Id8f3fb8697726ba20ea5a2843026c2083c0bec92 --- api/system-current.txt | 5 +++++ core/api/system-current.txt | 5 +++++ core/java/android/app/UiModeManager.java | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/api/system-current.txt b/api/system-current.txt index 222fb1755c506..3321677918f97 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -802,12 +802,17 @@ package android.app { method @RequiresPermission(android.Manifest.permission.ENTER_CAR_MODE_PRIORITIZED) public void enableCarMode(@IntRange(from=0) int, int); method @RequiresPermission(android.Manifest.permission.READ_PROJECTION_STATE) public int getActiveProjectionTypes(); method @NonNull @RequiresPermission(android.Manifest.permission.READ_PROJECTION_STATE) public java.util.Set getProjectingPackages(int); + method @RequiresPermission(value=android.Manifest.permission.TOGGLE_AUTOMOTIVE_PROJECTION, conditional=true) public boolean releaseProjection(int); method @RequiresPermission(android.Manifest.permission.READ_PROJECTION_STATE) public void removeOnProjectionStateChangeListener(@NonNull android.app.UiModeManager.OnProjectionStateChangeListener); + method @RequiresPermission(value=android.Manifest.permission.TOGGLE_AUTOMOTIVE_PROJECTION, conditional=true) public boolean requestProjection(int); field public static final String ACTION_ENTER_CAR_MODE_PRIORITIZED = "android.app.action.ENTER_CAR_MODE_PRIORITIZED"; field public static final String ACTION_EXIT_CAR_MODE_PRIORITIZED = "android.app.action.EXIT_CAR_MODE_PRIORITIZED"; field public static final int DEFAULT_PRIORITY = 0; // 0x0 field public static final String EXTRA_CALLING_PACKAGE = "android.app.extra.CALLING_PACKAGE"; field public static final String EXTRA_PRIORITY = "android.app.extra.PRIORITY"; + field public static final int PROJECTION_TYPE_ALL = 65535; // 0xffff + field public static final int PROJECTION_TYPE_AUTOMOTIVE = 1; // 0x1 + field public static final int PROJECTION_TYPE_NONE = 0; // 0x0 } public static interface UiModeManager.OnProjectionStateChangeListener { diff --git a/core/api/system-current.txt b/core/api/system-current.txt index ac4b36976921a..ede08d547bc35 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -750,12 +750,17 @@ package android.app { method @RequiresPermission(android.Manifest.permission.ENTER_CAR_MODE_PRIORITIZED) public void enableCarMode(@IntRange(from=0) int, int); method @RequiresPermission(android.Manifest.permission.READ_PROJECTION_STATE) public int getActiveProjectionTypes(); method @NonNull @RequiresPermission(android.Manifest.permission.READ_PROJECTION_STATE) public java.util.Set getProjectingPackages(int); + method @RequiresPermission(value=android.Manifest.permission.TOGGLE_AUTOMOTIVE_PROJECTION, conditional=true) public boolean releaseProjection(int); method @RequiresPermission(android.Manifest.permission.READ_PROJECTION_STATE) public void removeOnProjectionStateChangeListener(@NonNull android.app.UiModeManager.OnProjectionStateChangeListener); + method @RequiresPermission(value=android.Manifest.permission.TOGGLE_AUTOMOTIVE_PROJECTION, conditional=true) public boolean requestProjection(int); field public static final String ACTION_ENTER_CAR_MODE_PRIORITIZED = "android.app.action.ENTER_CAR_MODE_PRIORITIZED"; field public static final String ACTION_EXIT_CAR_MODE_PRIORITIZED = "android.app.action.EXIT_CAR_MODE_PRIORITIZED"; field public static final int DEFAULT_PRIORITY = 0; // 0x0 field public static final String EXTRA_CALLING_PACKAGE = "android.app.extra.CALLING_PACKAGE"; field public static final String EXTRA_PRIORITY = "android.app.extra.PRIORITY"; + field public static final int PROJECTION_TYPE_ALL = 65535; // 0xffff + field public static final int PROJECTION_TYPE_AUTOMOTIVE = 1; // 0x1 + field public static final int PROJECTION_TYPE_NONE = 0; // 0x0 } public static interface UiModeManager.OnProjectionStateChangeListener { diff --git a/core/java/android/app/UiModeManager.java b/core/java/android/app/UiModeManager.java index 8a6871fdf3f05..e1c262caf44f9 100644 --- a/core/java/android/app/UiModeManager.java +++ b/core/java/android/app/UiModeManager.java @@ -651,6 +651,7 @@ public class UiModeManager { * * @hide */ + @SystemApi @TestApi public static final int PROJECTION_TYPE_NONE = 0x0000; /** @@ -660,6 +661,7 @@ public class UiModeManager { * * @hide */ + @SystemApi @TestApi public static final int PROJECTION_TYPE_AUTOMOTIVE = 0x0001; /** @@ -669,6 +671,7 @@ public class UiModeManager { * * @hide */ + @SystemApi @TestApi public static final int PROJECTION_TYPE_ALL = 0xffff; @@ -695,6 +698,7 @@ public class UiModeManager { * * @hide */ + @SystemApi @TestApi @RequiresPermission(value = android.Manifest.permission.TOGGLE_AUTOMOTIVE_PROJECTION, conditional = true) @@ -723,6 +727,7 @@ public class UiModeManager { * * @hide */ + @SystemApi @TestApi @RequiresPermission(value = android.Manifest.permission.TOGGLE_AUTOMOTIVE_PROJECTION, conditional = true)