Loading packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java +12 −7 Original line number Diff line number Diff line Loading @@ -23,7 +23,6 @@ import android.content.Context; import android.graphics.drawable.Drawable; import android.media.AudioManager; import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; import android.media.RouteListingPreference; import com.android.settingslib.R; Loading @@ -40,15 +39,21 @@ public class BluetoothMediaDevice extends MediaDevice { private CachedBluetoothDevice mCachedDevice; private final AudioManager mAudioManager; BluetoothMediaDevice(Context context, CachedBluetoothDevice device, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName) { this(context, device, routerManager, info, packageName, null); BluetoothMediaDevice( Context context, CachedBluetoothDevice device, MediaRoute2Info info, String packageName) { this(context, device, info, packageName, null); } BluetoothMediaDevice(Context context, CachedBluetoothDevice device, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName, BluetoothMediaDevice( Context context, CachedBluetoothDevice device, MediaRoute2Info info, String packageName, RouteListingPreference.Item item) { super(context, routerManager, info, packageName, item); super(context, info, packageName, item); mCachedDevice = device; mAudioManager = context.getSystemService(AudioManager.class); initDeviceRecord(); Loading packages/SettingsLib/src/com/android/settingslib/media/ComplexMediaDevice.java +5 −4 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.settingslib.media; import android.content.Context; import android.graphics.drawable.Drawable; import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; import android.media.RouteListingPreference; import com.android.settingslib.R; Loading @@ -32,10 +31,12 @@ public class ComplexMediaDevice extends MediaDevice { private final String mSummary = ""; ComplexMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName, ComplexMediaDevice( Context context, MediaRoute2Info info, String packageName, RouteListingPreference.Item item) { super(context, routerManager, info, packageName, item); super(context, info, packageName, item); } // MediaRoute2Info.getName was made public on API 34, but exists since API 30. Loading packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java +8 −7 Original line number Diff line number Diff line Loading @@ -29,7 +29,6 @@ import static android.media.MediaRoute2Info.TYPE_REMOTE_TV; import android.content.Context; import android.graphics.drawable.Drawable; import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; import android.media.RouteListingPreference; import androidx.annotation.VisibleForTesting; Loading @@ -43,15 +42,17 @@ public class InfoMediaDevice extends MediaDevice { private static final String TAG = "InfoMediaDevice"; InfoMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName, RouteListingPreference.Item item) { super(context, routerManager, info, packageName, item); InfoMediaDevice( Context context, MediaRoute2Info info, String packageName, RouteListingPreference.Item item) { super(context, info, packageName, item); initDeviceRecord(); } InfoMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName) { this(context, routerManager, info, packageName, null); InfoMediaDevice(Context context, MediaRoute2Info info, String packageName) { this(context, info, packageName, null); } @Override Loading packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +56 −27 Original line number Diff line number Diff line Loading @@ -123,6 +123,8 @@ public abstract class InfoMediaManager extends MediaManager { */ protected abstract boolean connectDeviceWithoutPackageName(@NonNull MediaDevice device); protected abstract void transferToRoute(@NonNull MediaRoute2Info route); protected abstract void selectRoute( @NonNull MediaRoute2Info route, @NonNull RoutingSessionInfo info); Loading @@ -143,6 +145,8 @@ public abstract class InfoMediaManager extends MediaManager { protected abstract void setSessionVolume(@NonNull RoutingSessionInfo info, int volume); protected abstract void setRouteVolume(@NonNull MediaRoute2Info route, int volume); @Nullable protected abstract RouteListingPreference getRouteListingPreference(); Loading @@ -165,23 +169,6 @@ public abstract class InfoMediaManager extends MediaManager { @NonNull protected abstract List<MediaRoute2Info> getTransferableRoutes(@NonNull String packageName); @NonNull protected abstract ComplexMediaDevice createComplexMediaDevice( MediaRoute2Info route, RouteListingPreference.Item routeListingPreferenceItem); @NonNull protected abstract InfoMediaDevice createInfoMediaDevice( MediaRoute2Info route, RouteListingPreference.Item routeListingPreferenceItem); @NonNull protected abstract PhoneMediaDevice createPhoneMediaDevice(MediaRoute2Info route, RouteListingPreference.Item routeListingPreferenceItem); @NonNull protected abstract BluetoothMediaDevice createBluetoothMediaDevice( MediaRoute2Info route, CachedBluetoothDevice cachedDevice, RouteListingPreference.Item routeListingPreferenceItem); protected final void rebuildDeviceList() { mMediaDevices.clear(); mCurrentConnectedDevice = null; Loading Loading @@ -211,6 +198,20 @@ public abstract class InfoMediaManager extends MediaManager { return mCurrentConnectedDevice; } /* package */ void connectToDevice(MediaDevice device) { if (device.mRouteInfo == null) { Log.w(TAG, "Unable to connect. RouteInfo is empty"); return; } if (TextUtils.isEmpty(mPackageName)) { connectDeviceWithoutPackageName(device); } else { device.setConnectedRecord(); transferToRoute(device.mRouteInfo); } } /** * Add a MediaDevice to let it play current media. * Loading Loading @@ -335,7 +336,8 @@ public abstract class InfoMediaManager extends MediaManager { final List<MediaDevice> deviceList = new ArrayList<>(); for (MediaRoute2Info route : getSelectableRoutes(info)) { deviceList.add( createInfoMediaDevice(route, mPreferenceItemMap.get(route.getId()))); new InfoMediaDevice( mContext, route, mPackageName, mPreferenceItemMap.get(route.getId()))); } return deviceList; } Loading @@ -361,7 +363,8 @@ public abstract class InfoMediaManager extends MediaManager { final List<MediaDevice> deviceList = new ArrayList<>(); for (MediaRoute2Info route : getDeselectableRoutes(info)) { deviceList.add( createInfoMediaDevice(route, mPreferenceItemMap.get(route.getId()))); new InfoMediaDevice( mContext, route, mPackageName, mPreferenceItemMap.get(route.getId()))); Log.d(TAG, route.getName() + " is deselectable for " + mPackageName); } return deviceList; Loading @@ -388,11 +391,20 @@ public abstract class InfoMediaManager extends MediaManager { final List<MediaDevice> deviceList = new ArrayList<>(); for (MediaRoute2Info route : getSelectedRoutes(info)) { deviceList.add( createInfoMediaDevice(route, mPreferenceItemMap.get(route.getId()))); new InfoMediaDevice( mContext, route, mPackageName, mPreferenceItemMap.get(route.getId()))); } return deviceList; } /* package */ void adjustDeviceVolume(MediaDevice device, int volume) { if (device.mRouteInfo == null) { Log.w(TAG, "Unable to set volume. RouteInfo is empty"); return; } setRouteVolume(device.mRouteInfo, volume); } void adjustSessionVolume(RoutingSessionInfo info, int volume) { if (info == null) { Log.w(TAG, "Unable to adjust session volume. RoutingSessionInfo is empty"); Loading Loading @@ -585,7 +597,12 @@ public abstract class InfoMediaManager extends MediaManager { case TYPE_REMOTE_CAR: case TYPE_REMOTE_SMARTWATCH: case TYPE_REMOTE_SMARTPHONE: mediaDevice = createInfoMediaDevice(route, mPreferenceItemMap.get(route.getId())); mediaDevice = new InfoMediaDevice( mContext, route, mPackageName, mPreferenceItemMap.get(route.getId())); break; case TYPE_BUILTIN_SPEAKER: case TYPE_USB_DEVICE: Loading @@ -595,7 +612,11 @@ public abstract class InfoMediaManager extends MediaManager { case TYPE_HDMI: case TYPE_WIRED_HEADSET: case TYPE_WIRED_HEADPHONES: mediaDevice = createPhoneMediaDevice(route, mediaDevice = new PhoneMediaDevice( mContext, route, mPackageName, mPreferenceItemMap.getOrDefault(route.getId(), null)); break; case TYPE_HEARING_AID: Loading @@ -606,14 +627,22 @@ public abstract class InfoMediaManager extends MediaManager { final CachedBluetoothDevice cachedDevice = mBluetoothManager.getCachedDeviceManager().findDevice(device); if (cachedDevice != null) { mediaDevice = createBluetoothMediaDevice(route, cachedDevice, mediaDevice = new BluetoothMediaDevice( mContext, cachedDevice, route, mPackageName, mPreferenceItemMap.getOrDefault(route.getId(), null)); } break; case TYPE_REMOTE_AUDIO_VIDEO_RECEIVER: mediaDevice = createComplexMediaDevice( route, mPreferenceItemMap.get(route.getId())); new ComplexMediaDevice( mContext, route, mPackageName, mPreferenceItemMap.get(route.getId())); default: Log.w(TAG, "addMediaDevice() unknown device type : " + deviceType); break; Loading packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java +14 −11 Original line number Diff line number Diff line Loading @@ -188,11 +188,7 @@ public class LocalMediaManager implements BluetoothCallback { } device.setState(MediaDeviceState.STATE_CONNECTING); if (TextUtils.isEmpty(mPackageName)) { mInfoMediaManager.connectDeviceWithoutPackageName(device); } else { device.connect(); } mInfoMediaManager.connectToDevice(device); return true; } Loading Loading @@ -375,6 +371,16 @@ public class LocalMediaManager implements BluetoothCallback { return mInfoMediaManager.getSelectedMediaDevices(); } /** * Requests a volume change for a specific media device. * * This operation is different from {@link #adjustSessionVolume(String, int)}, which changes the * volume of the overall session. */ public void adjustDeviceVolume(MediaDevice device, int volume) { mInfoMediaManager.adjustDeviceVolume(device, volume); } /** * Adjust the volume of session. * Loading Loading @@ -559,9 +565,7 @@ public class LocalMediaManager implements BluetoothCallback { final CachedBluetoothDevice cachedDevice = cachedDeviceManager.findDevice(device); if (isBondedMediaDevice(cachedDevice) && isMutingExpectedDevice(cachedDevice)) { return new BluetoothMediaDevice(mContext, cachedDevice, null, null, mPackageName); return new BluetoothMediaDevice(mContext, cachedDevice, null, mPackageName); } } return null; Loading Loading @@ -607,9 +611,8 @@ public class LocalMediaManager implements BluetoothCallback { unRegisterDeviceAttributeChangeCallback(); mDisconnectedMediaDevices.clear(); for (CachedBluetoothDevice cachedDevice : cachedBluetoothDeviceList) { final MediaDevice mediaDevice = new BluetoothMediaDevice(mContext, cachedDevice, null, null, mPackageName); final MediaDevice mediaDevice = new BluetoothMediaDevice(mContext, cachedDevice, null, mPackageName); if (!mMediaDevices.contains(mediaDevice)) { cachedDevice.registerCallback(mDeviceAttributeChangeCallback); mDisconnectedMediaDevices.add(mediaDevice); Loading Loading
packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java +12 −7 Original line number Diff line number Diff line Loading @@ -23,7 +23,6 @@ import android.content.Context; import android.graphics.drawable.Drawable; import android.media.AudioManager; import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; import android.media.RouteListingPreference; import com.android.settingslib.R; Loading @@ -40,15 +39,21 @@ public class BluetoothMediaDevice extends MediaDevice { private CachedBluetoothDevice mCachedDevice; private final AudioManager mAudioManager; BluetoothMediaDevice(Context context, CachedBluetoothDevice device, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName) { this(context, device, routerManager, info, packageName, null); BluetoothMediaDevice( Context context, CachedBluetoothDevice device, MediaRoute2Info info, String packageName) { this(context, device, info, packageName, null); } BluetoothMediaDevice(Context context, CachedBluetoothDevice device, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName, BluetoothMediaDevice( Context context, CachedBluetoothDevice device, MediaRoute2Info info, String packageName, RouteListingPreference.Item item) { super(context, routerManager, info, packageName, item); super(context, info, packageName, item); mCachedDevice = device; mAudioManager = context.getSystemService(AudioManager.class); initDeviceRecord(); Loading
packages/SettingsLib/src/com/android/settingslib/media/ComplexMediaDevice.java +5 −4 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.settingslib.media; import android.content.Context; import android.graphics.drawable.Drawable; import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; import android.media.RouteListingPreference; import com.android.settingslib.R; Loading @@ -32,10 +31,12 @@ public class ComplexMediaDevice extends MediaDevice { private final String mSummary = ""; ComplexMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName, ComplexMediaDevice( Context context, MediaRoute2Info info, String packageName, RouteListingPreference.Item item) { super(context, routerManager, info, packageName, item); super(context, info, packageName, item); } // MediaRoute2Info.getName was made public on API 34, but exists since API 30. Loading
packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java +8 −7 Original line number Diff line number Diff line Loading @@ -29,7 +29,6 @@ import static android.media.MediaRoute2Info.TYPE_REMOTE_TV; import android.content.Context; import android.graphics.drawable.Drawable; import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; import android.media.RouteListingPreference; import androidx.annotation.VisibleForTesting; Loading @@ -43,15 +42,17 @@ public class InfoMediaDevice extends MediaDevice { private static final String TAG = "InfoMediaDevice"; InfoMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName, RouteListingPreference.Item item) { super(context, routerManager, info, packageName, item); InfoMediaDevice( Context context, MediaRoute2Info info, String packageName, RouteListingPreference.Item item) { super(context, info, packageName, item); initDeviceRecord(); } InfoMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName) { this(context, routerManager, info, packageName, null); InfoMediaDevice(Context context, MediaRoute2Info info, String packageName) { this(context, info, packageName, null); } @Override Loading
packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +56 −27 Original line number Diff line number Diff line Loading @@ -123,6 +123,8 @@ public abstract class InfoMediaManager extends MediaManager { */ protected abstract boolean connectDeviceWithoutPackageName(@NonNull MediaDevice device); protected abstract void transferToRoute(@NonNull MediaRoute2Info route); protected abstract void selectRoute( @NonNull MediaRoute2Info route, @NonNull RoutingSessionInfo info); Loading @@ -143,6 +145,8 @@ public abstract class InfoMediaManager extends MediaManager { protected abstract void setSessionVolume(@NonNull RoutingSessionInfo info, int volume); protected abstract void setRouteVolume(@NonNull MediaRoute2Info route, int volume); @Nullable protected abstract RouteListingPreference getRouteListingPreference(); Loading @@ -165,23 +169,6 @@ public abstract class InfoMediaManager extends MediaManager { @NonNull protected abstract List<MediaRoute2Info> getTransferableRoutes(@NonNull String packageName); @NonNull protected abstract ComplexMediaDevice createComplexMediaDevice( MediaRoute2Info route, RouteListingPreference.Item routeListingPreferenceItem); @NonNull protected abstract InfoMediaDevice createInfoMediaDevice( MediaRoute2Info route, RouteListingPreference.Item routeListingPreferenceItem); @NonNull protected abstract PhoneMediaDevice createPhoneMediaDevice(MediaRoute2Info route, RouteListingPreference.Item routeListingPreferenceItem); @NonNull protected abstract BluetoothMediaDevice createBluetoothMediaDevice( MediaRoute2Info route, CachedBluetoothDevice cachedDevice, RouteListingPreference.Item routeListingPreferenceItem); protected final void rebuildDeviceList() { mMediaDevices.clear(); mCurrentConnectedDevice = null; Loading Loading @@ -211,6 +198,20 @@ public abstract class InfoMediaManager extends MediaManager { return mCurrentConnectedDevice; } /* package */ void connectToDevice(MediaDevice device) { if (device.mRouteInfo == null) { Log.w(TAG, "Unable to connect. RouteInfo is empty"); return; } if (TextUtils.isEmpty(mPackageName)) { connectDeviceWithoutPackageName(device); } else { device.setConnectedRecord(); transferToRoute(device.mRouteInfo); } } /** * Add a MediaDevice to let it play current media. * Loading Loading @@ -335,7 +336,8 @@ public abstract class InfoMediaManager extends MediaManager { final List<MediaDevice> deviceList = new ArrayList<>(); for (MediaRoute2Info route : getSelectableRoutes(info)) { deviceList.add( createInfoMediaDevice(route, mPreferenceItemMap.get(route.getId()))); new InfoMediaDevice( mContext, route, mPackageName, mPreferenceItemMap.get(route.getId()))); } return deviceList; } Loading @@ -361,7 +363,8 @@ public abstract class InfoMediaManager extends MediaManager { final List<MediaDevice> deviceList = new ArrayList<>(); for (MediaRoute2Info route : getDeselectableRoutes(info)) { deviceList.add( createInfoMediaDevice(route, mPreferenceItemMap.get(route.getId()))); new InfoMediaDevice( mContext, route, mPackageName, mPreferenceItemMap.get(route.getId()))); Log.d(TAG, route.getName() + " is deselectable for " + mPackageName); } return deviceList; Loading @@ -388,11 +391,20 @@ public abstract class InfoMediaManager extends MediaManager { final List<MediaDevice> deviceList = new ArrayList<>(); for (MediaRoute2Info route : getSelectedRoutes(info)) { deviceList.add( createInfoMediaDevice(route, mPreferenceItemMap.get(route.getId()))); new InfoMediaDevice( mContext, route, mPackageName, mPreferenceItemMap.get(route.getId()))); } return deviceList; } /* package */ void adjustDeviceVolume(MediaDevice device, int volume) { if (device.mRouteInfo == null) { Log.w(TAG, "Unable to set volume. RouteInfo is empty"); return; } setRouteVolume(device.mRouteInfo, volume); } void adjustSessionVolume(RoutingSessionInfo info, int volume) { if (info == null) { Log.w(TAG, "Unable to adjust session volume. RoutingSessionInfo is empty"); Loading Loading @@ -585,7 +597,12 @@ public abstract class InfoMediaManager extends MediaManager { case TYPE_REMOTE_CAR: case TYPE_REMOTE_SMARTWATCH: case TYPE_REMOTE_SMARTPHONE: mediaDevice = createInfoMediaDevice(route, mPreferenceItemMap.get(route.getId())); mediaDevice = new InfoMediaDevice( mContext, route, mPackageName, mPreferenceItemMap.get(route.getId())); break; case TYPE_BUILTIN_SPEAKER: case TYPE_USB_DEVICE: Loading @@ -595,7 +612,11 @@ public abstract class InfoMediaManager extends MediaManager { case TYPE_HDMI: case TYPE_WIRED_HEADSET: case TYPE_WIRED_HEADPHONES: mediaDevice = createPhoneMediaDevice(route, mediaDevice = new PhoneMediaDevice( mContext, route, mPackageName, mPreferenceItemMap.getOrDefault(route.getId(), null)); break; case TYPE_HEARING_AID: Loading @@ -606,14 +627,22 @@ public abstract class InfoMediaManager extends MediaManager { final CachedBluetoothDevice cachedDevice = mBluetoothManager.getCachedDeviceManager().findDevice(device); if (cachedDevice != null) { mediaDevice = createBluetoothMediaDevice(route, cachedDevice, mediaDevice = new BluetoothMediaDevice( mContext, cachedDevice, route, mPackageName, mPreferenceItemMap.getOrDefault(route.getId(), null)); } break; case TYPE_REMOTE_AUDIO_VIDEO_RECEIVER: mediaDevice = createComplexMediaDevice( route, mPreferenceItemMap.get(route.getId())); new ComplexMediaDevice( mContext, route, mPackageName, mPreferenceItemMap.get(route.getId())); default: Log.w(TAG, "addMediaDevice() unknown device type : " + deviceType); break; Loading
packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java +14 −11 Original line number Diff line number Diff line Loading @@ -188,11 +188,7 @@ public class LocalMediaManager implements BluetoothCallback { } device.setState(MediaDeviceState.STATE_CONNECTING); if (TextUtils.isEmpty(mPackageName)) { mInfoMediaManager.connectDeviceWithoutPackageName(device); } else { device.connect(); } mInfoMediaManager.connectToDevice(device); return true; } Loading Loading @@ -375,6 +371,16 @@ public class LocalMediaManager implements BluetoothCallback { return mInfoMediaManager.getSelectedMediaDevices(); } /** * Requests a volume change for a specific media device. * * This operation is different from {@link #adjustSessionVolume(String, int)}, which changes the * volume of the overall session. */ public void adjustDeviceVolume(MediaDevice device, int volume) { mInfoMediaManager.adjustDeviceVolume(device, volume); } /** * Adjust the volume of session. * Loading Loading @@ -559,9 +565,7 @@ public class LocalMediaManager implements BluetoothCallback { final CachedBluetoothDevice cachedDevice = cachedDeviceManager.findDevice(device); if (isBondedMediaDevice(cachedDevice) && isMutingExpectedDevice(cachedDevice)) { return new BluetoothMediaDevice(mContext, cachedDevice, null, null, mPackageName); return new BluetoothMediaDevice(mContext, cachedDevice, null, mPackageName); } } return null; Loading Loading @@ -607,9 +611,8 @@ public class LocalMediaManager implements BluetoothCallback { unRegisterDeviceAttributeChangeCallback(); mDisconnectedMediaDevices.clear(); for (CachedBluetoothDevice cachedDevice : cachedBluetoothDeviceList) { final MediaDevice mediaDevice = new BluetoothMediaDevice(mContext, cachedDevice, null, null, mPackageName); final MediaDevice mediaDevice = new BluetoothMediaDevice(mContext, cachedDevice, null, mPackageName); if (!mMediaDevices.contains(mediaDevice)) { cachedDevice.registerCallback(mDeviceAttributeChangeCallback); mDisconnectedMediaDevices.add(mediaDevice); Loading