diff options
| author | TreeHugger Robot <treehugger-gerrit@google.com> | 2017-07-12 02:47:56 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2017-07-12 02:47:56 +0000 |
| commit | b822ad3e06a353a38e4013b3fd6c6c26123e2720 (patch) | |
| tree | 51dec9b7024cbc2ee229ed7e139d2a67d14a671d /core/java/android | |
| parent | a249de50d11d023f764edf245ba634ee43fa7e00 (diff) | |
| parent | 79bf7d755f6ed896902130849344f134b44aeb13 (diff) | |
Merge "GATT: Expose opportunistic client API to Java" into oc-dr1-dev
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/bluetooth/BluetoothDevice.java | 34 | ||||
| -rw-r--r-- | core/java/android/bluetooth/BluetoothGatt.java | 10 | ||||
| -rw-r--r-- | core/java/android/bluetooth/IBluetoothGatt.aidl | 2 |
3 files changed, 40 insertions, 6 deletions
diff --git a/core/java/android/bluetooth/BluetoothDevice.java b/core/java/android/bluetooth/BluetoothDevice.java index 27b802e59c58..a206b53b5360 100644 --- a/core/java/android/bluetooth/BluetoothDevice.java +++ b/core/java/android/bluetooth/BluetoothDevice.java @@ -1758,6 +1758,38 @@ public final class BluetoothDevice implements Parcelable { public BluetoothGatt connectGatt(Context context, boolean autoConnect, BluetoothGattCallback callback, int transport, int phy, Handler handler) { + return connectGatt(context, autoConnect, callback, transport, false, phy, handler); + } + + /** + * Connect to GATT Server hosted by this device. Caller acts as GATT client. + * The callback is used to deliver results to Caller, such as connection status as well + * as any further GATT client operations. + * The method returns a BluetoothGatt instance. You can use BluetoothGatt to conduct + * GATT client operations. + * @param callback GATT callback handler that will receive asynchronous callbacks. + * @param autoConnect Whether to directly connect to the remote device (false) + * or to automatically connect as soon as the remote + * device becomes available (true). + * @param transport preferred transport for GATT connections to remote dual-mode devices + * {@link BluetoothDevice#TRANSPORT_AUTO} or + * {@link BluetoothDevice#TRANSPORT_BREDR} or {@link BluetoothDevice#TRANSPORT_LE} + * @param opportunistic Whether this GATT client is opportunistic. An opportunistic GATT client + * does not hold a GATT connection. It automatically disconnects when no + * other GATT connections are active for the remote device. + * @param phy preferred PHY for connections to remote LE device. Bitwise OR of any of + * {@link BluetoothDevice#PHY_LE_1M_MASK}, {@link BluetoothDevice#PHY_LE_2M_MASK}, + * an d{@link BluetoothDevice#PHY_LE_CODED_MASK}. This option does not take effect + * if {@code autoConnect} is set to true. + * @param handler The handler to use for the callback. If {@code null}, callbacks will happen + * on an un-specified background thread. + * @return A BluetoothGatt instance. You can use BluetoothGatt to conduct GATT client + * operations. + * @hide + */ + public BluetoothGatt connectGatt(Context context, boolean autoConnect, + BluetoothGattCallback callback, int transport, + boolean opportunistic, int phy, Handler handler) { if (callback == null) throw new NullPointerException("callback is null"); @@ -1771,7 +1803,7 @@ public final class BluetoothDevice implements Parcelable { // BLE is not supported return null; } - BluetoothGatt gatt = new BluetoothGatt(iGatt, this, transport, phy); + BluetoothGatt gatt = new BluetoothGatt(iGatt, this, transport, opportunistic, phy); gatt.connect(autoConnect, callback, handler); return gatt; } catch (RemoteException e) {Log.e(TAG, "", e);} diff --git a/core/java/android/bluetooth/BluetoothGatt.java b/core/java/android/bluetooth/BluetoothGatt.java index a3d6e9f1e499..678159b71296 100644 --- a/core/java/android/bluetooth/BluetoothGatt.java +++ b/core/java/android/bluetooth/BluetoothGatt.java @@ -53,6 +53,7 @@ public final class BluetoothGatt implements BluetoothProfile { private Boolean mDeviceBusy = false; private int mTransport; private int mPhy; + private boolean mOpportunistic; private static final int AUTH_RETRY_STATE_IDLE = 0; private static final int AUTH_RETRY_STATE_NO_MITM = 1; @@ -172,7 +173,7 @@ public final class BluetoothGatt implements BluetoothProfile { } try { mService.clientConnect(mClientIf, mDevice.getAddress(), - !mAutoConnect, mTransport, mPhy); // autoConnect is inverse of "isDirect" + !mAutoConnect, mTransport, mOpportunistic, mPhy); // autoConnect is inverse of "isDirect" } catch (RemoteException e) { Log.e(TAG,"",e); } @@ -628,11 +629,12 @@ public final class BluetoothGatt implements BluetoothProfile { }; /*package*/ BluetoothGatt(IBluetoothGatt iGatt, BluetoothDevice device, - int transport, int phy) { + int transport, boolean opportunistic, int phy) { mService = iGatt; mDevice = device; mTransport = transport; mPhy = phy; + mOpportunistic = opportunistic; mServices = new ArrayList<BluetoothGattService>(); mConnState = CONN_STATE_IDLE; @@ -839,8 +841,8 @@ public final class BluetoothGatt implements BluetoothProfile { */ public boolean connect() { try { - mService.clientConnect(mClientIf, mDevice.getAddress(), - false, mTransport, mPhy); // autoConnect is inverse of "isDirect" + mService.clientConnect(mClientIf, mDevice.getAddress(), false, mTransport, + mOpportunistic, mPhy); // autoConnect is inverse of "isDirect" return true; } catch (RemoteException e) { Log.e(TAG,"",e); diff --git a/core/java/android/bluetooth/IBluetoothGatt.aidl b/core/java/android/bluetooth/IBluetoothGatt.aidl index 167f5e9e1080..e87f07007223 100644 --- a/core/java/android/bluetooth/IBluetoothGatt.aidl +++ b/core/java/android/bluetooth/IBluetoothGatt.aidl @@ -74,7 +74,7 @@ interface IBluetoothGatt { void registerClient(in ParcelUuid appId, in IBluetoothGattCallback callback); void unregisterClient(in int clientIf); - void clientConnect(in int clientIf, in String address, in boolean isDirect, in int transport, in int phy); + void clientConnect(in int clientIf, in String address, in boolean isDirect, in int transport, in boolean opportunistic, in int phy); void clientDisconnect(in int clientIf, in String address); void clientSetPreferredPhy(in int clientIf, in String address, in int txPhy, in int rxPhy, in int phyOptions); void clientReadPhy(in int clientIf, in String address); |
