Merge "Handle Active device changed A2DP <-> Hearing Aid" into rvc-dev am: afe43da899
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12004939 Change-Id: I9790745f568bb45a7390c17c6fb482b9c59abd07
This commit is contained in:
@@ -45,6 +45,7 @@ import com.android.internal.R;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@@ -318,16 +319,6 @@ class BluetoothRouteProvider {
|
|||||||
btRoute.route = builder.build();
|
btRoute.route = builder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void clearActiveRoutes() {
|
|
||||||
if (DEBUG) {
|
|
||||||
Log.d(TAG, "Clearing active routes");
|
|
||||||
}
|
|
||||||
for (BluetoothRouteInfo btRoute : mActiveRoutes) {
|
|
||||||
setRouteConnectionState(btRoute, STATE_DISCONNECTED);
|
|
||||||
}
|
|
||||||
mActiveRoutes.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addActiveRoute(BluetoothRouteInfo btRoute) {
|
private void addActiveRoute(BluetoothRouteInfo btRoute) {
|
||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
Log.d(TAG, "Adding active route: " + btRoute.route);
|
Log.d(TAG, "Adding active route: " + btRoute.route);
|
||||||
@@ -348,18 +339,34 @@ class BluetoothRouteProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void findAndSetActiveHearingAidDevices() {
|
private void clearActiveRoutesWithType(int type) {
|
||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
Log.d(TAG, "Setting active hearing aid devices");
|
Log.d(TAG, "Clearing active routes with type. type=" + type);
|
||||||
|
}
|
||||||
|
Iterator<BluetoothRouteInfo> iter = mActiveRoutes.iterator();
|
||||||
|
while (iter.hasNext()) {
|
||||||
|
BluetoothRouteInfo btRoute = iter.next();
|
||||||
|
if (btRoute.route.getType() == type) {
|
||||||
|
iter.remove();
|
||||||
|
setRouteConnectionState(btRoute, STATE_DISCONNECTED);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addActiveHearingAidDevices(BluetoothDevice device) {
|
||||||
|
if (DEBUG) {
|
||||||
|
Log.d(TAG, "Setting active hearing aid devices. device=" + device);
|
||||||
}
|
}
|
||||||
|
|
||||||
BluetoothHearingAid hearingAidProfile = mHearingAidProfile;
|
// Let the given device be the first active device
|
||||||
if (hearingAidProfile == null) {
|
BluetoothRouteInfo activeBtRoute = mBluetoothRoutes.get(device.getAddress());
|
||||||
return;
|
addActiveRoute(activeBtRoute);
|
||||||
}
|
|
||||||
List<BluetoothDevice> activeDevices = hearingAidProfile.getActiveDevices();
|
// A bluetooth route with the same route ID should be added.
|
||||||
for (BluetoothRouteInfo btRoute : mBluetoothRoutes.values()) {
|
for (BluetoothRouteInfo btRoute : mBluetoothRoutes.values()) {
|
||||||
if (activeDevices.contains(btRoute.btDevice)) {
|
if (TextUtils.equals(btRoute.route.getId(), activeBtRoute.route.getId())
|
||||||
|
&& !TextUtils.equals(btRoute.btDevice.getAddress(),
|
||||||
|
activeBtRoute.btDevice.getAddress())) {
|
||||||
addActiveRoute(btRoute);
|
addActiveRoute(btRoute);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -465,16 +472,16 @@ class BluetoothRouteProvider {
|
|||||||
public void onReceive(Context context, Intent intent, BluetoothDevice device) {
|
public void onReceive(Context context, Intent intent, BluetoothDevice device) {
|
||||||
switch (intent.getAction()) {
|
switch (intent.getAction()) {
|
||||||
case BluetoothA2dp.ACTION_ACTIVE_DEVICE_CHANGED:
|
case BluetoothA2dp.ACTION_ACTIVE_DEVICE_CHANGED:
|
||||||
clearActiveRoutes();
|
clearActiveRoutesWithType(MediaRoute2Info.TYPE_BLUETOOTH_A2DP);
|
||||||
if (device != null) {
|
if (device != null) {
|
||||||
addActiveRoute(mBluetoothRoutes.get(device.getAddress()));
|
addActiveRoute(mBluetoothRoutes.get(device.getAddress()));
|
||||||
}
|
}
|
||||||
notifyBluetoothRoutesUpdated();
|
notifyBluetoothRoutesUpdated();
|
||||||
break;
|
break;
|
||||||
case BluetoothHearingAid.ACTION_ACTIVE_DEVICE_CHANGED:
|
case BluetoothHearingAid.ACTION_ACTIVE_DEVICE_CHANGED:
|
||||||
clearActiveDevices();
|
clearActiveRoutesWithType(MediaRoute2Info.TYPE_HEARING_AID);
|
||||||
if (device != null) {
|
if (device != null) {
|
||||||
findAndSetActiveHearingAidDevices();
|
addActiveHearingAidDevices(device);
|
||||||
}
|
}
|
||||||
notifyBluetoothRoutesUpdated();
|
notifyBluetoothRoutesUpdated();
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user