return service.getBondState(device);
}
+ public long getSupportedProfiles() {
+ AdapterService service = getService();
+ if (service == null) return 0;
+ return service.getSupportedProfiles();
+ }
+
public int getConnectionState(BluetoothDevice device) {
AdapterService service = getService();
if (service == null) return 0;
return deviceProp.getBondState();
}
+ long getSupportedProfiles() {
+ return Config.getSupportedProfilesBitMask();
+ }
+
int getConnectionState(BluetoothDevice device) {
enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission");
byte[] addr = Utils.getBytesFromAddress(device.getAddress());
return SUPPORTED_PROFILES;
}
+ static long getSupportedProfilesBitMask() {
+ long mask = 0;
+ for (final Class profileClass : getSupportedProfiles()) {
+ final int profileIndex = getProfileIndex(profileClass);
+
+ if (profileIndex != -1) {
+ mask |= 1 << getProfileIndex(profileClass);
+ }
+ }
+
+ return mask;
+ }
+
private static boolean isProfileDisabled(Context context, Class profile) {
+ final int profileIndex = getProfileIndex(profile);
+
+ if (profileIndex == -1) {
+ Log.w(TAG, "Could not find profile bit mask");
+ return false;
+ }
+
+ final ContentResolver resolver = context.getContentResolver();
+ final long disabledProfilesBitMask = Settings.Global.getLong(resolver,
+ Settings.Global.BLUETOOTH_DISABLED_PROFILES, 0);
+ final long profileBit = 1 << profileIndex;
+
+ return (disabledProfilesBitMask & profileBit) != 0;
+ }
+
+ private static int getProfileIndex(Class profile) {
int profileIndex = -1;
if (profile == HeadsetService.class) {
profileIndex = BluetoothProfile.SAP;
}
- if (profileIndex == -1) {
- Log.d(TAG, "Could not find profile bit mask");
- return false;
- }
-
- final ContentResolver resolver = context.getContentResolver();
- final long disabledProfilesBitMask = Settings.Global.getLong(resolver,
- Settings.Global.BLUETOOTH_DISABLED_PROFILES, 0);
- long profileBit = 1 << profileIndex;
-
- return (disabledProfilesBitMask & profileBit) != 0;
+ return profileIndex;
}
}