Loading src/com/android/settings/sound/MediaOutputPreferenceController.java +26 −5 Original line number Diff line number Diff line Loading @@ -41,6 +41,8 @@ import com.android.settingslib.bluetooth.A2dpProfile; import com.android.settingslib.bluetooth.HearingAidProfile; import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast; import com.android.settingslib.bluetooth.LocalBluetoothManager; import com.android.settingslib.media.LocalMediaManager; import com.android.settingslib.media.MediaDevice; import com.android.settingslib.media.MediaOutputConstants; import com.android.settingslib.media.PhoneMediaDevice; Loading @@ -54,11 +56,13 @@ import java.util.List; * - Media stream captured by remote device * - During a call. */ public class MediaOutputPreferenceController extends AudioSwitchPreferenceController { public class MediaOutputPreferenceController extends AudioSwitchPreferenceController implements LocalMediaManager.DeviceCallback { private static final String TAG = "MediaOutputPreferenceController"; @Nullable private MediaController mMediaController; private MediaSessionManager mMediaSessionManager; @Nullable LocalMediaManager mLocalMediaManager; @Nullable private LocalBluetoothLeBroadcast mLocalBluetoothLeBroadcast; Loading Loading @@ -105,6 +109,7 @@ public class MediaOutputPreferenceController extends AudioSwitchPreferenceContro super(context, key); mMediaSessionManager = context.getSystemService(MediaSessionManager.class); mMediaController = MediaOutputUtils.getActiveLocalMediaController(mMediaSessionManager); mLocalMediaManager = new LocalMediaManager(mContext, /* packageName= */ null); LocalBluetoothManager localBluetoothManager = com.android.settings.bluetooth.Utils.getLocalBtManager(mContext); if (localBluetoothManager != null) { Loading @@ -120,6 +125,9 @@ public class MediaOutputPreferenceController extends AudioSwitchPreferenceContro mLocalBluetoothLeBroadcast.registerServiceCallBack( mContext.getMainExecutor(), mBroadcastCallback); } if (mLocalMediaManager != null) { mLocalMediaManager.registerCallback(this); } } @Override Loading @@ -128,6 +136,9 @@ public class MediaOutputPreferenceController extends AudioSwitchPreferenceContro if (mLocalBluetoothLeBroadcast != null) { mLocalBluetoothLeBroadcast.unregisterServiceCallBack(mBroadcastCallback); } if (mLocalMediaManager != null) { mLocalMediaManager.unregisterCallback(this); } } @Override Loading @@ -144,6 +155,11 @@ public class MediaOutputPreferenceController extends AudioSwitchPreferenceContro && (enableOutputSwitcherForSystemRouting() ? true : mMediaController != null)); } @Override public void onSelectedDeviceStateChanged(MediaDevice device, int state) { updateState(mPreference); } @Override public void updateState(Preference preference) { if (preference == null) { Loading Loading @@ -196,6 +212,10 @@ public class MediaOutputPreferenceController extends AudioSwitchPreferenceContro if (!enableOutputSwitcherPersonalAudioSharing()) { mPreference.setEnabled(false); } } else { if (mLocalMediaManager != null && mLocalMediaManager.getCurrentConnectedDevice() != null) { mPreference.setSummary(mLocalMediaManager.getCurrentConnectedDevice().getName()); } else { mPreference.setSummary( (activeDevice == null) Loading @@ -203,6 +223,7 @@ public class MediaOutputPreferenceController extends AudioSwitchPreferenceContro : activeDevice.getAlias()); } } } @Override public BluetoothDevice findActiveDevice() { Loading tests/robotests/src/com/android/settings/sound/MediaOutputPreferenceControllerTest.java +10 −1 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ import androidx.preference.PreferenceScreen; import com.android.media.flags.Flags; import com.android.settings.R; import com.android.settings.bluetooth.Utils; import com.android.settings.connecteddevice.audiosharing.audiostreams.testshadows.ShadowLocalMediaManager; import com.android.settings.testutils.shadow.ShadowAudioManager; import com.android.settings.testutils.shadow.ShadowBluetoothUtils; import com.android.settingslib.bluetooth.A2dpProfile; Loading @@ -73,6 +74,7 @@ import com.android.settingslib.bluetooth.LeAudioProfile; import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast; import com.android.settingslib.bluetooth.LocalBluetoothManager; import com.android.settingslib.bluetooth.LocalBluetoothProfileManager; import com.android.settingslib.media.LocalMediaManager; import com.android.settingslib.media.MediaOutputConstants; import org.junit.After; Loading @@ -98,7 +100,8 @@ import java.util.List; @Config(shadows = { ShadowAudioManager.class, ShadowBluetoothUtils.class, ShadowBluetoothDevice.class} ShadowBluetoothDevice.class, ShadowLocalMediaManager.class } ) public class MediaOutputPreferenceControllerTest { private static final String TEST_KEY = "Test_Key"; Loading @@ -123,6 +126,8 @@ public class MediaOutputPreferenceControllerTest { @Mock private LocalBluetoothManager mLocalManager; @Mock private LocalMediaManager mLocalMediaManager; @Mock private BluetoothEventManager mBluetoothEventManager; @Mock private LocalBluetoothProfileManager mLocalBluetoothProfileManager; Loading Loading @@ -236,6 +241,9 @@ public class MediaOutputPreferenceControllerTest { when(mRightBluetoothHapDevice.isConnected()).thenReturn(true); mController = new MediaOutputPreferenceController(mContext, TEST_KEY); ShadowLocalMediaManager.setUseMock(mLocalMediaManager); mController.mLocalMediaManager = mLocalMediaManager; when(mLocalMediaManager.getCurrentConnectedDevice()).thenReturn(null); mScreen = spy(new PreferenceScreen(mContext, null)); mPreference = new Preference(mContext); mProfileConnectedDevices = new ArrayList<>(); Loading @@ -253,6 +261,7 @@ public class MediaOutputPreferenceControllerTest { @After public void tearDown() { ShadowBluetoothUtils.reset(); ShadowLocalMediaManager.reset(); } /** Start broadcasting so Preference summary should become "Audio Sharing" and disabled */ Loading Loading
src/com/android/settings/sound/MediaOutputPreferenceController.java +26 −5 Original line number Diff line number Diff line Loading @@ -41,6 +41,8 @@ import com.android.settingslib.bluetooth.A2dpProfile; import com.android.settingslib.bluetooth.HearingAidProfile; import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast; import com.android.settingslib.bluetooth.LocalBluetoothManager; import com.android.settingslib.media.LocalMediaManager; import com.android.settingslib.media.MediaDevice; import com.android.settingslib.media.MediaOutputConstants; import com.android.settingslib.media.PhoneMediaDevice; Loading @@ -54,11 +56,13 @@ import java.util.List; * - Media stream captured by remote device * - During a call. */ public class MediaOutputPreferenceController extends AudioSwitchPreferenceController { public class MediaOutputPreferenceController extends AudioSwitchPreferenceController implements LocalMediaManager.DeviceCallback { private static final String TAG = "MediaOutputPreferenceController"; @Nullable private MediaController mMediaController; private MediaSessionManager mMediaSessionManager; @Nullable LocalMediaManager mLocalMediaManager; @Nullable private LocalBluetoothLeBroadcast mLocalBluetoothLeBroadcast; Loading Loading @@ -105,6 +109,7 @@ public class MediaOutputPreferenceController extends AudioSwitchPreferenceContro super(context, key); mMediaSessionManager = context.getSystemService(MediaSessionManager.class); mMediaController = MediaOutputUtils.getActiveLocalMediaController(mMediaSessionManager); mLocalMediaManager = new LocalMediaManager(mContext, /* packageName= */ null); LocalBluetoothManager localBluetoothManager = com.android.settings.bluetooth.Utils.getLocalBtManager(mContext); if (localBluetoothManager != null) { Loading @@ -120,6 +125,9 @@ public class MediaOutputPreferenceController extends AudioSwitchPreferenceContro mLocalBluetoothLeBroadcast.registerServiceCallBack( mContext.getMainExecutor(), mBroadcastCallback); } if (mLocalMediaManager != null) { mLocalMediaManager.registerCallback(this); } } @Override Loading @@ -128,6 +136,9 @@ public class MediaOutputPreferenceController extends AudioSwitchPreferenceContro if (mLocalBluetoothLeBroadcast != null) { mLocalBluetoothLeBroadcast.unregisterServiceCallBack(mBroadcastCallback); } if (mLocalMediaManager != null) { mLocalMediaManager.unregisterCallback(this); } } @Override Loading @@ -144,6 +155,11 @@ public class MediaOutputPreferenceController extends AudioSwitchPreferenceContro && (enableOutputSwitcherForSystemRouting() ? true : mMediaController != null)); } @Override public void onSelectedDeviceStateChanged(MediaDevice device, int state) { updateState(mPreference); } @Override public void updateState(Preference preference) { if (preference == null) { Loading Loading @@ -196,6 +212,10 @@ public class MediaOutputPreferenceController extends AudioSwitchPreferenceContro if (!enableOutputSwitcherPersonalAudioSharing()) { mPreference.setEnabled(false); } } else { if (mLocalMediaManager != null && mLocalMediaManager.getCurrentConnectedDevice() != null) { mPreference.setSummary(mLocalMediaManager.getCurrentConnectedDevice().getName()); } else { mPreference.setSummary( (activeDevice == null) Loading @@ -203,6 +223,7 @@ public class MediaOutputPreferenceController extends AudioSwitchPreferenceContro : activeDevice.getAlias()); } } } @Override public BluetoothDevice findActiveDevice() { Loading
tests/robotests/src/com/android/settings/sound/MediaOutputPreferenceControllerTest.java +10 −1 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ import androidx.preference.PreferenceScreen; import com.android.media.flags.Flags; import com.android.settings.R; import com.android.settings.bluetooth.Utils; import com.android.settings.connecteddevice.audiosharing.audiostreams.testshadows.ShadowLocalMediaManager; import com.android.settings.testutils.shadow.ShadowAudioManager; import com.android.settings.testutils.shadow.ShadowBluetoothUtils; import com.android.settingslib.bluetooth.A2dpProfile; Loading @@ -73,6 +74,7 @@ import com.android.settingslib.bluetooth.LeAudioProfile; import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast; import com.android.settingslib.bluetooth.LocalBluetoothManager; import com.android.settingslib.bluetooth.LocalBluetoothProfileManager; import com.android.settingslib.media.LocalMediaManager; import com.android.settingslib.media.MediaOutputConstants; import org.junit.After; Loading @@ -98,7 +100,8 @@ import java.util.List; @Config(shadows = { ShadowAudioManager.class, ShadowBluetoothUtils.class, ShadowBluetoothDevice.class} ShadowBluetoothDevice.class, ShadowLocalMediaManager.class } ) public class MediaOutputPreferenceControllerTest { private static final String TEST_KEY = "Test_Key"; Loading @@ -123,6 +126,8 @@ public class MediaOutputPreferenceControllerTest { @Mock private LocalBluetoothManager mLocalManager; @Mock private LocalMediaManager mLocalMediaManager; @Mock private BluetoothEventManager mBluetoothEventManager; @Mock private LocalBluetoothProfileManager mLocalBluetoothProfileManager; Loading Loading @@ -236,6 +241,9 @@ public class MediaOutputPreferenceControllerTest { when(mRightBluetoothHapDevice.isConnected()).thenReturn(true); mController = new MediaOutputPreferenceController(mContext, TEST_KEY); ShadowLocalMediaManager.setUseMock(mLocalMediaManager); mController.mLocalMediaManager = mLocalMediaManager; when(mLocalMediaManager.getCurrentConnectedDevice()).thenReturn(null); mScreen = spy(new PreferenceScreen(mContext, null)); mPreference = new Preference(mContext); mProfileConnectedDevices = new ArrayList<>(); Loading @@ -253,6 +261,7 @@ public class MediaOutputPreferenceControllerTest { @After public void tearDown() { ShadowBluetoothUtils.reset(); ShadowLocalMediaManager.reset(); } /** Start broadcasting so Preference summary should become "Audio Sharing" and disabled */ Loading