diff options
| -rw-r--r-- | core/java/android/bluetooth/BluetoothGatt.java | 35 | ||||
| -rw-r--r-- | core/java/android/bluetooth/IBluetoothGatt.aidl | 2 |
2 files changed, 37 insertions, 0 deletions
diff --git a/core/java/android/bluetooth/BluetoothGatt.java b/core/java/android/bluetooth/BluetoothGatt.java index 1a969b9ca722..9144ae722911 100644 --- a/core/java/android/bluetooth/BluetoothGatt.java +++ b/core/java/android/bluetooth/BluetoothGatt.java @@ -947,6 +947,41 @@ public final class BluetoothGatt implements BluetoothProfile { } /** + * Reads the characteristic using its UUID from the associated remote device. + * + * <p>This is an asynchronous operation. The result of the read operation + * is reported by the {@link BluetoothGattCallback#onCharacteristicRead} + * callback. + * + * <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission. + * + * @param uuid UUID of characteristic to read from the remote device + * @return true, if the read operation was initiated successfully + * @hide + */ + public boolean readUsingCharacteristicUuid(UUID uuid, int startHandle, int endHandle) { + if (VDBG) Log.d(TAG, "readUsingCharacteristicUuid() - uuid: " + uuid); + if (mService == null || mClientIf == 0) return false; + + synchronized(mDeviceBusy) { + if (mDeviceBusy) return false; + mDeviceBusy = true; + } + + try { + mService.readUsingCharacteristicUuid(mClientIf, mDevice.getAddress(), + new ParcelUuid(uuid), startHandle, endHandle, AUTHENTICATION_NONE); + } catch (RemoteException e) { + Log.e(TAG,"",e); + mDeviceBusy = false; + return false; + } + + return true; + } + + + /** * Writes a given characteristic and its values to the associated remote device. * * <p>Once the write operation has been completed, the diff --git a/core/java/android/bluetooth/IBluetoothGatt.aidl b/core/java/android/bluetooth/IBluetoothGatt.aidl index 334e88b69fde..38ba9adafe68 100644 --- a/core/java/android/bluetooth/IBluetoothGatt.aidl +++ b/core/java/android/bluetooth/IBluetoothGatt.aidl @@ -77,6 +77,8 @@ interface IBluetoothGatt { void refreshDevice(in int clientIf, in String address); void discoverServices(in int clientIf, in String address); void readCharacteristic(in int clientIf, in String address, in int handle, in int authReq); + void readUsingCharacteristicUuid(in int clientIf, in String address, in ParcelUuid uuid, + in int startHandle, in int endHandle, in int authReq); void writeCharacteristic(in int clientIf, in String address, in int handle, in int writeType, in int authReq, in byte[] value); void readDescriptor(in int clientIf, in String address, in int handle, in int authReq); |