Loading packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +23 −78 Original line number Diff line number Diff line Loading @@ -50,7 +50,6 @@ import android.bluetooth.BluetoothDevice; import android.content.ComponentName; import android.content.Context; import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; import android.media.RouteListingPreference; import android.media.RoutingSessionInfo; import android.os.Build; Loading Loading @@ -181,6 +180,27 @@ public abstract class InfoMediaManager extends MediaManager { protected abstract BluetoothMediaDevice createBluetoothMediaDevice( MediaRoute2Info route, CachedBluetoothDevice cachedDevice); protected final void rebuildDeviceList() { mMediaDevices.clear(); mCurrentConnectedDevice = null; if (TextUtils.isEmpty(mPackageName)) { buildAllRoutes(); } else { buildAvailableRoutes(); } } protected final void notifyCurrentConnectedDeviceChanged() { final String id = mCurrentConnectedDevice != null ? mCurrentConnectedDevice.getId() : null; dispatchConnectedDeviceChanged(id); } @RequiresApi(34) protected final void notifyRouteListingPreferenceUpdated( RouteListingPreference routeListingPreference) { Api34Impl.onRouteListingPreferenceUpdated(routeListingPreference, mPreferenceItemMap); } /** * Get current device that played media. * @return MediaDevice Loading Loading @@ -475,14 +495,8 @@ public abstract class InfoMediaManager extends MediaManager { || sessionInfo.getVolumeHandling() != MediaRoute2Info.PLAYBACK_VOLUME_FIXED; } private synchronized void refreshDevices() { mMediaDevices.clear(); mCurrentConnectedDevice = null; if (TextUtils.isEmpty(mPackageName)) { buildAllRoutes(); } else { buildAvailableRoutes(); } protected final synchronized void refreshDevices() { rebuildDeviceList(); dispatchDeviceListAdded(); } Loading Loading @@ -613,75 +627,6 @@ public abstract class InfoMediaManager extends MediaManager { } } class RouterManagerCallback implements MediaRouter2Manager.Callback { @Override public void onRoutesUpdated() { refreshDevices(); } @Override public void onPreferredFeaturesChanged(String packageName, List<String> preferredFeatures) { if (TextUtils.equals(mPackageName, packageName)) { refreshDevices(); } } @Override public void onTransferred(RoutingSessionInfo oldSession, RoutingSessionInfo newSession) { if (DEBUG) { Log.d(TAG, "onTransferred() oldSession : " + oldSession.getName() + ", newSession : " + newSession.getName()); } mMediaDevices.clear(); mCurrentConnectedDevice = null; if (TextUtils.isEmpty(mPackageName)) { buildAllRoutes(); } else { buildAvailableRoutes(); } final String id = mCurrentConnectedDevice != null ? mCurrentConnectedDevice.getId() : null; dispatchConnectedDeviceChanged(id); } /** * Ignore callback here since we'll also receive{@link * MediaRouter2Manager.Callback#onRequestFailed onRequestFailed} with reason code. */ @Override public void onTransferFailed(RoutingSessionInfo session, MediaRoute2Info route) { } @Override public void onRequestFailed(int reason) { dispatchOnRequestFailed(reason); } @Override public void onSessionUpdated(RoutingSessionInfo sessionInfo) { refreshDevices(); } @Override public void onSessionReleased(@NonNull RoutingSessionInfo session) { refreshDevices(); } @Override public void onRouteListingPreferenceUpdated( String packageName, RouteListingPreference routeListingPreference) { if (TextUtils.equals(mPackageName, packageName)) { Api34Impl.onRouteListingPreferenceUpdated( routeListingPreference, mPreferenceItemMap); refreshDevices(); } } } @RequiresApi(34) static class Api34Impl { @DoNotInline Loading packages/SettingsLib/src/com/android/settingslib/media/ManagerInfoMediaManager.java +67 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,8 @@ import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; import android.media.RouteListingPreference; import android.media.RoutingSessionInfo; import android.text.TextUtils; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; import com.android.settingslib.bluetooth.CachedBluetoothDevice; Loading @@ -39,6 +41,9 @@ import java.util.concurrent.Executors; */ public class ManagerInfoMediaManager extends InfoMediaManager { private static final String TAG = "ManagerInfoMediaManager"; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); @VisibleForTesting /* package */ final RouterManagerCallback mMediaRouterCallback = new RouterManagerCallback(); @VisibleForTesting Loading Loading @@ -191,4 +196,66 @@ public class ManagerInfoMediaManager extends InfoMediaManager { return new BluetoothMediaDevice( mContext, cachedDevice, mRouterManager, route, mPackageName); } @VisibleForTesting /* package */ final class RouterManagerCallback implements MediaRouter2Manager.Callback { @Override public void onRoutesUpdated() { refreshDevices(); } @Override public void onPreferredFeaturesChanged(String packageName, List<String> preferredFeatures) { if (TextUtils.equals(mPackageName, packageName)) { refreshDevices(); } } @Override public void onTransferred(RoutingSessionInfo oldSession, RoutingSessionInfo newSession) { if (DEBUG) { Log.d( TAG, "onTransferred() oldSession : " + oldSession.getName() + ", newSession : " + newSession.getName()); } rebuildDeviceList(); notifyCurrentConnectedDeviceChanged(); } /** * Ignore callback here since we'll also receive{@link * MediaRouter2Manager.Callback#onRequestFailed onRequestFailed} with reason code. */ @Override public void onTransferFailed(RoutingSessionInfo session, MediaRoute2Info route) {} @Override public void onRequestFailed(int reason) { dispatchOnRequestFailed(reason); } @Override public void onSessionUpdated(RoutingSessionInfo sessionInfo) { refreshDevices(); } @Override public void onSessionReleased(@NonNull RoutingSessionInfo session) { refreshDevices(); } @Override public void onRouteListingPreferenceUpdated( String packageName, RouteListingPreference routeListingPreference) { if (!TextUtils.equals(mPackageName, packageName)) { return; } notifyRouteListingPreferenceUpdated(routeListingPreference); refreshDevices(); } } } Loading
packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +23 −78 Original line number Diff line number Diff line Loading @@ -50,7 +50,6 @@ import android.bluetooth.BluetoothDevice; import android.content.ComponentName; import android.content.Context; import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; import android.media.RouteListingPreference; import android.media.RoutingSessionInfo; import android.os.Build; Loading Loading @@ -181,6 +180,27 @@ public abstract class InfoMediaManager extends MediaManager { protected abstract BluetoothMediaDevice createBluetoothMediaDevice( MediaRoute2Info route, CachedBluetoothDevice cachedDevice); protected final void rebuildDeviceList() { mMediaDevices.clear(); mCurrentConnectedDevice = null; if (TextUtils.isEmpty(mPackageName)) { buildAllRoutes(); } else { buildAvailableRoutes(); } } protected final void notifyCurrentConnectedDeviceChanged() { final String id = mCurrentConnectedDevice != null ? mCurrentConnectedDevice.getId() : null; dispatchConnectedDeviceChanged(id); } @RequiresApi(34) protected final void notifyRouteListingPreferenceUpdated( RouteListingPreference routeListingPreference) { Api34Impl.onRouteListingPreferenceUpdated(routeListingPreference, mPreferenceItemMap); } /** * Get current device that played media. * @return MediaDevice Loading Loading @@ -475,14 +495,8 @@ public abstract class InfoMediaManager extends MediaManager { || sessionInfo.getVolumeHandling() != MediaRoute2Info.PLAYBACK_VOLUME_FIXED; } private synchronized void refreshDevices() { mMediaDevices.clear(); mCurrentConnectedDevice = null; if (TextUtils.isEmpty(mPackageName)) { buildAllRoutes(); } else { buildAvailableRoutes(); } protected final synchronized void refreshDevices() { rebuildDeviceList(); dispatchDeviceListAdded(); } Loading Loading @@ -613,75 +627,6 @@ public abstract class InfoMediaManager extends MediaManager { } } class RouterManagerCallback implements MediaRouter2Manager.Callback { @Override public void onRoutesUpdated() { refreshDevices(); } @Override public void onPreferredFeaturesChanged(String packageName, List<String> preferredFeatures) { if (TextUtils.equals(mPackageName, packageName)) { refreshDevices(); } } @Override public void onTransferred(RoutingSessionInfo oldSession, RoutingSessionInfo newSession) { if (DEBUG) { Log.d(TAG, "onTransferred() oldSession : " + oldSession.getName() + ", newSession : " + newSession.getName()); } mMediaDevices.clear(); mCurrentConnectedDevice = null; if (TextUtils.isEmpty(mPackageName)) { buildAllRoutes(); } else { buildAvailableRoutes(); } final String id = mCurrentConnectedDevice != null ? mCurrentConnectedDevice.getId() : null; dispatchConnectedDeviceChanged(id); } /** * Ignore callback here since we'll also receive{@link * MediaRouter2Manager.Callback#onRequestFailed onRequestFailed} with reason code. */ @Override public void onTransferFailed(RoutingSessionInfo session, MediaRoute2Info route) { } @Override public void onRequestFailed(int reason) { dispatchOnRequestFailed(reason); } @Override public void onSessionUpdated(RoutingSessionInfo sessionInfo) { refreshDevices(); } @Override public void onSessionReleased(@NonNull RoutingSessionInfo session) { refreshDevices(); } @Override public void onRouteListingPreferenceUpdated( String packageName, RouteListingPreference routeListingPreference) { if (TextUtils.equals(mPackageName, packageName)) { Api34Impl.onRouteListingPreferenceUpdated( routeListingPreference, mPreferenceItemMap); refreshDevices(); } } } @RequiresApi(34) static class Api34Impl { @DoNotInline Loading
packages/SettingsLib/src/com/android/settingslib/media/ManagerInfoMediaManager.java +67 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,8 @@ import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; import android.media.RouteListingPreference; import android.media.RoutingSessionInfo; import android.text.TextUtils; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; import com.android.settingslib.bluetooth.CachedBluetoothDevice; Loading @@ -39,6 +41,9 @@ import java.util.concurrent.Executors; */ public class ManagerInfoMediaManager extends InfoMediaManager { private static final String TAG = "ManagerInfoMediaManager"; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); @VisibleForTesting /* package */ final RouterManagerCallback mMediaRouterCallback = new RouterManagerCallback(); @VisibleForTesting Loading Loading @@ -191,4 +196,66 @@ public class ManagerInfoMediaManager extends InfoMediaManager { return new BluetoothMediaDevice( mContext, cachedDevice, mRouterManager, route, mPackageName); } @VisibleForTesting /* package */ final class RouterManagerCallback implements MediaRouter2Manager.Callback { @Override public void onRoutesUpdated() { refreshDevices(); } @Override public void onPreferredFeaturesChanged(String packageName, List<String> preferredFeatures) { if (TextUtils.equals(mPackageName, packageName)) { refreshDevices(); } } @Override public void onTransferred(RoutingSessionInfo oldSession, RoutingSessionInfo newSession) { if (DEBUG) { Log.d( TAG, "onTransferred() oldSession : " + oldSession.getName() + ", newSession : " + newSession.getName()); } rebuildDeviceList(); notifyCurrentConnectedDeviceChanged(); } /** * Ignore callback here since we'll also receive{@link * MediaRouter2Manager.Callback#onRequestFailed onRequestFailed} with reason code. */ @Override public void onTransferFailed(RoutingSessionInfo session, MediaRoute2Info route) {} @Override public void onRequestFailed(int reason) { dispatchOnRequestFailed(reason); } @Override public void onSessionUpdated(RoutingSessionInfo sessionInfo) { refreshDevices(); } @Override public void onSessionReleased(@NonNull RoutingSessionInfo session) { refreshDevices(); } @Override public void onRouteListingPreferenceUpdated( String packageName, RouteListingPreference routeListingPreference) { if (!TextUtils.equals(mPackageName, packageName)) { return; } notifyRouteListingPreferenceUpdated(routeListingPreference); refreshDevices(); } } }