Loading android/app/src/com/android/bluetooth/Utils.java +15 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ import java.nio.charset.CharsetDecoder; import java.time.Instant; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.Objects; import java.util.UUID; import java.util.concurrent.TimeUnit; Loading Loading @@ -634,4 +635,18 @@ public final class Utils { return 1 == context.getContentResolver().update(uri, values, null, null); } /** * Checks that value is present as at least one of the elements of the array. * @param array the array to check in * @param value the value to check for * @return true if the value is present in the array */ public static <T> boolean arrayContains(@Nullable T[] array, T value) { if (array == null) return false; for (T element : array) { if (Objects.equals(element, value)) return true; } return false; } } android/app/src/com/android/bluetooth/a2dp/A2dpService.java +2 −3 Original line number Diff line number Diff line Loading @@ -47,7 +47,6 @@ import com.android.bluetooth.btservice.ServiceFactory; import com.android.bluetooth.btservice.storage.DatabaseManager; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ArrayUtils; import java.util.ArrayList; import java.util.List; Loading Loading @@ -248,7 +247,7 @@ public class A2dpService extends ProfileService { Log.e(TAG, "Cannot connect to " + device + " : CONNECTION_POLICY_FORBIDDEN"); return false; } if (!ArrayUtils.contains(mAdapterService.getRemoteUuids(device), if (!Utils.arrayContains(mAdapterService.getRemoteUuids(device), BluetoothUuid.A2DP_SINK)) { Log.e(TAG, "Cannot connect to " + device + " : Remote does not have A2DP Sink UUID"); return false; Loading Loading @@ -400,7 +399,7 @@ public class A2dpService extends ProfileService { } synchronized (mStateMachines) { for (BluetoothDevice device : bondedDevices) { if (!ArrayUtils.contains(mAdapterService.getRemoteUuids(device), if (!Utils.arrayContains(mAdapterService.getRemoteUuids(device), BluetoothUuid.A2DP_SINK)) { continue; } Loading android/app/src/com/android/bluetooth/btservice/AdapterService.java +19 −20 Original line number Diff line number Diff line Loading @@ -109,7 +109,6 @@ import com.android.bluetooth.vc.VolumeControlService; import com.android.internal.R; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.app.IBatteryStats; import com.android.internal.util.ArrayUtils; import com.google.protobuf.InvalidProtocolBufferException; Loading Loading @@ -929,36 +928,36 @@ public class AdapterService extends Service { } if (profile == BluetoothProfile.HEADSET) { return (ArrayUtils.contains(localDeviceUuids, BluetoothUuid.HSP_AG) && ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.HSP)) || (ArrayUtils.contains(localDeviceUuids, BluetoothUuid.HFP_AG) && ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.HFP)); return (Utils.arrayContains(localDeviceUuids, BluetoothUuid.HSP_AG) && Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.HSP)) || (Utils.arrayContains(localDeviceUuids, BluetoothUuid.HFP_AG) && Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.HFP)); } if (profile == BluetoothProfile.HEADSET_CLIENT) { return ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.HFP_AG) && ArrayUtils.contains(localDeviceUuids, BluetoothUuid.HFP); return Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.HFP_AG) && Utils.arrayContains(localDeviceUuids, BluetoothUuid.HFP); } if (profile == BluetoothProfile.A2DP) { return ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.ADV_AUDIO_DIST) || ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.A2DP_SINK); return Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.ADV_AUDIO_DIST) || Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.A2DP_SINK); } if (profile == BluetoothProfile.A2DP_SINK) { return ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.ADV_AUDIO_DIST) || ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.A2DP_SOURCE); return Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.ADV_AUDIO_DIST) || Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.A2DP_SOURCE); } if (profile == BluetoothProfile.OPP) { return ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.OBEX_OBJECT_PUSH); return Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.OBEX_OBJECT_PUSH); } if (profile == BluetoothProfile.HID_HOST) { return ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.HID) || ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.HOGP); return Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.HID) || Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.HOGP); } if (profile == BluetoothProfile.HID_DEVICE) { return mHidDeviceService.getConnectionState(device) == BluetoothProfile.STATE_DISCONNECTED; } if (profile == BluetoothProfile.PAN) { return ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.NAP); return Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.NAP); } if (profile == BluetoothProfile.MAP) { return mMapService.getConnectionState(device) == BluetoothProfile.STATE_CONNECTED; Loading @@ -970,17 +969,17 @@ public class AdapterService extends Service { return true; } if (profile == BluetoothProfile.PBAP_CLIENT) { return ArrayUtils.contains(localDeviceUuids, BluetoothUuid.PBAP_PCE) && ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.PBAP_PSE); return Utils.arrayContains(localDeviceUuids, BluetoothUuid.PBAP_PCE) && Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.PBAP_PSE); } if (profile == BluetoothProfile.HEARING_AID) { return ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.HEARING_AID); return Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.HEARING_AID); } if (profile == BluetoothProfile.SAP) { return ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.SAP); return Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.SAP); } if (profile == BluetoothProfile.VOLUME_CONTROL) { return ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.VOLUME_CONTROL); return Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.VOLUME_CONTROL); } Log.e(TAG, "isSupported: Unexpected profile passed in to function: " + profile); Loading android/app/src/com/android/bluetooth/btservice/PhonePolicy.java +9 −9 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import android.os.ParcelUuid; import android.os.Parcelable; import android.util.Log; import com.android.bluetooth.Utils; import com.android.bluetooth.a2dp.A2dpService; import com.android.bluetooth.btservice.storage.DatabaseManager; import com.android.bluetooth.hearingaid.HearingAidService; Loading @@ -43,7 +44,6 @@ import com.android.bluetooth.hid.HidHostService; import com.android.bluetooth.pan.PanService; import com.android.internal.R; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ArrayUtils; import java.util.HashSet; import java.util.List; Loading Loading @@ -275,8 +275,8 @@ class PhonePolicy { // Set profile priorities only for the profiles discovered on the remote device. // This avoids needless auto-connect attempts to profiles non-existent on the remote device if ((hidService != null) && (ArrayUtils.contains(uuids, BluetoothUuid.HID) || ArrayUtils.contains(uuids, BluetoothUuid.HOGP)) && ( if ((hidService != null) && (Utils.arrayContains(uuids, BluetoothUuid.HID) || Utils.arrayContains(uuids, BluetoothUuid.HOGP)) && ( hidService.getConnectionPolicy(device) == BluetoothProfile.CONNECTION_POLICY_UNKNOWN)) { mAdapterService.getDatabase().setProfileConnectionPolicy(device, Loading @@ -284,23 +284,23 @@ class PhonePolicy { } // If we do not have a stored priority for HFP/A2DP (all roles) then default to on. if ((headsetService != null) && ((ArrayUtils.contains(uuids, BluetoothUuid.HSP) || ArrayUtils.contains(uuids, BluetoothUuid.HFP)) && ( if ((headsetService != null) && ((Utils.arrayContains(uuids, BluetoothUuid.HSP) || Utils.arrayContains(uuids, BluetoothUuid.HFP)) && ( headsetService.getConnectionPolicy(device) == BluetoothProfile.CONNECTION_POLICY_UNKNOWN))) { mAdapterService.getDatabase().setProfileConnectionPolicy(device, BluetoothProfile.HEADSET, BluetoothProfile.CONNECTION_POLICY_ALLOWED); } if ((a2dpService != null) && (ArrayUtils.contains(uuids, BluetoothUuid.A2DP_SINK) || ArrayUtils.contains(uuids, BluetoothUuid.ADV_AUDIO_DIST)) && ( if ((a2dpService != null) && (Utils.arrayContains(uuids, BluetoothUuid.A2DP_SINK) || Utils.arrayContains(uuids, BluetoothUuid.ADV_AUDIO_DIST)) && ( a2dpService.getConnectionPolicy(device) == BluetoothProfile.CONNECTION_POLICY_UNKNOWN)) { mAdapterService.getDatabase().setProfileConnectionPolicy(device, BluetoothProfile.A2DP, BluetoothProfile.CONNECTION_POLICY_ALLOWED); } if ((panService != null) && (ArrayUtils.contains(uuids, BluetoothUuid.PANU) && ( if ((panService != null) && (Utils.arrayContains(uuids, BluetoothUuid.PANU) && ( panService.getConnectionPolicy(device) == BluetoothProfile.CONNECTION_POLICY_UNKNOWN) && mAdapterService.getResources() Loading @@ -309,7 +309,7 @@ class PhonePolicy { BluetoothProfile.PAN, BluetoothProfile.CONNECTION_POLICY_ALLOWED); } if ((hearingAidService != null) && ArrayUtils.contains(uuids, if ((hearingAidService != null) && Utils.arrayContains(uuids, BluetoothUuid.HEARING_AID) && (hearingAidService.getConnectionPolicy(device) == BluetoothProfile.CONNECTION_POLICY_UNKNOWN)) { debugLog("setting hearing aid profile priority for device " + device); Loading android/app/src/com/android/bluetooth/hearingaid/HearingAidService.java +2 −3 Original line number Diff line number Diff line Loading @@ -39,7 +39,6 @@ import com.android.bluetooth.btservice.ProfileService; import com.android.bluetooth.btservice.ServiceFactory; import com.android.bluetooth.btservice.storage.DatabaseManager; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ArrayUtils; import java.util.ArrayList; import java.util.HashMap; Loading Loading @@ -243,7 +242,7 @@ public class HearingAidService extends ProfileService { return false; } ParcelUuid[] featureUuids = mAdapterService.getRemoteUuids(device); if (!ArrayUtils.contains(featureUuids, BluetoothUuid.HEARING_AID)) { if (!Utils.arrayContains(featureUuids, BluetoothUuid.HEARING_AID)) { Log.e(TAG, "Cannot connect to " + device + " : Remote does not have Hearing Aid UUID"); return false; } Loading Loading @@ -401,7 +400,7 @@ public class HearingAidService extends ProfileService { synchronized (mStateMachines) { for (BluetoothDevice device : bondedDevices) { final ParcelUuid[] featureUuids = device.getUuids(); if (!ArrayUtils.contains(featureUuids, BluetoothUuid.HEARING_AID)) { if (!Utils.arrayContains(featureUuids, BluetoothUuid.HEARING_AID)) { continue; } int connectionState = BluetoothProfile.STATE_DISCONNECTED; Loading Loading
android/app/src/com/android/bluetooth/Utils.java +15 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ import java.nio.charset.CharsetDecoder; import java.time.Instant; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.Objects; import java.util.UUID; import java.util.concurrent.TimeUnit; Loading Loading @@ -634,4 +635,18 @@ public final class Utils { return 1 == context.getContentResolver().update(uri, values, null, null); } /** * Checks that value is present as at least one of the elements of the array. * @param array the array to check in * @param value the value to check for * @return true if the value is present in the array */ public static <T> boolean arrayContains(@Nullable T[] array, T value) { if (array == null) return false; for (T element : array) { if (Objects.equals(element, value)) return true; } return false; } }
android/app/src/com/android/bluetooth/a2dp/A2dpService.java +2 −3 Original line number Diff line number Diff line Loading @@ -47,7 +47,6 @@ import com.android.bluetooth.btservice.ServiceFactory; import com.android.bluetooth.btservice.storage.DatabaseManager; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ArrayUtils; import java.util.ArrayList; import java.util.List; Loading Loading @@ -248,7 +247,7 @@ public class A2dpService extends ProfileService { Log.e(TAG, "Cannot connect to " + device + " : CONNECTION_POLICY_FORBIDDEN"); return false; } if (!ArrayUtils.contains(mAdapterService.getRemoteUuids(device), if (!Utils.arrayContains(mAdapterService.getRemoteUuids(device), BluetoothUuid.A2DP_SINK)) { Log.e(TAG, "Cannot connect to " + device + " : Remote does not have A2DP Sink UUID"); return false; Loading Loading @@ -400,7 +399,7 @@ public class A2dpService extends ProfileService { } synchronized (mStateMachines) { for (BluetoothDevice device : bondedDevices) { if (!ArrayUtils.contains(mAdapterService.getRemoteUuids(device), if (!Utils.arrayContains(mAdapterService.getRemoteUuids(device), BluetoothUuid.A2DP_SINK)) { continue; } Loading
android/app/src/com/android/bluetooth/btservice/AdapterService.java +19 −20 Original line number Diff line number Diff line Loading @@ -109,7 +109,6 @@ import com.android.bluetooth.vc.VolumeControlService; import com.android.internal.R; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.app.IBatteryStats; import com.android.internal.util.ArrayUtils; import com.google.protobuf.InvalidProtocolBufferException; Loading Loading @@ -929,36 +928,36 @@ public class AdapterService extends Service { } if (profile == BluetoothProfile.HEADSET) { return (ArrayUtils.contains(localDeviceUuids, BluetoothUuid.HSP_AG) && ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.HSP)) || (ArrayUtils.contains(localDeviceUuids, BluetoothUuid.HFP_AG) && ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.HFP)); return (Utils.arrayContains(localDeviceUuids, BluetoothUuid.HSP_AG) && Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.HSP)) || (Utils.arrayContains(localDeviceUuids, BluetoothUuid.HFP_AG) && Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.HFP)); } if (profile == BluetoothProfile.HEADSET_CLIENT) { return ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.HFP_AG) && ArrayUtils.contains(localDeviceUuids, BluetoothUuid.HFP); return Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.HFP_AG) && Utils.arrayContains(localDeviceUuids, BluetoothUuid.HFP); } if (profile == BluetoothProfile.A2DP) { return ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.ADV_AUDIO_DIST) || ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.A2DP_SINK); return Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.ADV_AUDIO_DIST) || Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.A2DP_SINK); } if (profile == BluetoothProfile.A2DP_SINK) { return ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.ADV_AUDIO_DIST) || ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.A2DP_SOURCE); return Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.ADV_AUDIO_DIST) || Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.A2DP_SOURCE); } if (profile == BluetoothProfile.OPP) { return ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.OBEX_OBJECT_PUSH); return Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.OBEX_OBJECT_PUSH); } if (profile == BluetoothProfile.HID_HOST) { return ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.HID) || ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.HOGP); return Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.HID) || Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.HOGP); } if (profile == BluetoothProfile.HID_DEVICE) { return mHidDeviceService.getConnectionState(device) == BluetoothProfile.STATE_DISCONNECTED; } if (profile == BluetoothProfile.PAN) { return ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.NAP); return Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.NAP); } if (profile == BluetoothProfile.MAP) { return mMapService.getConnectionState(device) == BluetoothProfile.STATE_CONNECTED; Loading @@ -970,17 +969,17 @@ public class AdapterService extends Service { return true; } if (profile == BluetoothProfile.PBAP_CLIENT) { return ArrayUtils.contains(localDeviceUuids, BluetoothUuid.PBAP_PCE) && ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.PBAP_PSE); return Utils.arrayContains(localDeviceUuids, BluetoothUuid.PBAP_PCE) && Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.PBAP_PSE); } if (profile == BluetoothProfile.HEARING_AID) { return ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.HEARING_AID); return Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.HEARING_AID); } if (profile == BluetoothProfile.SAP) { return ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.SAP); return Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.SAP); } if (profile == BluetoothProfile.VOLUME_CONTROL) { return ArrayUtils.contains(remoteDeviceUuids, BluetoothUuid.VOLUME_CONTROL); return Utils.arrayContains(remoteDeviceUuids, BluetoothUuid.VOLUME_CONTROL); } Log.e(TAG, "isSupported: Unexpected profile passed in to function: " + profile); Loading
android/app/src/com/android/bluetooth/btservice/PhonePolicy.java +9 −9 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import android.os.ParcelUuid; import android.os.Parcelable; import android.util.Log; import com.android.bluetooth.Utils; import com.android.bluetooth.a2dp.A2dpService; import com.android.bluetooth.btservice.storage.DatabaseManager; import com.android.bluetooth.hearingaid.HearingAidService; Loading @@ -43,7 +44,6 @@ import com.android.bluetooth.hid.HidHostService; import com.android.bluetooth.pan.PanService; import com.android.internal.R; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ArrayUtils; import java.util.HashSet; import java.util.List; Loading Loading @@ -275,8 +275,8 @@ class PhonePolicy { // Set profile priorities only for the profiles discovered on the remote device. // This avoids needless auto-connect attempts to profiles non-existent on the remote device if ((hidService != null) && (ArrayUtils.contains(uuids, BluetoothUuid.HID) || ArrayUtils.contains(uuids, BluetoothUuid.HOGP)) && ( if ((hidService != null) && (Utils.arrayContains(uuids, BluetoothUuid.HID) || Utils.arrayContains(uuids, BluetoothUuid.HOGP)) && ( hidService.getConnectionPolicy(device) == BluetoothProfile.CONNECTION_POLICY_UNKNOWN)) { mAdapterService.getDatabase().setProfileConnectionPolicy(device, Loading @@ -284,23 +284,23 @@ class PhonePolicy { } // If we do not have a stored priority for HFP/A2DP (all roles) then default to on. if ((headsetService != null) && ((ArrayUtils.contains(uuids, BluetoothUuid.HSP) || ArrayUtils.contains(uuids, BluetoothUuid.HFP)) && ( if ((headsetService != null) && ((Utils.arrayContains(uuids, BluetoothUuid.HSP) || Utils.arrayContains(uuids, BluetoothUuid.HFP)) && ( headsetService.getConnectionPolicy(device) == BluetoothProfile.CONNECTION_POLICY_UNKNOWN))) { mAdapterService.getDatabase().setProfileConnectionPolicy(device, BluetoothProfile.HEADSET, BluetoothProfile.CONNECTION_POLICY_ALLOWED); } if ((a2dpService != null) && (ArrayUtils.contains(uuids, BluetoothUuid.A2DP_SINK) || ArrayUtils.contains(uuids, BluetoothUuid.ADV_AUDIO_DIST)) && ( if ((a2dpService != null) && (Utils.arrayContains(uuids, BluetoothUuid.A2DP_SINK) || Utils.arrayContains(uuids, BluetoothUuid.ADV_AUDIO_DIST)) && ( a2dpService.getConnectionPolicy(device) == BluetoothProfile.CONNECTION_POLICY_UNKNOWN)) { mAdapterService.getDatabase().setProfileConnectionPolicy(device, BluetoothProfile.A2DP, BluetoothProfile.CONNECTION_POLICY_ALLOWED); } if ((panService != null) && (ArrayUtils.contains(uuids, BluetoothUuid.PANU) && ( if ((panService != null) && (Utils.arrayContains(uuids, BluetoothUuid.PANU) && ( panService.getConnectionPolicy(device) == BluetoothProfile.CONNECTION_POLICY_UNKNOWN) && mAdapterService.getResources() Loading @@ -309,7 +309,7 @@ class PhonePolicy { BluetoothProfile.PAN, BluetoothProfile.CONNECTION_POLICY_ALLOWED); } if ((hearingAidService != null) && ArrayUtils.contains(uuids, if ((hearingAidService != null) && Utils.arrayContains(uuids, BluetoothUuid.HEARING_AID) && (hearingAidService.getConnectionPolicy(device) == BluetoothProfile.CONNECTION_POLICY_UNKNOWN)) { debugLog("setting hearing aid profile priority for device " + device); Loading
android/app/src/com/android/bluetooth/hearingaid/HearingAidService.java +2 −3 Original line number Diff line number Diff line Loading @@ -39,7 +39,6 @@ import com.android.bluetooth.btservice.ProfileService; import com.android.bluetooth.btservice.ServiceFactory; import com.android.bluetooth.btservice.storage.DatabaseManager; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ArrayUtils; import java.util.ArrayList; import java.util.HashMap; Loading Loading @@ -243,7 +242,7 @@ public class HearingAidService extends ProfileService { return false; } ParcelUuid[] featureUuids = mAdapterService.getRemoteUuids(device); if (!ArrayUtils.contains(featureUuids, BluetoothUuid.HEARING_AID)) { if (!Utils.arrayContains(featureUuids, BluetoothUuid.HEARING_AID)) { Log.e(TAG, "Cannot connect to " + device + " : Remote does not have Hearing Aid UUID"); return false; } Loading Loading @@ -401,7 +400,7 @@ public class HearingAidService extends ProfileService { synchronized (mStateMachines) { for (BluetoothDevice device : bondedDevices) { final ParcelUuid[] featureUuids = device.getUuids(); if (!ArrayUtils.contains(featureUuids, BluetoothUuid.HEARING_AID)) { if (!Utils.arrayContains(featureUuids, BluetoothUuid.HEARING_AID)) { continue; } int connectionState = BluetoothProfile.STATE_DISCONNECTED; Loading