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

Commit 2c2f658f authored by Yiyi Shen's avatar Yiyi Shen
Browse files

[OutputSwitcher] Support release system session (P2)

Impl getReleaseType and releaseSession

Test: atest
Bug: 385672684
Flag: com.android.media.flags.enable_output_switcher_personal_audio_sharing
Change-Id: I9a88ac91e4d003446d509e40f0395cd5dda6306c
parent d0036ce5
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -249,13 +249,16 @@ import java.util.concurrent.CopyOnWriteArrayList;

    @Override
    public @RoutingSessionInfo.ReleaseType int getSessionReleaseType() {
        // TODO(b/385672684): impl get session release type
        return RoutingSessionInfo.RELEASE_UNSUPPORTED;
        return currentOutputIsBLEBroadcast()
                ? RoutingSessionInfo.RELEASE_TYPE_SHARING
                : RoutingSessionInfo.RELEASE_UNSUPPORTED;
    }

    @Override
    public void releaseRoutingSession() {
        // TODO(b/385672684): impl release system session
        if (currentOutputIsBLEBroadcast()) {
            mBluetoothRouteController.stopBroadcast();
        }
    }

    @Override
+23 −0
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ import android.media.AudioDevicePort;
import android.media.AudioManager;
import android.media.AudioSystem;
import android.media.MediaRoute2Info;
import android.media.RoutingSessionInfo;
import android.media.audiopolicy.AudioProductStrategy;
import android.os.Looper;
import android.os.UserHandle;
@@ -362,6 +363,28 @@ public class AudioManagerRouteControllerTest {
                .isEqualTo(FAKE_AUDIO_DEVICE_INFO_WIRED_HEADSET.getProductName().toString());
    }

    @Test
    public void getSessionReleaseType_returnTypeSharing() {
        when(mMockAudioManager.getDevicesForAttributes(ATTRIBUTES_MEDIA))
                .thenReturn(
                        List.of(
                                createAudioDeviceAttribute(
                                        AudioDeviceInfo.TYPE_BLE_BROADCAST, /* address= */ "")));
        assertThat(mControllerUnderTest.getSessionReleaseType())
                .isEqualTo(RoutingSessionInfo.RELEASE_TYPE_SHARING);
    }

    @Test
    public void getSessionReleaseType_returnTypeUnsupported() {
        when(mMockAudioManager.getDevicesForAttributes(ATTRIBUTES_MEDIA))
                .thenReturn(
                        List.of(
                                createAudioDeviceAttribute(
                                        AudioDeviceInfo.TYPE_WIRED_HEADSET, /* address= */ "")));
        assertThat(mControllerUnderTest.getSessionReleaseType())
                .isEqualTo(RoutingSessionInfo.RELEASE_UNSUPPORTED);
    }

    // Internal methods.

    @NonNull