Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 25290b37 authored by Bishoy Gendy's avatar Bishoy Gendy
Browse files

Add HDMI (e)ARC types to MediaRoute2Info.

Bug: 304366344
Test: atest AudioDeviceInfoTest MediaRouter2HostSideTest CtsMediaBetterTogetherTestCases
Change-Id: Ifb3346dfefc24cfb1d2e95b1cc31feacfc49dd04
parent 94557acd
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -23775,6 +23775,8 @@ package android.media {
    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 @FlaggedApi("com.android.media.flags.enable_audio_policies_device_and_bluetooth_controller") public static final int TYPE_HDMI_ARC = 10; // 0xa
    field @FlaggedApi("com.android.media.flags.enable_audio_policies_device_and_bluetooth_controller") public static final int TYPE_HDMI_EARC = 29; // 0x1d
    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_CAR = 1008; // 0x3f0
+25 −0
Original line number Diff line number Diff line
@@ -18,6 +18,9 @@ package android.media;

import static android.media.MediaRouter2Utils.toUniqueId;

import static com.android.media.flags.Flags.FLAG_ENABLE_AUDIO_POLICIES_DEVICE_AND_BLUETOOTH_CONTROLLER;

import android.annotation.FlaggedApi;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -141,6 +144,8 @@ public final class MediaRoute2Info implements Parcelable {
                TYPE_WIRED_HEADPHONES,
                TYPE_BLUETOOTH_A2DP,
                TYPE_HDMI,
                TYPE_HDMI_ARC,
                TYPE_HDMI_EARC,
                TYPE_USB_DEVICE,
                TYPE_USB_ACCESSORY,
                TYPE_DOCK,
@@ -205,6 +210,22 @@ public final class MediaRoute2Info implements Parcelable {
     */
    public static final int TYPE_HDMI = AudioDeviceInfo.TYPE_HDMI;

    /**
     * Indicates the route is an Audio Return Channel of an HDMI connection.
     *
     * @see #getType
     */
    @FlaggedApi(FLAG_ENABLE_AUDIO_POLICIES_DEVICE_AND_BLUETOOTH_CONTROLLER)
    public static final int TYPE_HDMI_ARC = AudioDeviceInfo.TYPE_HDMI_ARC;

    /**
     * Indicates the route is an Enhanced Audio Return Channel of an HDMI connection.
     *
     * @see #getType
     */
    @FlaggedApi(FLAG_ENABLE_AUDIO_POLICIES_DEVICE_AND_BLUETOOTH_CONTROLLER)
    public static final int TYPE_HDMI_EARC = AudioDeviceInfo.TYPE_HDMI_EARC;

    /**
     * Indicates the route is a USB audio device.
     *
@@ -907,6 +928,10 @@ public final class MediaRoute2Info implements Parcelable {
                return "BLUETOOTH_A2DP";
            case TYPE_HDMI:
                return "HDMI";
            case TYPE_HDMI_ARC:
                return "HDMI_ARC";
            case TYPE_HDMI_EARC:
                return "HDMI_EARC";
            case TYPE_DOCK:
                return "DOCK";
            case TYPE_USB_DEVICE:
+44 −33
Original line number Diff line number Diff line
@@ -39,7 +39,8 @@ public class DeviceIconUtil {
    @DrawableRes private static final int DEFAULT_ICON = R.drawable.ic_smartphone;

    public DeviceIconUtil() {
        List<Device> deviceList = Arrays.asList(
        List<Device> deviceList =
                Arrays.asList(
                        new Device(
                                AudioDeviceInfo.TYPE_USB_DEVICE,
                                MediaRoute2Info.TYPE_USB_DEVICE,
@@ -60,6 +61,16 @@ public class DeviceIconUtil {
                                AudioDeviceInfo.TYPE_HDMI,
                                MediaRoute2Info.TYPE_HDMI,
                                R.drawable.ic_headphone),
                        // TODO: b/306359110 - Put proper iconography for HDMI_ARC type.
                        new Device(
                                AudioDeviceInfo.TYPE_HDMI_ARC,
                                MediaRoute2Info.TYPE_HDMI_ARC,
                                R.drawable.ic_headphone),
                        // TODO: b/306359110 - Put proper iconography for HDMI_EARC type.
                        new Device(
                                AudioDeviceInfo.TYPE_HDMI_EARC,
                                MediaRoute2Info.TYPE_HDMI_EARC,
                                R.drawable.ic_headphone),
                        new Device(
                                AudioDeviceInfo.TYPE_WIRED_HEADSET,
                                MediaRoute2Info.TYPE_WIRED_HEADSET,
+5 −1
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@ import static android.media.MediaRoute2Info.TYPE_BUILTIN_SPEAKER;
import static android.media.MediaRoute2Info.TYPE_DOCK;
import static android.media.MediaRoute2Info.TYPE_GROUP;
import static android.media.MediaRoute2Info.TYPE_HDMI;
import static android.media.MediaRoute2Info.TYPE_HDMI_ARC;
import static android.media.MediaRoute2Info.TYPE_HDMI_EARC;
import static android.media.MediaRoute2Info.TYPE_HEARING_AID;
import static android.media.MediaRoute2Info.TYPE_REMOTE_AUDIO_VIDEO_RECEIVER;
import static android.media.MediaRoute2Info.TYPE_REMOTE_CAR;
@@ -635,6 +637,8 @@ public abstract class InfoMediaManager extends MediaManager {
            case TYPE_USB_ACCESSORY:
            case TYPE_DOCK:
            case TYPE_HDMI:
            case TYPE_HDMI_ARC:
            case TYPE_HDMI_EARC:
            case TYPE_WIRED_HEADSET:
            case TYPE_WIRED_HEADPHONES:
                mediaDevice =
@@ -671,8 +675,8 @@ public abstract class InfoMediaManager extends MediaManager {
            default:
                Log.w(TAG, "addMediaDevice() unknown device type : " + deviceType);
                break;

        }

        if (mediaDevice != null && !TextUtils.isEmpty(mPackageName)
                && getRoutingSessionInfo().getSelectedRoutes().contains(route.getId())) {
            mediaDevice.setState(STATE_SELECTED);
+4 −1
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@ import static android.media.MediaRoute2Info.TYPE_BUILTIN_SPEAKER;
import static android.media.MediaRoute2Info.TYPE_DOCK;
import static android.media.MediaRoute2Info.TYPE_GROUP;
import static android.media.MediaRoute2Info.TYPE_HDMI;
import static android.media.MediaRoute2Info.TYPE_HDMI_ARC;
import static android.media.MediaRoute2Info.TYPE_HDMI_EARC;
import static android.media.MediaRoute2Info.TYPE_HEARING_AID;
import static android.media.MediaRoute2Info.TYPE_REMOTE_AUDIO_VIDEO_RECEIVER;
import static android.media.MediaRoute2Info.TYPE_REMOTE_SPEAKER;
@@ -140,7 +142,6 @@ public abstract class MediaDevice implements Comparable<MediaDevice> {
            mType = MediaDeviceType.TYPE_BLUETOOTH_DEVICE;
            return;
        }

        switch (info.getType()) {
            case TYPE_GROUP:
                mType = MediaDeviceType.TYPE_CAST_GROUP_DEVICE;
@@ -157,6 +158,8 @@ public abstract class MediaDevice implements Comparable<MediaDevice> {
            case TYPE_USB_ACCESSORY:
            case TYPE_DOCK:
            case TYPE_HDMI:
            case TYPE_HDMI_ARC:
            case TYPE_HDMI_EARC:
                mType = MediaDeviceType.TYPE_USB_C_AUDIO_DEVICE;
                break;
            case TYPE_HEARING_AID:
Loading