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

Commit e1c0cbcd authored by Matthew Xie's avatar Matthew Xie Committed by The Android Automerger
Browse files

Donot bind to GATT service when BLE is not supported

bug 8664724

Change-Id: I9b9222cd5877babcded73798a5d1ff13fd10e791
parent b5a75b20
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -1472,9 +1472,13 @@ public final class BluetoothAdapter {

            try {
                IBluetoothGatt iGatt = mManagerService.getBluetoothGatt();
                if (iGatt == null) {
                    // BLE is not supported
                    return false;
                }

                UUID uuid = UUID.randomUUID();
                GattCallbackWrapper wrapper = new GattCallbackWrapper(this, callback, serviceUuids);

                iGatt.registerClient(new ParcelUuid(uuid), wrapper);
                if (wrapper.scanStarted()) {
                    mLeScanClients.put(callback, wrapper);
+4 −0
Original line number Diff line number Diff line
@@ -1187,6 +1187,10 @@ public final class BluetoothDevice implements Parcelable {
        IBluetoothManager managerService = adapter.getBluetoothManager();
        try {
            IBluetoothGatt iGatt = managerService.getBluetoothGatt();
            if (iGatt == null) {
                // BLE is not supported
                return null;
            }
            BluetoothGatt gatt = new BluetoothGatt(context, iGatt, this);
            gatt.connect(autoConnect, callback);
            return gatt;
+8 −4
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
import android.content.pm.PackageManager;
import android.os.Binder;
import android.os.Handler;
import android.os.HandlerThread;
@@ -1092,11 +1093,14 @@ class BluetoothManagerService extends IBluetoothManager.Stub {

                if (isUp) {
                    // connect to GattService
                    if (mContext.getPackageManager().hasSystemFeature(
                                                     PackageManager.FEATURE_BLUETOOTH_LE)) {
                        Intent i = new Intent(IBluetoothGatt.class.getName());
                        if (!mContext.bindServiceAsUser(i, mConnection, Context.BIND_AUTO_CREATE,
                                                        UserHandle.CURRENT)) {
                            Log.e(TAG, "Fail to bind to: " + IBluetoothGatt.class.getName());
                        }
                    }
                } else {
                    //If Bluetooth is off, send service down event to proxy objects, and unbind
                    if (!isUp && canUnbindBluetoothService()) {