Loading packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +13 −0 Original line number Diff line number Diff line Loading @@ -249,6 +249,15 @@ public class InfoMediaManager extends MediaManager { return deviceList; } void adjustSessionVolume(RoutingSessionInfo info, int volume) { if (info == null) { Log.w(TAG, "Unable to adjust session volume. RoutingSessionInfo is empty"); return; } mRouterManager.setSessionVolume(info, volume); } /** * Adjust the volume of {@link android.media.RoutingSessionInfo}. * Loading Loading @@ -352,6 +361,10 @@ public class InfoMediaManager extends MediaManager { } } List<RoutingSessionInfo> getActiveMediaSession() { return mRouterManager.getActiveSessions(); } private void buildAvailableRoutes() { for (MediaRoute2Info route : mRouterManager.getAvailableRoutes(mPackageName)) { if (DEBUG) { Loading packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java +27 −16 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothProfile; import android.content.Context; import android.media.RoutingSessionInfo; import android.text.TextUtils; import android.util.Log; Loading Loading @@ -255,22 +256,6 @@ public class LocalMediaManager implements BluetoothCallback { return mCurrentConnectedDevice; } /** * Find the active MediaDevice. * * @param type the media device type. * @return MediaDevice list */ public List<MediaDevice> getActiveMediaDevice(@MediaDevice.MediaDeviceType int type) { final List<MediaDevice> devices = new ArrayList<>(); for (MediaDevice device : mMediaDevices) { if (type == device.mType && device.getClientPackageName() != null) { devices.add(device); } } return devices; } /** * Add a MediaDevice to let it play current media. * Loading Loading @@ -316,6 +301,23 @@ public class LocalMediaManager implements BluetoothCallback { return mInfoMediaManager.getSelectedMediaDevice(); } /** * Adjust the volume of session. * * @param sessionId the value of media session id * @param volume the value of volume */ public void adjustSessionVolume(String sessionId, int volume) { final List<RoutingSessionInfo> infos = getActiveMediaSession(); for (RoutingSessionInfo info : infos) { if (TextUtils.equals(sessionId, info.getId())) { mInfoMediaManager.adjustSessionVolume(info, volume); return; } } Log.w(TAG, "adjustSessionVolume: Unable to find session: " + sessionId); } /** * Adjust the volume of session. * Loading Loading @@ -352,6 +354,15 @@ public class LocalMediaManager implements BluetoothCallback { return mInfoMediaManager.getSessionName(); } /** * Gets the current active session. * * @return current active session list{@link android.media.RoutingSessionInfo} */ public List<RoutingSessionInfo> getActiveMediaSession() { return mInfoMediaManager.getActiveMediaSession(); } private MediaDevice updateCurrentConnectedDevice() { MediaDevice phoneMediaDevice = null; for (MediaDevice device : mMediaDevices) { Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java +13 −0 Original line number Diff line number Diff line Loading @@ -415,6 +415,11 @@ public class InfoMediaManagerTest { assertThat(mInfoMediaManager.getSelectableMediaDevice()).isEmpty(); } @Test public void adjustSessionVolume_routingSessionInfoIsNull_noCrash() { mInfoMediaManager.adjustSessionVolume(null, 10); } @Test public void adjustSessionVolume_packageNameIsNull_noCrash() { mInfoMediaManager.mPackageName = null; Loading Loading @@ -486,6 +491,14 @@ public class InfoMediaManagerTest { assertThat(mInfoMediaManager.getSessionVolume()).isEqualTo(-1); } @Test public void getActiveMediaSession_returnActiveSession() { final List<RoutingSessionInfo> infos = new ArrayList<>(); mShadowRouter2Manager.setActiveSessions(infos); assertThat(mInfoMediaManager.getActiveMediaSession()).containsExactlyElementsIn(infos); } @Test public void releaseSession_packageNameIsNull_returnFalse() { mInfoMediaManager.mPackageName = null; Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java +26 −33 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.bluetooth.BluetoothDevice; import android.content.Context; import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; import android.media.RoutingSessionInfo; import com.android.settingslib.bluetooth.A2dpProfile; import com.android.settingslib.bluetooth.CachedBluetoothDevice; Loading Loading @@ -67,6 +68,7 @@ public class LocalMediaManagerTest { private static final String TEST_DEVICE_ID_3 = "device_id_3"; private static final String TEST_CURRENT_DEVICE_ID = "currentDevice_id"; private static final String TEST_PACKAGE_NAME = "com.test.playmusic"; private static final String TEST_SESSION_ID = "session_id"; @Mock private InfoMediaManager mInfoMediaManager; Loading Loading @@ -526,46 +528,24 @@ public class LocalMediaManagerTest { } @Test public void getActiveMediaDevice_checkList() { final List<MediaDevice> devices = new ArrayList<>(); final MediaDevice device1 = mock(MediaDevice.class); final MediaDevice device2 = mock(MediaDevice.class); final MediaDevice device3 = mock(MediaDevice.class); device1.mType = MediaDevice.MediaDeviceType.TYPE_PHONE_DEVICE; device2.mType = MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE; device3.mType = MediaDevice.MediaDeviceType.TYPE_BLUETOOTH_DEVICE; when(device1.getClientPackageName()).thenReturn(TEST_DEVICE_ID_1); when(device2.getClientPackageName()).thenReturn(TEST_DEVICE_ID_2); when(device3.getClientPackageName()).thenReturn(TEST_DEVICE_ID_3); when(device1.getId()).thenReturn(TEST_DEVICE_ID_1); when(device2.getId()).thenReturn(TEST_DEVICE_ID_2); when(device3.getId()).thenReturn(TEST_DEVICE_ID_3); devices.add(device1); devices.add(device2); devices.add(device3); public void onDeviceAttributesChanged_shouldBeCalled() { mLocalMediaManager.registerCallback(mCallback); mLocalMediaManager.mMediaDeviceCallback.onDeviceListAdded(devices); List<MediaDevice> activeDevices = mLocalMediaManager.getActiveMediaDevice( MediaDevice.MediaDeviceType.TYPE_PHONE_DEVICE); assertThat(activeDevices).containsExactly(device1); activeDevices = mLocalMediaManager.getActiveMediaDevice( MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE); assertThat(activeDevices).containsExactly(device2); mLocalMediaManager.mDeviceAttributeChangeCallback.onDeviceAttributesChanged(); activeDevices = mLocalMediaManager.getActiveMediaDevice( MediaDevice.MediaDeviceType.TYPE_BLUETOOTH_DEVICE); assertThat(activeDevices).containsExactly(device3); verify(mCallback).onDeviceAttributesChanged(); } @Test public void onDeviceAttributesChanged_shouldBeCalled() { mLocalMediaManager.registerCallback(mCallback); mLocalMediaManager.mDeviceAttributeChangeCallback.onDeviceAttributesChanged(); public void getActiveMediaSession_verifyCorrectSession() { final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>(); final RoutingSessionInfo info = mock(RoutingSessionInfo.class); when(info.getId()).thenReturn(TEST_SESSION_ID); routingSessionInfos.add(info); when(mInfoMediaManager.getActiveMediaSession()).thenReturn(routingSessionInfos); verify(mCallback).onDeviceAttributesChanged(); assertThat(mLocalMediaManager.getActiveMediaSession().get(0).getId()) .matches(TEST_SESSION_ID); } @Test Loading Loading @@ -721,4 +701,17 @@ public class LocalMediaManagerTest { assertThat(mLocalMediaManager.mMediaDevices).hasSize(2); verify(mCallback).onDeviceListUpdate(any()); } @Test public void adjustSessionVolume_verifyCorrectSessionVolume() { final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>(); final RoutingSessionInfo info = mock(RoutingSessionInfo.class); when(info.getId()).thenReturn(TEST_SESSION_ID); routingSessionInfos.add(info); when(mInfoMediaManager.getActiveMediaSession()).thenReturn(routingSessionInfos); mLocalMediaManager.adjustSessionVolume(TEST_SESSION_ID, 10); verify(mInfoMediaManager).adjustSessionVolume(info, 10); } } Loading
packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +13 −0 Original line number Diff line number Diff line Loading @@ -249,6 +249,15 @@ public class InfoMediaManager extends MediaManager { return deviceList; } void adjustSessionVolume(RoutingSessionInfo info, int volume) { if (info == null) { Log.w(TAG, "Unable to adjust session volume. RoutingSessionInfo is empty"); return; } mRouterManager.setSessionVolume(info, volume); } /** * Adjust the volume of {@link android.media.RoutingSessionInfo}. * Loading Loading @@ -352,6 +361,10 @@ public class InfoMediaManager extends MediaManager { } } List<RoutingSessionInfo> getActiveMediaSession() { return mRouterManager.getActiveSessions(); } private void buildAvailableRoutes() { for (MediaRoute2Info route : mRouterManager.getAvailableRoutes(mPackageName)) { if (DEBUG) { Loading
packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java +27 −16 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothProfile; import android.content.Context; import android.media.RoutingSessionInfo; import android.text.TextUtils; import android.util.Log; Loading Loading @@ -255,22 +256,6 @@ public class LocalMediaManager implements BluetoothCallback { return mCurrentConnectedDevice; } /** * Find the active MediaDevice. * * @param type the media device type. * @return MediaDevice list */ public List<MediaDevice> getActiveMediaDevice(@MediaDevice.MediaDeviceType int type) { final List<MediaDevice> devices = new ArrayList<>(); for (MediaDevice device : mMediaDevices) { if (type == device.mType && device.getClientPackageName() != null) { devices.add(device); } } return devices; } /** * Add a MediaDevice to let it play current media. * Loading Loading @@ -316,6 +301,23 @@ public class LocalMediaManager implements BluetoothCallback { return mInfoMediaManager.getSelectedMediaDevice(); } /** * Adjust the volume of session. * * @param sessionId the value of media session id * @param volume the value of volume */ public void adjustSessionVolume(String sessionId, int volume) { final List<RoutingSessionInfo> infos = getActiveMediaSession(); for (RoutingSessionInfo info : infos) { if (TextUtils.equals(sessionId, info.getId())) { mInfoMediaManager.adjustSessionVolume(info, volume); return; } } Log.w(TAG, "adjustSessionVolume: Unable to find session: " + sessionId); } /** * Adjust the volume of session. * Loading Loading @@ -352,6 +354,15 @@ public class LocalMediaManager implements BluetoothCallback { return mInfoMediaManager.getSessionName(); } /** * Gets the current active session. * * @return current active session list{@link android.media.RoutingSessionInfo} */ public List<RoutingSessionInfo> getActiveMediaSession() { return mInfoMediaManager.getActiveMediaSession(); } private MediaDevice updateCurrentConnectedDevice() { MediaDevice phoneMediaDevice = null; for (MediaDevice device : mMediaDevices) { Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java +13 −0 Original line number Diff line number Diff line Loading @@ -415,6 +415,11 @@ public class InfoMediaManagerTest { assertThat(mInfoMediaManager.getSelectableMediaDevice()).isEmpty(); } @Test public void adjustSessionVolume_routingSessionInfoIsNull_noCrash() { mInfoMediaManager.adjustSessionVolume(null, 10); } @Test public void adjustSessionVolume_packageNameIsNull_noCrash() { mInfoMediaManager.mPackageName = null; Loading Loading @@ -486,6 +491,14 @@ public class InfoMediaManagerTest { assertThat(mInfoMediaManager.getSessionVolume()).isEqualTo(-1); } @Test public void getActiveMediaSession_returnActiveSession() { final List<RoutingSessionInfo> infos = new ArrayList<>(); mShadowRouter2Manager.setActiveSessions(infos); assertThat(mInfoMediaManager.getActiveMediaSession()).containsExactlyElementsIn(infos); } @Test public void releaseSession_packageNameIsNull_returnFalse() { mInfoMediaManager.mPackageName = null; Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java +26 −33 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.bluetooth.BluetoothDevice; import android.content.Context; import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; import android.media.RoutingSessionInfo; import com.android.settingslib.bluetooth.A2dpProfile; import com.android.settingslib.bluetooth.CachedBluetoothDevice; Loading Loading @@ -67,6 +68,7 @@ public class LocalMediaManagerTest { private static final String TEST_DEVICE_ID_3 = "device_id_3"; private static final String TEST_CURRENT_DEVICE_ID = "currentDevice_id"; private static final String TEST_PACKAGE_NAME = "com.test.playmusic"; private static final String TEST_SESSION_ID = "session_id"; @Mock private InfoMediaManager mInfoMediaManager; Loading Loading @@ -526,46 +528,24 @@ public class LocalMediaManagerTest { } @Test public void getActiveMediaDevice_checkList() { final List<MediaDevice> devices = new ArrayList<>(); final MediaDevice device1 = mock(MediaDevice.class); final MediaDevice device2 = mock(MediaDevice.class); final MediaDevice device3 = mock(MediaDevice.class); device1.mType = MediaDevice.MediaDeviceType.TYPE_PHONE_DEVICE; device2.mType = MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE; device3.mType = MediaDevice.MediaDeviceType.TYPE_BLUETOOTH_DEVICE; when(device1.getClientPackageName()).thenReturn(TEST_DEVICE_ID_1); when(device2.getClientPackageName()).thenReturn(TEST_DEVICE_ID_2); when(device3.getClientPackageName()).thenReturn(TEST_DEVICE_ID_3); when(device1.getId()).thenReturn(TEST_DEVICE_ID_1); when(device2.getId()).thenReturn(TEST_DEVICE_ID_2); when(device3.getId()).thenReturn(TEST_DEVICE_ID_3); devices.add(device1); devices.add(device2); devices.add(device3); public void onDeviceAttributesChanged_shouldBeCalled() { mLocalMediaManager.registerCallback(mCallback); mLocalMediaManager.mMediaDeviceCallback.onDeviceListAdded(devices); List<MediaDevice> activeDevices = mLocalMediaManager.getActiveMediaDevice( MediaDevice.MediaDeviceType.TYPE_PHONE_DEVICE); assertThat(activeDevices).containsExactly(device1); activeDevices = mLocalMediaManager.getActiveMediaDevice( MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE); assertThat(activeDevices).containsExactly(device2); mLocalMediaManager.mDeviceAttributeChangeCallback.onDeviceAttributesChanged(); activeDevices = mLocalMediaManager.getActiveMediaDevice( MediaDevice.MediaDeviceType.TYPE_BLUETOOTH_DEVICE); assertThat(activeDevices).containsExactly(device3); verify(mCallback).onDeviceAttributesChanged(); } @Test public void onDeviceAttributesChanged_shouldBeCalled() { mLocalMediaManager.registerCallback(mCallback); mLocalMediaManager.mDeviceAttributeChangeCallback.onDeviceAttributesChanged(); public void getActiveMediaSession_verifyCorrectSession() { final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>(); final RoutingSessionInfo info = mock(RoutingSessionInfo.class); when(info.getId()).thenReturn(TEST_SESSION_ID); routingSessionInfos.add(info); when(mInfoMediaManager.getActiveMediaSession()).thenReturn(routingSessionInfos); verify(mCallback).onDeviceAttributesChanged(); assertThat(mLocalMediaManager.getActiveMediaSession().get(0).getId()) .matches(TEST_SESSION_ID); } @Test Loading Loading @@ -721,4 +701,17 @@ public class LocalMediaManagerTest { assertThat(mLocalMediaManager.mMediaDevices).hasSize(2); verify(mCallback).onDeviceListUpdate(any()); } @Test public void adjustSessionVolume_verifyCorrectSessionVolume() { final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>(); final RoutingSessionInfo info = mock(RoutingSessionInfo.class); when(info.getId()).thenReturn(TEST_SESSION_ID); routingSessionInfos.add(info); when(mInfoMediaManager.getActiveMediaSession()).thenReturn(routingSessionInfos); mLocalMediaManager.adjustSessionVolume(TEST_SESSION_ID, 10); verify(mInfoMediaManager).adjustSessionVolume(info, 10); } }