Loading services/core/java/com/android/server/media/BluetoothRouteProvider.java +14 −11 Original line number Original line Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.content.IntentFilter; import android.media.AudioManager; import android.media.AudioManager; import android.media.AudioSystem; import android.media.AudioSystem; import android.media.MediaRoute2Info; import android.media.MediaRoute2Info; import android.os.UserHandle; import android.text.TextUtils; import android.text.TextUtils; import android.util.Log; import android.util.Log; import android.util.Slog; import android.util.Slog; Loading @@ -55,7 +56,6 @@ class BluetoothRouteProvider { private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); private static final String HEARING_AID_ROUTE_ID_PREFIX = "HEARING_AID_"; private static final String HEARING_AID_ROUTE_ID_PREFIX = "HEARING_AID_"; private static BluetoothRouteProvider sInstance; @SuppressWarnings("WeakerAccess") /* synthetic access */ @SuppressWarnings("WeakerAccess") /* synthetic access */ // Maps hardware address to BluetoothRouteInfo // Maps hardware address to BluetoothRouteInfo Loading @@ -79,19 +79,21 @@ class BluetoothRouteProvider { private final BroadcastReceiver mBroadcastReceiver = new BluetoothBroadcastReceiver(); private final BroadcastReceiver mBroadcastReceiver = new BluetoothBroadcastReceiver(); private final BluetoothProfileListener mProfileListener = new BluetoothProfileListener(); private final BluetoothProfileListener mProfileListener = new BluetoothProfileListener(); static synchronized BluetoothRouteProvider getInstance(@NonNull Context context, /** * Create an instance of {@link BluetoothRouteProvider}. * It may return {@code null} if Bluetooth is not supported on this hardware platform. */ @Nullable static BluetoothRouteProvider createInstance(@NonNull Context context, @NonNull BluetoothRoutesUpdatedListener listener) { @NonNull BluetoothRoutesUpdatedListener listener) { Objects.requireNonNull(context); Objects.requireNonNull(context); Objects.requireNonNull(listener); Objects.requireNonNull(listener); if (sInstance == null) { BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter(); BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter(); if (btAdapter == null) { if (btAdapter == null) { return null; return null; } } sInstance = new BluetoothRouteProvider(context, btAdapter, listener); return new BluetoothRouteProvider(context, btAdapter, listener); } return sInstance; } } private BluetoothRouteProvider(Context context, BluetoothAdapter btAdapter, private BluetoothRouteProvider(Context context, BluetoothAdapter btAdapter, Loading @@ -103,7 +105,7 @@ class BluetoothRouteProvider { buildBluetoothRoutes(); buildBluetoothRoutes(); } } public void start() { public void start(UserHandle user) { mBluetoothAdapter.getProfileProxy(mContext, mProfileListener, BluetoothProfile.A2DP); mBluetoothAdapter.getProfileProxy(mContext, mProfileListener, BluetoothProfile.A2DP); mBluetoothAdapter.getProfileProxy(mContext, mProfileListener, BluetoothProfile.HEARING_AID); mBluetoothAdapter.getProfileProxy(mContext, mProfileListener, BluetoothProfile.HEARING_AID); Loading @@ -118,7 +120,8 @@ class BluetoothRouteProvider { addEventReceiver(BluetoothHearingAid.ACTION_CONNECTION_STATE_CHANGED, addEventReceiver(BluetoothHearingAid.ACTION_CONNECTION_STATE_CHANGED, deviceStateChangedReceiver); deviceStateChangedReceiver); mContext.registerReceiver(mBroadcastReceiver, mIntentFilter, null, null); mContext.registerReceiverAsUser(mBroadcastReceiver, user, mIntentFilter, null, null); } } /** /** Loading services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java +2 −1 Original line number Original line Diff line number Diff line Loading @@ -1176,7 +1176,8 @@ class MediaRouter2ServiceImpl { super(Looper.getMainLooper(), null, true); super(Looper.getMainLooper(), null, true); mServiceRef = new WeakReference<>(service); mServiceRef = new WeakReference<>(service); mUserRecord = userRecord; mUserRecord = userRecord; mSystemProvider = new SystemMediaRoute2Provider(service.mContext); mSystemProvider = new SystemMediaRoute2Provider(service.mContext, UserHandle.of(userRecord.mUserId)); mRouteProviders.add(mSystemProvider); mRouteProviders.add(mSystemProvider); mWatcher = new MediaRoute2ProviderWatcher(service.mContext, this, mWatcher = new MediaRoute2ProviderWatcher(service.mContext, this, this, mUserRecord.mUserId); this, mUserRecord.mUserId); Loading services/core/java/com/android/server/media/SystemMediaRoute2Provider.java +6 −4 Original line number Original line Diff line number Diff line Loading @@ -45,6 +45,7 @@ import android.os.Handler; import android.os.Looper; import android.os.Looper; import android.os.RemoteException; import android.os.RemoteException; import android.os.ServiceManager; import android.os.ServiceManager; import android.os.UserHandle; import android.text.TextUtils; import android.text.TextUtils; import android.util.Log; import android.util.Log; import android.util.Slog; import android.util.Slog; Loading Loading @@ -99,7 +100,7 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider { } } }; }; SystemMediaRoute2Provider(Context context) { SystemMediaRoute2Provider(Context context, UserHandle user) { super(sComponentName); super(sComponentName); mIsSystemRouteProvider = true; mIsSystemRouteProvider = true; Loading @@ -117,7 +118,7 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider { updateDeviceRoute(newAudioRoutes); updateDeviceRoute(newAudioRoutes); // .getInstance returns null if there is no bt adapter available // .getInstance returns null if there is no bt adapter available mBtRouteProvider = BluetoothRouteProvider.getInstance(context, (routes) -> { mBtRouteProvider = BluetoothRouteProvider.createInstance(context, (routes) -> { publishProviderState(); publishProviderState(); boolean sessionInfoChanged; boolean sessionInfoChanged; Loading @@ -130,11 +131,12 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider { IntentFilter intentFilter = new IntentFilter(AudioManager.VOLUME_CHANGED_ACTION); IntentFilter intentFilter = new IntentFilter(AudioManager.VOLUME_CHANGED_ACTION); intentFilter.addAction(AudioManager.STREAM_DEVICES_CHANGED_ACTION); intentFilter.addAction(AudioManager.STREAM_DEVICES_CHANGED_ACTION); mContext.registerReceiver(new AudioManagerBroadcastReceiver(), intentFilter); mContext.registerReceiverAsUser(new AudioManagerBroadcastReceiver(), user, intentFilter, null, null); if (mBtRouteProvider != null) { if (mBtRouteProvider != null) { mHandler.post(() -> { mHandler.post(() -> { mBtRouteProvider.start(); mBtRouteProvider.start(user); notifyProviderState(); notifyProviderState(); }); }); } } Loading Loading
services/core/java/com/android/server/media/BluetoothRouteProvider.java +14 −11 Original line number Original line Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.content.IntentFilter; import android.media.AudioManager; import android.media.AudioManager; import android.media.AudioSystem; import android.media.AudioSystem; import android.media.MediaRoute2Info; import android.media.MediaRoute2Info; import android.os.UserHandle; import android.text.TextUtils; import android.text.TextUtils; import android.util.Log; import android.util.Log; import android.util.Slog; import android.util.Slog; Loading @@ -55,7 +56,6 @@ class BluetoothRouteProvider { private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); private static final String HEARING_AID_ROUTE_ID_PREFIX = "HEARING_AID_"; private static final String HEARING_AID_ROUTE_ID_PREFIX = "HEARING_AID_"; private static BluetoothRouteProvider sInstance; @SuppressWarnings("WeakerAccess") /* synthetic access */ @SuppressWarnings("WeakerAccess") /* synthetic access */ // Maps hardware address to BluetoothRouteInfo // Maps hardware address to BluetoothRouteInfo Loading @@ -79,19 +79,21 @@ class BluetoothRouteProvider { private final BroadcastReceiver mBroadcastReceiver = new BluetoothBroadcastReceiver(); private final BroadcastReceiver mBroadcastReceiver = new BluetoothBroadcastReceiver(); private final BluetoothProfileListener mProfileListener = new BluetoothProfileListener(); private final BluetoothProfileListener mProfileListener = new BluetoothProfileListener(); static synchronized BluetoothRouteProvider getInstance(@NonNull Context context, /** * Create an instance of {@link BluetoothRouteProvider}. * It may return {@code null} if Bluetooth is not supported on this hardware platform. */ @Nullable static BluetoothRouteProvider createInstance(@NonNull Context context, @NonNull BluetoothRoutesUpdatedListener listener) { @NonNull BluetoothRoutesUpdatedListener listener) { Objects.requireNonNull(context); Objects.requireNonNull(context); Objects.requireNonNull(listener); Objects.requireNonNull(listener); if (sInstance == null) { BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter(); BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter(); if (btAdapter == null) { if (btAdapter == null) { return null; return null; } } sInstance = new BluetoothRouteProvider(context, btAdapter, listener); return new BluetoothRouteProvider(context, btAdapter, listener); } return sInstance; } } private BluetoothRouteProvider(Context context, BluetoothAdapter btAdapter, private BluetoothRouteProvider(Context context, BluetoothAdapter btAdapter, Loading @@ -103,7 +105,7 @@ class BluetoothRouteProvider { buildBluetoothRoutes(); buildBluetoothRoutes(); } } public void start() { public void start(UserHandle user) { mBluetoothAdapter.getProfileProxy(mContext, mProfileListener, BluetoothProfile.A2DP); mBluetoothAdapter.getProfileProxy(mContext, mProfileListener, BluetoothProfile.A2DP); mBluetoothAdapter.getProfileProxy(mContext, mProfileListener, BluetoothProfile.HEARING_AID); mBluetoothAdapter.getProfileProxy(mContext, mProfileListener, BluetoothProfile.HEARING_AID); Loading @@ -118,7 +120,8 @@ class BluetoothRouteProvider { addEventReceiver(BluetoothHearingAid.ACTION_CONNECTION_STATE_CHANGED, addEventReceiver(BluetoothHearingAid.ACTION_CONNECTION_STATE_CHANGED, deviceStateChangedReceiver); deviceStateChangedReceiver); mContext.registerReceiver(mBroadcastReceiver, mIntentFilter, null, null); mContext.registerReceiverAsUser(mBroadcastReceiver, user, mIntentFilter, null, null); } } /** /** Loading
services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java +2 −1 Original line number Original line Diff line number Diff line Loading @@ -1176,7 +1176,8 @@ class MediaRouter2ServiceImpl { super(Looper.getMainLooper(), null, true); super(Looper.getMainLooper(), null, true); mServiceRef = new WeakReference<>(service); mServiceRef = new WeakReference<>(service); mUserRecord = userRecord; mUserRecord = userRecord; mSystemProvider = new SystemMediaRoute2Provider(service.mContext); mSystemProvider = new SystemMediaRoute2Provider(service.mContext, UserHandle.of(userRecord.mUserId)); mRouteProviders.add(mSystemProvider); mRouteProviders.add(mSystemProvider); mWatcher = new MediaRoute2ProviderWatcher(service.mContext, this, mWatcher = new MediaRoute2ProviderWatcher(service.mContext, this, this, mUserRecord.mUserId); this, mUserRecord.mUserId); Loading
services/core/java/com/android/server/media/SystemMediaRoute2Provider.java +6 −4 Original line number Original line Diff line number Diff line Loading @@ -45,6 +45,7 @@ import android.os.Handler; import android.os.Looper; import android.os.Looper; import android.os.RemoteException; import android.os.RemoteException; import android.os.ServiceManager; import android.os.ServiceManager; import android.os.UserHandle; import android.text.TextUtils; import android.text.TextUtils; import android.util.Log; import android.util.Log; import android.util.Slog; import android.util.Slog; Loading Loading @@ -99,7 +100,7 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider { } } }; }; SystemMediaRoute2Provider(Context context) { SystemMediaRoute2Provider(Context context, UserHandle user) { super(sComponentName); super(sComponentName); mIsSystemRouteProvider = true; mIsSystemRouteProvider = true; Loading @@ -117,7 +118,7 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider { updateDeviceRoute(newAudioRoutes); updateDeviceRoute(newAudioRoutes); // .getInstance returns null if there is no bt adapter available // .getInstance returns null if there is no bt adapter available mBtRouteProvider = BluetoothRouteProvider.getInstance(context, (routes) -> { mBtRouteProvider = BluetoothRouteProvider.createInstance(context, (routes) -> { publishProviderState(); publishProviderState(); boolean sessionInfoChanged; boolean sessionInfoChanged; Loading @@ -130,11 +131,12 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider { IntentFilter intentFilter = new IntentFilter(AudioManager.VOLUME_CHANGED_ACTION); IntentFilter intentFilter = new IntentFilter(AudioManager.VOLUME_CHANGED_ACTION); intentFilter.addAction(AudioManager.STREAM_DEVICES_CHANGED_ACTION); intentFilter.addAction(AudioManager.STREAM_DEVICES_CHANGED_ACTION); mContext.registerReceiver(new AudioManagerBroadcastReceiver(), intentFilter); mContext.registerReceiverAsUser(new AudioManagerBroadcastReceiver(), user, intentFilter, null, null); if (mBtRouteProvider != null) { if (mBtRouteProvider != null) { mHandler.post(() -> { mHandler.post(() -> { mBtRouteProvider.start(); mBtRouteProvider.start(user); notifyProviderState(); notifyProviderState(); }); }); } } Loading