Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 25f8fd66 authored by Bryce Lee's avatar Bryce Lee Committed by Android (Google) Code Review
Browse files

Merge "Implement new API for retrieving supported Bluetooth profiles." into cw-f-dev

parents 270b6e98 a31b0461
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -1126,6 +1126,12 @@ public class AdapterService extends Service {
            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;
@@ -1905,6 +1911,10 @@ public class AdapterService extends Service {
        return deviceProp.getBondState();
    }

    long getSupportedProfiles() {
        return Config.getSupportedProfilesBitMask();
    }

    int getConnectionState(BluetoothDevice device) {
        enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission");
        byte[] addr = Utils.getBytesFromAddress(device.getAddress());
+30 −11
Original line number Diff line number Diff line
@@ -108,7 +108,36 @@ public class Config {
        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) {
@@ -137,16 +166,6 @@ public class Config {
            profileIndex = BluetoothProfile.PBAP_CLIENT;
        }

        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;
    }
}