Merge "Disable selecting the default audio route when a BT route is avaiable" into nyc-mr1-dev

This commit is contained in:
Eric Laurent
2016-09-10 01:36:46 +00:00
committed by Android (Google) Code Review

View File

@@ -219,26 +219,12 @@ public class MediaRouter {
} }
if (mBluetoothA2dpRoute != null) { if (mBluetoothA2dpRoute != null) {
final boolean a2dpEnabled = isBluetoothA2dpOn(); if (mSelectedRoute == mDefaultAudioVideo || mSelectedRoute == null) {
if (mainType != AudioRoutesInfo.MAIN_SPEAKER &&
mSelectedRoute == mBluetoothA2dpRoute && !a2dpEnabled) {
selectRouteStatic(ROUTE_TYPE_LIVE_AUDIO, mDefaultAudioVideo, false);
} else if ((mSelectedRoute == mDefaultAudioVideo || mSelectedRoute == null) &&
a2dpEnabled) {
selectRouteStatic(ROUTE_TYPE_LIVE_AUDIO, mBluetoothA2dpRoute, false); selectRouteStatic(ROUTE_TYPE_LIVE_AUDIO, mBluetoothA2dpRoute, false);
} }
} }
} }
boolean isBluetoothA2dpOn() {
try {
return mAudioService.isBluetoothA2dpOn();
} catch (RemoteException e) {
Log.e(TAG, "Error querying Bluetooth A2DP state", e);
return false;
}
}
void updateDiscoveryRequest() { void updateDiscoveryRequest() {
// What are we looking for today? // What are we looking for today?
int routeTypes = 0; int routeTypes = 0;
@@ -908,6 +894,11 @@ public class MediaRouter {
static void selectRouteStatic(int types, @NonNull RouteInfo route, boolean explicit) { static void selectRouteStatic(int types, @NonNull RouteInfo route, boolean explicit) {
Log.v(TAG, "Selecting route: " + route); Log.v(TAG, "Selecting route: " + route);
assert(route != null); assert(route != null);
if (route == sStatic.mDefaultAudioVideo && sStatic.mBluetoothA2dpRoute != null) {
Log.i(TAG, "Change the route to a BT route: " + sStatic.mBluetoothA2dpRoute
+ "\nDo not select the default route when a BT route is available.");
route = sStatic.mBluetoothA2dpRoute;
}
final RouteInfo oldRoute = sStatic.mSelectedRoute; final RouteInfo oldRoute = sStatic.mSelectedRoute;
if (oldRoute == route) return; if (oldRoute == route) return;
if (!route.matchesTypes(types)) { if (!route.matchesTypes(types)) {
@@ -917,16 +908,6 @@ public class MediaRouter {
return; return;
} }
final RouteInfo btRoute = sStatic.mBluetoothA2dpRoute;
if (btRoute != null && (types & ROUTE_TYPE_LIVE_AUDIO) != 0 &&
(route == btRoute || route == sStatic.mDefaultAudioVideo)) {
try {
sStatic.mAudioService.setBluetoothA2dpOn(route == btRoute);
} catch (RemoteException e) {
Log.e(TAG, "Error changing Bluetooth A2DP state", e);
}
}
final WifiDisplay activeDisplay = final WifiDisplay activeDisplay =
sStatic.mDisplayService.getWifiDisplayStatus().getActiveDisplay(); sStatic.mDisplayService.getWifiDisplayStatus().getActiveDisplay();
final boolean oldRouteHasAddress = oldRoute != null && oldRoute.mDeviceAddress != null; final boolean oldRouteHasAddress = oldRoute != null && oldRoute.mDeviceAddress != null;
@@ -966,7 +947,7 @@ public class MediaRouter {
static void selectDefaultRouteStatic() { static void selectDefaultRouteStatic() {
// TODO: Be smarter about the route types here; this selects for all valid. // TODO: Be smarter about the route types here; this selects for all valid.
if (sStatic.mSelectedRoute != sStatic.mBluetoothA2dpRoute if (sStatic.mSelectedRoute != sStatic.mBluetoothA2dpRoute
&& sStatic.mBluetoothA2dpRoute != null && sStatic.isBluetoothA2dpOn()) { && sStatic.mBluetoothA2dpRoute != null) {
selectRouteStatic(ROUTE_TYPE_ANY, sStatic.mBluetoothA2dpRoute, false); selectRouteStatic(ROUTE_TYPE_ANY, sStatic.mBluetoothA2dpRoute, false);
} else { } else {
selectRouteStatic(ROUTE_TYPE_ANY, sStatic.mDefaultAudioVideo, false); selectRouteStatic(ROUTE_TYPE_ANY, sStatic.mDefaultAudioVideo, false);
@@ -1298,12 +1279,7 @@ public class MediaRouter {
selectedRoute == sStatic.mDefaultAudioVideo) { selectedRoute == sStatic.mDefaultAudioVideo) {
dispatchRouteVolumeChanged(selectedRoute); dispatchRouteVolumeChanged(selectedRoute);
} else if (sStatic.mBluetoothA2dpRoute != null) { } else if (sStatic.mBluetoothA2dpRoute != null) {
try { dispatchRouteVolumeChanged(sStatic.mBluetoothA2dpRoute);
dispatchRouteVolumeChanged(sStatic.mAudioService.isBluetoothA2dpOn() ?
sStatic.mBluetoothA2dpRoute : sStatic.mDefaultAudioVideo);
} catch (RemoteException e) {
Log.e(TAG, "Error checking Bluetooth A2DP state to report volume change", e);
}
} else { } else {
dispatchRouteVolumeChanged(sStatic.mDefaultAudioVideo); dispatchRouteVolumeChanged(sStatic.mDefaultAudioVideo);
} }