Merge "Donot bind to GATT service when BLE is not supported" into jb-mr2-dev
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,10 +1093,13 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
|
||||
|
||||
if (isUp) {
|
||||
// connect to GattService
|
||||
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());
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user