Merge "Check the device type instead of the object reference" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
c9c67d25f9
@@ -78,6 +78,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
|
||||
public class MediaRouter {
|
||||
private static final String TAG = "MediaRouter";
|
||||
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
|
||||
private static final boolean DEBUG_RESTORE_ROUTE = true;
|
||||
|
||||
static class Static implements DisplayManager.DisplayListener {
|
||||
final String mPackageName;
|
||||
@@ -261,8 +262,8 @@ public class MediaRouter {
|
||||
|
||||
if (audioRoutesChanged) {
|
||||
Log.v(TAG, "Audio routes updated: " + newRoutes + ", a2dp=" + isBluetoothA2dpOn());
|
||||
if (mSelectedRoute == null || mSelectedRoute == mDefaultAudioVideo
|
||||
|| mSelectedRoute == mBluetoothA2dpRoute) {
|
||||
if (mSelectedRoute == null || mSelectedRoute.isDefault()
|
||||
|| mSelectedRoute.isBluetooth()) {
|
||||
if (forceUseDefaultRoute || mBluetoothA2dpRoute == null) {
|
||||
selectRouteStatic(ROUTE_TYPE_LIVE_AUDIO, mDefaultAudioVideo, false);
|
||||
} else {
|
||||
@@ -665,12 +666,16 @@ public class MediaRouter {
|
||||
// Skip restoring route if the selected route is not a system audio route,
|
||||
// MediaRouter is initializing, or mClient was changed.
|
||||
if (Client.this != mClient || mSelectedRoute == null
|
||||
|| (mSelectedRoute != mDefaultAudioVideo
|
||||
&& mSelectedRoute != mBluetoothA2dpRoute)) {
|
||||
|| (!mSelectedRoute.isDefault() && !mSelectedRoute.isBluetooth())) {
|
||||
return;
|
||||
}
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "onRestoreRoute() : route=" + mSelectedRoute);
|
||||
if (DEBUG_RESTORE_ROUTE) {
|
||||
if (mSelectedRoute.isDefault() && mBluetoothA2dpRoute != null) {
|
||||
Log.d(TAG, "onRestoreRoute() : selectedRoute=" + mSelectedRoute
|
||||
+ ", a2dpRoute=" + mBluetoothA2dpRoute);
|
||||
} else {
|
||||
Log.d(TAG, "onRestoreRoute() : route=" + mSelectedRoute);
|
||||
}
|
||||
}
|
||||
mSelectedRoute.select();
|
||||
});
|
||||
@@ -690,9 +695,12 @@ public class MediaRouter {
|
||||
@Override
|
||||
public void onGlobalA2dpChanged(boolean a2dpOn) {
|
||||
mHandler.post(() -> {
|
||||
if (mSelectedRoute == mDefaultAudioVideo && a2dpOn) {
|
||||
if (mSelectedRoute == null) {
|
||||
return;
|
||||
}
|
||||
if (mSelectedRoute.isDefault() && a2dpOn) {
|
||||
setSelectedRoute(mBluetoothA2dpRoute, /*explicit=*/false);
|
||||
} else if (mSelectedRoute == mBluetoothA2dpRoute && !a2dpOn) {
|
||||
} else if (mSelectedRoute.isBluetooth() && !a2dpOn) {
|
||||
setSelectedRoute(mDefaultAudioVideo, /*explicit=*/false);
|
||||
}
|
||||
});
|
||||
@@ -1057,8 +1065,8 @@ public class MediaRouter {
|
||||
final RouteInfo oldRoute = sStatic.mSelectedRoute;
|
||||
final RouteInfo currentSystemRoute = sStatic.isBluetoothA2dpOn()
|
||||
? sStatic.mBluetoothA2dpRoute : sStatic.mDefaultAudioVideo;
|
||||
boolean wasDefaultOrBluetoothRoute = (oldRoute == sStatic.mDefaultAudioVideo
|
||||
|| oldRoute == sStatic.mBluetoothA2dpRoute);
|
||||
boolean wasDefaultOrBluetoothRoute = (oldRoute != null)
|
||||
&& (oldRoute.isDefault() || oldRoute.isBluetooth());
|
||||
if (oldRoute == route
|
||||
&& (!wasDefaultOrBluetoothRoute || route == currentSystemRoute)) {
|
||||
return;
|
||||
@@ -1070,14 +1078,17 @@ public class MediaRouter {
|
||||
return;
|
||||
}
|
||||
|
||||
final RouteInfo btRoute = sStatic.mBluetoothA2dpRoute;
|
||||
if (sStatic.isPlaybackActive() && btRoute != null && (types & ROUTE_TYPE_LIVE_AUDIO) != 0
|
||||
&& (route == btRoute || route == sStatic.mDefaultAudioVideo)) {
|
||||
if (sStatic.isPlaybackActive() && sStatic.mBluetoothA2dpRoute != null
|
||||
&& (types & ROUTE_TYPE_LIVE_AUDIO) != 0
|
||||
&& (route.isBluetooth() || route.isDefault())) {
|
||||
try {
|
||||
sStatic.mAudioService.setBluetoothA2dpOn(route == btRoute);
|
||||
sStatic.mAudioService.setBluetoothA2dpOn(route.isBluetooth());
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "Error changing Bluetooth A2DP state", e);
|
||||
}
|
||||
} else if (DEBUG_RESTORE_ROUTE) {
|
||||
Log.i(TAG, "Skip setBluetoothA2dpOn(): types=" + types + ", isPlaybackActive()="
|
||||
+ sStatic.isPlaybackActive() + ", BT route=" + sStatic.mBluetoothA2dpRoute);
|
||||
}
|
||||
|
||||
final WifiDisplay activeDisplay =
|
||||
@@ -1118,7 +1129,8 @@ public class MediaRouter {
|
||||
|
||||
static void selectDefaultRouteStatic() {
|
||||
// TODO: Be smarter about the route types here; this selects for all valid.
|
||||
if (sStatic.mSelectedRoute != sStatic.mBluetoothA2dpRoute && sStatic.isBluetoothA2dpOn()) {
|
||||
if (sStatic.isBluetoothA2dpOn() && sStatic.mSelectedRoute != null
|
||||
&& !sStatic.mSelectedRoute.isBluetooth()) {
|
||||
selectRouteStatic(ROUTE_TYPE_ANY, sStatic.mBluetoothA2dpRoute, false);
|
||||
} else {
|
||||
selectRouteStatic(ROUTE_TYPE_ANY, sStatic.mDefaultAudioVideo, false);
|
||||
@@ -1452,8 +1464,7 @@ public class MediaRouter {
|
||||
final RouteInfo selectedRoute = sStatic.mSelectedRoute;
|
||||
if (selectedRoute == null) return;
|
||||
|
||||
if (selectedRoute == sStatic.mBluetoothA2dpRoute ||
|
||||
selectedRoute == sStatic.mDefaultAudioVideo) {
|
||||
if (selectedRoute.isBluetooth() || selectedRoute.isDefault()) {
|
||||
dispatchRouteVolumeChanged(selectedRoute);
|
||||
} else if (sStatic.mBluetoothA2dpRoute != null) {
|
||||
dispatchRouteVolumeChanged(sStatic.mIsBluetoothA2dpOn
|
||||
@@ -2225,7 +2236,7 @@ public class MediaRouter {
|
||||
|
||||
/** @hide */
|
||||
public boolean isBluetooth() {
|
||||
return this == sStatic.mBluetoothA2dpRoute;
|
||||
return mDeviceType == RouteInfo.DEVICE_TYPE_BLUETOOTH;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
|
||||
@@ -258,16 +258,16 @@ class AudioPlayerStateMonitor {
|
||||
if (mActiveAudioUids.size() > 0
|
||||
&& !mActiveAudioUids.contains(mSortedAudioPlaybackClientUids.get(0))) {
|
||||
int firstActiveUid = -1;
|
||||
int firatActiveUidIndex = -1;
|
||||
int firstActiveUidIndex = -1;
|
||||
for (int i = 1; i < mSortedAudioPlaybackClientUids.size(); ++i) {
|
||||
int uid = mSortedAudioPlaybackClientUids.get(i);
|
||||
if (mActiveAudioUids.contains(uid)) {
|
||||
firatActiveUidIndex = i;
|
||||
firstActiveUidIndex = i;
|
||||
firstActiveUid = uid;
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (int i = firatActiveUidIndex; i > 0; --i) {
|
||||
for (int i = firstActiveUidIndex; i > 0; --i) {
|
||||
mSortedAudioPlaybackClientUids.set(i,
|
||||
mSortedAudioPlaybackClientUids.get(i - 1));
|
||||
}
|
||||
|
||||
@@ -907,6 +907,8 @@ public final class MediaRouterService extends IMediaRouterService.Stub
|
||||
mActiveBluetoothDevice = btDevice;
|
||||
mGlobalBluetoothA2dpOn = btDevice != null;
|
||||
if (wasA2dpOn != mGlobalBluetoothA2dpOn) {
|
||||
Slog.d(TAG, "GlobalBluetoothA2dpOn is changed to '"
|
||||
+ mGlobalBluetoothA2dpOn + "'");
|
||||
UserRecord userRecord = mUserRecords.get(mCurrentUserId);
|
||||
if (userRecord != null) {
|
||||
for (ClientRecord cr : userRecord.mClientRecords) {
|
||||
|
||||
Reference in New Issue
Block a user