diff options
| author | 2023-02-06 13:46:23 +0000 | |
|---|---|---|
| committer | 2023-02-06 13:46:23 +0000 | |
| commit | dd0ad5869c9f17c5bedffa1121fd4ff48799c02b (patch) | |
| tree | ddd203003e018fc3116da30c3465ec67ad6c53f8 | |
| parent | 7c6dfce856da61f40c370a39b27540623b29ea29 (diff) | |
| parent | 8242d4354d2d0bd28d71a8e4b1edae7988242d33 (diff) | |
Merge "Make device types part of the public API"
6 files changed, 143 insertions, 47 deletions
diff --git a/core/api/current.txt b/core/api/current.txt index ed67679d53c8..de540bf93e4b 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -24032,6 +24032,7 @@ package android.media { method @Nullable public android.net.Uri getIconUri(); method @NonNull public String getId(); method @NonNull public CharSequence getName(); + method public int getType(); method public int getVolume(); method public int getVolumeHandling(); method public int getVolumeMax(); @@ -24048,6 +24049,22 @@ package android.media { field public static final String FEATURE_REMOTE_VIDEO_PLAYBACK = "android.media.route.feature.REMOTE_VIDEO_PLAYBACK"; field public static final int PLAYBACK_VOLUME_FIXED = 0; // 0x0 field public static final int PLAYBACK_VOLUME_VARIABLE = 1; // 0x1 + field public static final int TYPE_BLE_HEADSET = 26; // 0x1a + field public static final int TYPE_BLUETOOTH_A2DP = 8; // 0x8 + field public static final int TYPE_BUILTIN_SPEAKER = 2; // 0x2 + field public static final int TYPE_DOCK = 13; // 0xd + field public static final int TYPE_GROUP = 2000; // 0x7d0 + field public static final int TYPE_HDMI = 9; // 0x9 + field public static final int TYPE_HEARING_AID = 23; // 0x17 + field public static final int TYPE_REMOTE_AUDIO_VIDEO_RECEIVER = 1003; // 0x3eb + field public static final int TYPE_REMOTE_SPEAKER = 1002; // 0x3ea + field public static final int TYPE_REMOTE_TV = 1001; // 0x3e9 + field public static final int TYPE_UNKNOWN = 0; // 0x0 + field public static final int TYPE_USB_ACCESSORY = 12; // 0xc + field public static final int TYPE_USB_DEVICE = 11; // 0xb + field public static final int TYPE_USB_HEADSET = 22; // 0x16 + field public static final int TYPE_WIRED_HEADPHONES = 4; // 0x4 + field public static final int TYPE_WIRED_HEADSET = 3; // 0x3 } public static final class MediaRoute2Info.Builder { @@ -24063,6 +24080,7 @@ package android.media { method @NonNull public android.media.MediaRoute2Info.Builder setDescription(@Nullable CharSequence); method @NonNull public android.media.MediaRoute2Info.Builder setExtras(@Nullable android.os.Bundle); method @NonNull public android.media.MediaRoute2Info.Builder setIconUri(@Nullable android.net.Uri); + method @NonNull public android.media.MediaRoute2Info.Builder setType(int); method @NonNull public android.media.MediaRoute2Info.Builder setVisibilityPublic(); method @NonNull public android.media.MediaRoute2Info.Builder setVisibilityRestricted(@NonNull java.util.Set<java.lang.String>); method @NonNull public android.media.MediaRoute2Info.Builder setVolume(int); diff --git a/media/java/android/media/MediaRoute2Info.java b/media/java/android/media/MediaRoute2Info.java index 28496f135890..c5202dcd4879 100644 --- a/media/java/android/media/MediaRoute2Info.java +++ b/media/java/android/media/MediaRoute2Info.java @@ -108,133 +108,148 @@ public final class MediaRoute2Info implements Parcelable { public static final int PLAYBACK_VOLUME_VARIABLE = 1; /** @hide */ - @IntDef({ - TYPE_UNKNOWN, TYPE_BUILTIN_SPEAKER, TYPE_WIRED_HEADSET, - TYPE_WIRED_HEADPHONES, TYPE_BLUETOOTH_A2DP, TYPE_HDMI, TYPE_USB_DEVICE, - TYPE_USB_ACCESSORY, TYPE_DOCK, TYPE_USB_HEADSET, TYPE_HEARING_AID, TYPE_BLE_HEADSET, - TYPE_REMOTE_TV, TYPE_REMOTE_SPEAKER, TYPE_GROUP}) + @IntDef( + prefix = {"TYPE_"}, + value = { + TYPE_UNKNOWN, + TYPE_BUILTIN_SPEAKER, + TYPE_WIRED_HEADSET, + TYPE_WIRED_HEADPHONES, + TYPE_BLUETOOTH_A2DP, + TYPE_HDMI, + TYPE_USB_DEVICE, + TYPE_USB_ACCESSORY, + TYPE_DOCK, + TYPE_USB_HEADSET, + TYPE_HEARING_AID, + TYPE_BLE_HEADSET, + TYPE_REMOTE_TV, + TYPE_REMOTE_SPEAKER, + TYPE_REMOTE_AUDIO_VIDEO_RECEIVER, + TYPE_GROUP + }) @Retention(RetentionPolicy.SOURCE) public @interface Type {} /** - * The default route type indicating the type is unknown. + * Indicates the route's type is unknown or undefined. * * @see #getType - * @hide */ public static final int TYPE_UNKNOWN = 0; /** - * A route type describing the speaker system (i.e. a mono speaker or stereo speakers) built - * in a device. + * Indicates the route is the speaker system (i.e. a mono speaker or stereo speakers) built into + * the device. * * @see #getType - * @hide */ public static final int TYPE_BUILTIN_SPEAKER = AudioDeviceInfo.TYPE_BUILTIN_SPEAKER; /** - * A route type describing a headset, which is the combination of a headphones and microphone. + * Indicates the route is a headset, which is the combination of a headphones and a microphone. * * @see #getType - * @hide */ public static final int TYPE_WIRED_HEADSET = AudioDeviceInfo.TYPE_WIRED_HEADSET; /** - * A route type describing a pair of wired headphones. + * Indicates the route is a pair of wired headphones. * * @see #getType - * @hide */ public static final int TYPE_WIRED_HEADPHONES = AudioDeviceInfo.TYPE_WIRED_HEADPHONES; /** - * A route type indicating the presentation of the media is happening - * on a bluetooth device such as a bluetooth speaker. + * Indicates the route is a bluetooth device, such as a bluetooth speaker or headphones. * * @see #getType - * @hide */ public static final int TYPE_BLUETOOTH_A2DP = AudioDeviceInfo.TYPE_BLUETOOTH_A2DP; /** - * A route type describing an HDMI connection. + * Indicates the route is an HDMI connection. * * @see #getType - * @hide */ public static final int TYPE_HDMI = AudioDeviceInfo.TYPE_HDMI; /** - * A route type describing a USB audio device. + * Indicates the route is a USB audio device. * * @see #getType - * @hide */ public static final int TYPE_USB_DEVICE = AudioDeviceInfo.TYPE_USB_DEVICE; /** - * A route type describing a USB audio device in accessory mode. + * Indicates the route is a USB audio device in accessory mode. * * @see #getType - * @hide */ public static final int TYPE_USB_ACCESSORY = AudioDeviceInfo.TYPE_USB_ACCESSORY; /** - * A route type describing the audio device associated with a dock. + * Indicates the route is the audio device associated with a dock. * * @see #getType - * @hide */ public static final int TYPE_DOCK = AudioDeviceInfo.TYPE_DOCK; /** - * A device type describing a USB audio headset. + * Indicates the route is a USB audio headset. * * @see #getType - * @hide */ public static final int TYPE_USB_HEADSET = AudioDeviceInfo.TYPE_USB_HEADSET; /** - * A route type describing a Hearing Aid. + * Indicates the route is a hearing aid. * * @see #getType - * @hide */ public static final int TYPE_HEARING_AID = AudioDeviceInfo.TYPE_HEARING_AID; /** - * A route type describing a BLE HEADSET. + * Indicates the route is a Bluetooth Low Energy (BLE) HEADSET. * * @see #getType - * @hide */ public static final int TYPE_BLE_HEADSET = AudioDeviceInfo.TYPE_BLE_HEADSET; /** - * A route type indicating the presentation of the media is happening on a TV. + * Indicates the route is a remote TV. + * + * <p>A remote device uses a routing protocol managed by the application, as opposed to the + * routing being done by the system. * * @see #getType - * @hide */ public static final int TYPE_REMOTE_TV = 1001; /** - * A route type indicating the presentation of the media is happening on a speaker. + * Indicates the route is a remote speaker. + * + * <p>A remote device uses a routing protocol managed by the application, as opposed to the + * routing being done by the system. * * @see #getType - * @hide */ public static final int TYPE_REMOTE_SPEAKER = 1002; /** - * A route type indicating the presentation of the media is happening on multiple devices. + * Indicates the route is a remote Audio/Video Receiver (AVR). + * + * <p>A remote device uses a routing protocol managed by the application, as opposed to the + * routing being done by the system. + * + * @see #getType + */ + public static final int TYPE_REMOTE_AUDIO_VIDEO_RECEIVER = 1003; + + /** + * Indicates the route is a group of devices. * * @see #getType - * @hide */ public static final int TYPE_GROUP = 2000; @@ -436,16 +451,23 @@ public final class MediaRoute2Info implements Parcelable { } /** - * Gets the type of this route. + * Returns the type of this route. * - * @return The type of this route: - * {@link #TYPE_UNKNOWN}, - * {@link #TYPE_BUILTIN_SPEAKER}, {@link #TYPE_WIRED_HEADSET}, {@link #TYPE_WIRED_HEADPHONES}, - * {@link #TYPE_BLUETOOTH_A2DP}, {@link #TYPE_HDMI}, {@link #TYPE_DOCK}, - * {@Link #TYPE_USB_DEVICE}, {@link #TYPE_USB_ACCESSORY}, {@link #TYPE_USB_HEADSET} - * {@link #TYPE_HEARING_AID}, - * {@link #TYPE_REMOTE_TV}, {@link #TYPE_REMOTE_SPEAKER}, {@link #TYPE_GROUP}. - * @hide + * @see #TYPE_UNKNOWN + * @see #TYPE_BUILTIN_SPEAKER + * @see #TYPE_WIRED_HEADSET + * @see #TYPE_WIRED_HEADPHONES + * @see #TYPE_BLUETOOTH_A2DP + * @see #TYPE_HDMI + * @see #TYPE_DOCK + * @see #TYPE_USB_DEVICE + * @see #TYPE_USB_ACCESSORY + * @see #TYPE_USB_HEADSET + * @see #TYPE_HEARING_AID + * @see #TYPE_REMOTE_TV + * @see #TYPE_REMOTE_SPEAKER + * @see #TYPE_REMOTE_AUDIO_VIDEO_RECEIVER + * @see #TYPE_GROUP */ @Type public int getType() { @@ -657,6 +679,7 @@ public final class MediaRoute2Info implements Parcelable { pw.println(indent + "mId=" + mId); pw.println(indent + "mName=" + mName); pw.println(indent + "mFeatures=" + mFeatures); + pw.println(indent + "mType=" + getDeviceTypeString(mType)); pw.println(indent + "mIsSystem=" + mIsSystem); pw.println(indent + "mIconUri=" + mIconUri); pw.println(indent + "mDescription=" + mDescription); @@ -787,6 +810,42 @@ public final class MediaRoute2Info implements Parcelable { dest.writeString8Array(mAllowedPackages.toArray(new String[0])); } + private static String getDeviceTypeString(@Type int deviceType) { + switch (deviceType) { + case TYPE_BUILTIN_SPEAKER: + return "BUILTIN_SPEAKER"; + case TYPE_WIRED_HEADSET: + return "WIRED_HEADSET"; + case TYPE_WIRED_HEADPHONES: + return "WIRED_HEADPHONES"; + case TYPE_BLUETOOTH_A2DP: + return "BLUETOOTH_A2DP"; + case TYPE_HDMI: + return "HDMI"; + case TYPE_DOCK: + return "DOCK"; + case TYPE_USB_DEVICE: + return "USB_DEVICE"; + case TYPE_USB_ACCESSORY: + return "USB_ACCESSORY"; + case TYPE_USB_HEADSET: + return "USB_HEADSET"; + case TYPE_HEARING_AID: + return "HEARING_AID"; + case TYPE_REMOTE_TV: + return "REMOTE_TV"; + case TYPE_REMOTE_SPEAKER: + return "REMOTE_SPEAKER"; + case TYPE_REMOTE_AUDIO_VIDEO_RECEIVER: + return "REMOTE_AUDIO_VIDEO_RECEIVER"; + case TYPE_GROUP: + return "GROUP"; + case TYPE_UNKNOWN: + default: + return TextUtils.formatSimple("UNKNOWN(%d)", deviceType); + } + } + /** * Builder for {@link MediaRoute2Info media route info}. */ @@ -932,7 +991,8 @@ public final class MediaRoute2Info implements Parcelable { /** * Sets the route's type. - * @hide + * + * @see MediaRoute2Info#getType() */ @NonNull public Builder setType(@Type int type) { diff --git a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java index 6fb5555bb50e..c036fdb7982f 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java @@ -73,6 +73,8 @@ public class InfoMediaDevice extends MediaDevice { } @VisibleForTesting + // MediaRoute2Info.getType was made public on API 34, but exists since API 30. + @SuppressWarnings("NewApi") int getDrawableResId() { int resId; switch (mRouteInfo.getType()) { diff --git a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java index a97cbaf03d0b..77e514f7e037 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java @@ -443,6 +443,8 @@ public class InfoMediaManager extends MediaManager { dispatchDeviceListAdded(); } + // MediaRoute2Info.getType was made public on API 34, but exists since API 30. + @SuppressWarnings("NewApi") private void buildAllRoutes() { for (MediaRoute2Info route : mRouterManager.getAllRoutes()) { if (DEBUG) { @@ -462,6 +464,8 @@ public class InfoMediaManager extends MediaManager { return infos; } + // MediaRoute2Info.getType was made public on API 34, but exists since API 30. + @SuppressWarnings("NewApi") private synchronized void buildAvailableRoutes() { for (MediaRoute2Info route : getAvailableRoutes(mPackageName)) { if (DEBUG) { @@ -512,6 +516,8 @@ public class InfoMediaManager extends MediaManager { } } + // MediaRoute2Info.getType was made public on API 34, but exists since API 30. + @SuppressWarnings("NewApi") @VisibleForTesting void addMediaDevice(MediaRoute2Info route) { //TODO(b/258141461): Attach flag and disable reason in MediaDevice diff --git a/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java index 24310801c28b..d24219817ad4 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java @@ -114,6 +114,8 @@ public abstract class MediaDevice implements Comparable<MediaDevice> { setType(info); } + // MediaRoute2Info.getType was made public on API 34, but exists since API 30. + @SuppressWarnings("NewApi") private void setType(MediaRoute2Info info) { if (info == null) { mType = MediaDeviceType.TYPE_BLUETOOTH_DEVICE; @@ -335,6 +337,8 @@ public abstract class MediaDevice implements Comparable<MediaDevice> { * * @return true if the RouteInfo equals TYPE_BLE_HEADSET. */ + // MediaRoute2Info.getType was made public on API 34, but exists since API 30. + @SuppressWarnings("NewApi") public boolean isBLEDevice() { return mRouteInfo.getType() == TYPE_BLE_HEADSET; } diff --git a/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java index de16d4add0ea..1c82be9c801f 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java @@ -56,6 +56,8 @@ public class PhoneMediaDevice extends MediaDevice { initDeviceRecord(); } + // MediaRoute2Info.getType was made public on API 34, but exists since API 30. + @SuppressWarnings("NewApi") @Override public String getName() { CharSequence name; @@ -94,11 +96,15 @@ public class PhoneMediaDevice extends MediaDevice { return mContext.getDrawable(getDrawableResId()); } + // MediaRoute2Info.getType was made public on API 34, but exists since API 30. + @SuppressWarnings("NewApi") @VisibleForTesting int getDrawableResId() { return mDeviceIconUtil.getIconResIdFromMediaRouteType(mRouteInfo.getType()); } + // MediaRoute2Info.getType was made public on API 34, but exists since API 30. + @SuppressWarnings("NewApi") @Override public String getId() { String id; |