Added in [API level 18](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Ctors](https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#pubctors) \| [Methods](https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#inhmethods)

# BluetoothGattCallback

*** ** * ** ***


`
public


abstract
class
BluetoothGattCallback
`


`

extends https://developer.android.com/reference/java/lang/Object


`

`


`

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.bluetooth.BluetoothGattCallback |

<br />

*** ** * ** ***

This abstract class is used to implement `https://developer.android.com/reference/android/bluetooth/BluetoothGatt` callbacks.

## Summary

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#BluetoothGattCallback()() ` |

| ### Public methods ||
|---|---|
| ` void` | ` https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#onCharacteristicChanged(android.bluetooth.BluetoothGatt,%20android.bluetooth.BluetoothGattCharacteristic,%20byte[])(https://developer.android.com/reference/android/bluetooth/BluetoothGatt gatt, https://developer.android.com/reference/android/bluetooth/BluetoothGattCharacteristic characteristic, byte[] value) ` Callback triggered as a result of a remote characteristic notification. |
| ` void` | ` https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#onCharacteristicChanged(android.bluetooth.BluetoothGatt,%20android.bluetooth.BluetoothGattCharacteristic)(https://developer.android.com/reference/android/bluetooth/BluetoothGatt gatt, https://developer.android.com/reference/android/bluetooth/BluetoothGattCharacteristic characteristic) ` *This method was deprecated in API level 33. Use `https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#onCharacteristicChanged(android.bluetooth.BluetoothGatt,%20android.bluetooth.BluetoothGattCharacteristic,%20byte[])` as it is memory safe by providing the characteristic value at the time of notification.* |
| ` void` | ` https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#onCharacteristicRead(android.bluetooth.BluetoothGatt,%20android.bluetooth.BluetoothGattCharacteristic,%20byte[],%20int)(https://developer.android.com/reference/android/bluetooth/BluetoothGatt gatt, https://developer.android.com/reference/android/bluetooth/BluetoothGattCharacteristic characteristic, byte[] value, int status) ` Callback reporting the result of a characteristic read operation. |
| ` void` | ` https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#onCharacteristicRead(android.bluetooth.BluetoothGatt,%20android.bluetooth.BluetoothGattCharacteristic,%20int)(https://developer.android.com/reference/android/bluetooth/BluetoothGatt gatt, https://developer.android.com/reference/android/bluetooth/BluetoothGattCharacteristic characteristic, int status) ` *This method was deprecated in API level 33. Use `https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#onCharacteristicRead(android.bluetooth.BluetoothGatt,%20android.bluetooth.BluetoothGattCharacteristic,%20byte[],%20int)` as it is memory safe* |
| ` void` | ` https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#onCharacteristicWrite(android.bluetooth.BluetoothGatt,%20android.bluetooth.BluetoothGattCharacteristic,%20int)(https://developer.android.com/reference/android/bluetooth/BluetoothGatt gatt, https://developer.android.com/reference/android/bluetooth/BluetoothGattCharacteristic characteristic, int status) ` Callback indicating the result of a characteristic write operation. |
| ` void` | ` https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#onConnectionStateChange(android.bluetooth.BluetoothGatt,%20int,%20int)(https://developer.android.com/reference/android/bluetooth/BluetoothGatt gatt, int status, int newState) ` Callback indicating when GATT client has connected/disconnected to/from a remote GATT server. |
| ` void` | ` https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#onConnectionUpdated(android.bluetooth.BluetoothGatt,%20int,%20int,%20int,%20int)(https://developer.android.com/reference/android/bluetooth/BluetoothGatt gatt, int interval, int latency, int supervisionTimeout, int status) ` Callback indicating the connection parameters were updated. |
| ` void` | ` https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#onDescriptorRead(android.bluetooth.BluetoothGatt,%20android.bluetooth.BluetoothGattDescriptor,%20int,%20byte[])(https://developer.android.com/reference/android/bluetooth/BluetoothGatt gatt, https://developer.android.com/reference/android/bluetooth/BluetoothGattDescriptor descriptor, int status, byte[] value) ` Callback reporting the result of a descriptor read operation. |
| ` void` | ` https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#onDescriptorRead(android.bluetooth.BluetoothGatt,%20android.bluetooth.BluetoothGattDescriptor,%20int)(https://developer.android.com/reference/android/bluetooth/BluetoothGatt gatt, https://developer.android.com/reference/android/bluetooth/BluetoothGattDescriptor descriptor, int status) ` *This method was deprecated in API level 33. Use `https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#onDescriptorRead(android.bluetooth.BluetoothGatt,%20android.bluetooth.BluetoothGattDescriptor,%20int,%20byte[])` as it is memory safe by providing the descriptor value at the time it was read.* |
| ` void` | ` https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#onDescriptorWrite(android.bluetooth.BluetoothGatt,%20android.bluetooth.BluetoothGattDescriptor,%20int)(https://developer.android.com/reference/android/bluetooth/BluetoothGatt gatt, https://developer.android.com/reference/android/bluetooth/BluetoothGattDescriptor descriptor, int status) ` Callback indicating the result of a descriptor write operation. |
| ` void` | ` https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#onMtuChanged(android.bluetooth.BluetoothGatt,%20int,%20int)(https://developer.android.com/reference/android/bluetooth/BluetoothGatt gatt, int mtu, int status) ` Callback indicating the MTU for a given device connection has changed. |
| ` void` | ` https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#onPhyRead(android.bluetooth.BluetoothGatt,%20int,%20int,%20int)(https://developer.android.com/reference/android/bluetooth/BluetoothGatt gatt, int txPhy, int rxPhy, int status) ` Callback triggered as result of `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#readPhy()` |
| ` void` | ` https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#onPhyUpdate(android.bluetooth.BluetoothGatt,%20int,%20int,%20int)(https://developer.android.com/reference/android/bluetooth/BluetoothGatt gatt, int txPhy, int rxPhy, int status) ` Callback triggered as result of `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#setPreferredPhy(int,%20int,%20int)`, or as a result of remote device changing the PHY. |
| ` void` | ` https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#onReadRemoteRssi(android.bluetooth.BluetoothGatt,%20int,%20int)(https://developer.android.com/reference/android/bluetooth/BluetoothGatt gatt, int rssi, int status) ` Callback reporting the RSSI for a remote device connection. |
| ` void` | ` https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#onReliableWriteCompleted(android.bluetooth.BluetoothGatt,%20int)(https://developer.android.com/reference/android/bluetooth/BluetoothGatt gatt, int status) ` Callback invoked when a reliable write transaction has been completed. |
| ` void` | ` https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#onServiceChanged(android.bluetooth.BluetoothGatt)(https://developer.android.com/reference/android/bluetooth/BluetoothGatt gatt) ` Callback indicating service changed event is received Receiving this event means that the GATT database is out of sync with the remote device. |
| ` void` | ` https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#onServicesDiscovered(android.bluetooth.BluetoothGatt,%20int)(https://developer.android.com/reference/android/bluetooth/BluetoothGatt gatt, int status) ` Callback invoked when the list of remote services, characteristics and descriptors for the remote device have been updated, ie new services have been discovered. |
| ` void` | ` https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#onSubrateChange(android.bluetooth.BluetoothGatt,%20int,%20int)(https://developer.android.com/reference/android/bluetooth/BluetoothGatt gatt, int subrateMode, int status) ` Callback indicating LE connection's subrate parameters have changed. |

### Inherited methods

From class `

https://developer.android.com/reference/java/lang/Object

` `


https://developer.android.com/reference/java/lang/Object` `
https://developer.android.com/reference/java/lang/Object#clone()()
`

Creates and returns a copy of this object.


`


boolean` `
https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj)
`

Indicates whether some other object is "equal to" this one.


`


void` `
https://developer.android.com/reference/java/lang/Object#finalize()()
`

Called by the garbage collector on an object when garbage collection
determines that there are no more references to the object.


`


final

https://developer.android.com/reference/java/lang/Class<?>` `
https://developer.android.com/reference/java/lang/Object#getClass()()
`

Returns the runtime class of this `Object`.


`


int` `
https://developer.android.com/reference/java/lang/Object#hashCode()()
`

Returns a hash code value for the object.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#notify()()
`

Wakes up a single thread that is waiting on this object's
monitor.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#notifyAll()()
`

Wakes up all threads that are waiting on this object's monitor.


`


https://developer.android.com/reference/java/lang/String` `
https://developer.android.com/reference/java/lang/Object#toString()()
`

Returns a string representation of the object.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos)
`

Causes the current thread to wait until it is awakened, typically
by being *notified* or *interrupted*, or until a
certain amount of real time has elapsed.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis)
`

Causes the current thread to wait until it is awakened, typically
by being *notified* or *interrupted*, or until a
certain amount of real time has elapsed.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#wait()()
`

Causes the current thread to wait until it is awakened, typically
by being *notified* or *interrupted*.


## Public constructors

### BluetoothGattCallback

Added in [API level 18](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public BluetoothGattCallback ()
```

<br />

<br />

## Public methods

### onCharacteristicChanged

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onCharacteristicChanged (BluetoothGatt gatt, 
                BluetoothGattCharacteristic characteristic, 
                byte[] value)
```

Callback triggered as a result of a remote characteristic notification. Note that the value
within the characteristic object may have changed since receiving the remote characteristic
notification, so check the parameter value for the value at the time of notification.

<br />

| Parameters ||
|---|---|
| `gatt` | `BluetoothGatt`: GATT client the characteristic is associated with. This value cannot be `null`. <br /> |
| `characteristic` | `BluetoothGattCharacteristic`: Characteristic that has been updated as a result of a remote notification event. This value cannot be `null`. <br /> |
| `value` | `byte`: notified characteristic value. This value cannot be `null`. <br /> |

### onCharacteristicChanged

Added in [API level 18](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onCharacteristicChanged (BluetoothGatt gatt, 
                BluetoothGattCharacteristic characteristic)
```


**This method was deprecated
in API level 33.**   

Use `https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#onCharacteristicChanged(android.bluetooth.BluetoothGatt,%20android.bluetooth.BluetoothGattCharacteristic,%20byte[])` as it is memory safe by providing the
characteristic value at the time of notification.

Callback triggered as a result of a remote characteristic notification.

<br />

| Parameters ||
|---|---|
| `gatt` | `BluetoothGatt`: GATT client the characteristic is associated with <br /> |
| `characteristic` | `BluetoothGattCharacteristic`: Characteristic that has been updated as a result of a remote notification event. <br /> |

### onCharacteristicRead

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onCharacteristicRead (BluetoothGatt gatt, 
                BluetoothGattCharacteristic characteristic, 
                byte[] value, 
                int status)
```

Callback reporting the result of a characteristic read operation.

<br />

| Parameters ||
|---|---|
| `gatt` | `BluetoothGatt`: GATT client invoked `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#readCharacteristic(android.bluetooth.BluetoothGattCharacteristic)` This value cannot be `null`. <br /> |
| `characteristic` | `BluetoothGattCharacteristic`: Characteristic that was read from the associated remote device. This value cannot be `null`. <br /> |
| `value` | `byte`: the value of the characteristic. This value cannot be `null`. <br /> |
| `status` | `int`: `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_SUCCESS` if the read operation was completed successfully. <br /> |

### onCharacteristicRead

Added in [API level 18](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onCharacteristicRead (BluetoothGatt gatt, 
                BluetoothGattCharacteristic characteristic, 
                int status)
```


**This method was deprecated
in API level 33.**   

Use `https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#onCharacteristicRead(android.bluetooth.BluetoothGatt,%20android.bluetooth.BluetoothGattCharacteristic,%20byte[],%20int)` as it is memory safe

Callback reporting the result of a characteristic read operation.

<br />

| Parameters ||
|---|---|
| `gatt` | `BluetoothGatt`: GATT client invoked `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#readCharacteristic(android.bluetooth.BluetoothGattCharacteristic)` <br /> |
| `characteristic` | `BluetoothGattCharacteristic`: Characteristic that was read from the associated remote device. <br /> |
| `status` | `int`: `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_SUCCESS` if the read operation was completed successfully. <br /> |

### onCharacteristicWrite

Added in [API level 18](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onCharacteristicWrite (BluetoothGatt gatt, 
                BluetoothGattCharacteristic characteristic, 
                int status)
```

Callback indicating the result of a characteristic write operation.

If this callback is invoked while a reliable write transaction is in progress, the value
of the characteristic represents the value reported by the remote device. An application
should compare this value to the desired value to be written. If the values don't match, the
application must abort the reliable write transaction.

<br />

| Parameters ||
|---|---|
| `gatt` | `BluetoothGatt`: GATT client that invoked `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#writeCharacteristic(android.bluetooth.BluetoothGattCharacteristic,%20byte[],%20int)` <br /> |
| `characteristic` | `BluetoothGattCharacteristic`: Characteristic that was written to the associated remote device. <br /> |
| `status` | `int`: The result of the write operation `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_SUCCESS` if the operation succeeds. <br /> |

### onConnectionStateChange

Added in [API level 18](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onConnectionStateChange (BluetoothGatt gatt, 
                int status, 
                int newState)
```

Callback indicating when GATT client has connected/disconnected to/from a remote GATT server.

<br />

| Parameters ||
|---|---|
| `gatt` | `BluetoothGatt`: GATT client <br /> |
| `status` | `int`: Status of the connect or disconnect operation. `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_SUCCESS` if the operation succeeds. <br /> |
| `newState` | `int`: Returns the new connection state. Can be one of `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#STATE_DISCONNECTED` or `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#STATE_CONNECTED` <br /> |

### onConnectionUpdated

Added in [version 37.2](https://developer.android.com/topic/libraries/support-library/revisions)

```
public void onConnectionUpdated (BluetoothGatt gatt, 
                int interval, 
                int latency, 
                int supervisionTimeout, 
                int status)
```

Callback indicating the connection parameters were updated.

<br />

| Parameters ||
|---|---|
| `gatt` | `BluetoothGatt`: GATT client involved. This value cannot be `null`. <br /> |
| `interval` | `int`: Connection interval used on this connection, 1.25ms unit. Valid range is from 6 (7.5ms) to 3200 (4000ms). Value is between 6 and 3200 inclusive <br /> |
| `latency` | `int`: Worker latency for the connection in number of connection events. Valid range is from 0 to 499. Value is between 0 and 499 inclusive <br /> |
| `supervisionTimeout` | `int`: Supervision timeout for this connection, in 10ms unit. Valid range is from 10 (0.1s) to 3200 (32s). Value is between 10 and 3200 inclusive <br /> |
| `status` | `int`: `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_SUCCESS` if the connection has been updated successfully. Value is one of the following: - `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_SUCCESS` - `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_READ_NOT_PERMITTED` - `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_WRITE_NOT_PERMITTED` - `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_INSUFFICIENT_AUTHENTICATION` - `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_REQUEST_NOT_SUPPORTED` - `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_INSUFFICIENT_ENCRYPTION` - `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_INVALID_OFFSET` - `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_INSUFFICIENT_AUTHORIZATION` - `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_INVALID_ATTRIBUTE_LENGTH` - `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_CONNECTION_CONGESTED` - `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_CONNECTION_TIMEOUT` - `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_FAILURE` |

### onDescriptorRead

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onDescriptorRead (BluetoothGatt gatt, 
                BluetoothGattDescriptor descriptor, 
                int status, 
                byte[] value)
```

Callback reporting the result of a descriptor read operation.

<br />

| Parameters ||
|---|---|
| `gatt` | `BluetoothGatt`: GATT client invoked `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#readDescriptor(android.bluetooth.BluetoothGattDescriptor)` This value cannot be `null`. <br /> |
| `descriptor` | `BluetoothGattDescriptor`: Descriptor that was read from the associated remote device. This value cannot be `null`. <br /> |
| `status` | `int`: `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_SUCCESS` if the read operation was completed successfully <br /> |
| `value` | `byte`: the descriptor value at the time of the read operation. This value cannot be `null`. <br /> |

### onDescriptorRead

Added in [API level 18](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onDescriptorRead (BluetoothGatt gatt, 
                BluetoothGattDescriptor descriptor, 
                int status)
```


**This method was deprecated
in API level 33.**   

Use `https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback#onDescriptorRead(android.bluetooth.BluetoothGatt,%20android.bluetooth.BluetoothGattDescriptor,%20int,%20byte[])` as it is memory safe by providing the descriptor
value at the time it was read.

Callback reporting the result of a descriptor read operation.

<br />

| Parameters ||
|---|---|
| `gatt` | `BluetoothGatt`: GATT client invoked `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#readDescriptor(android.bluetooth.BluetoothGattDescriptor)` <br /> |
| `descriptor` | `BluetoothGattDescriptor`: Descriptor that was read from the associated remote device. <br /> |
| `status` | `int`: `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_SUCCESS` if the read operation was completed successfully <br /> |

### onDescriptorWrite

Added in [API level 18](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onDescriptorWrite (BluetoothGatt gatt, 
                BluetoothGattDescriptor descriptor, 
                int status)
```

Callback indicating the result of a descriptor write operation.

<br />

| Parameters ||
|---|---|
| `gatt` | `BluetoothGatt`: GATT client invoked `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#writeDescriptor(android.bluetooth.BluetoothGattDescriptor)` <br /> |
| `descriptor` | `BluetoothGattDescriptor`: Descriptor that was written to the associated remote device. <br /> |
| `status` | `int`: The result of the write operation `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_SUCCESS` if the operation succeeds. <br /> |

### onMtuChanged

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onMtuChanged (BluetoothGatt gatt, 
                int mtu, 
                int status)
```

Callback indicating the MTU for a given device connection has changed.

This callback is triggered in response to the `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#requestMtu(int)` function,
or in response to a connection event.

<br />

| Parameters ||
|---|---|
| `gatt` | `BluetoothGatt`: GATT client invoked `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#requestMtu(int)` <br /> |
| `mtu` | `int`: The new MTU size <br /> |
| `status` | `int`: `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_SUCCESS` if the MTU has been changed successfully <br /> |

### onPhyRead

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onPhyRead (BluetoothGatt gatt, 
                int txPhy, 
                int rxPhy, 
                int status)
```

Callback triggered as result of `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#readPhy()`

<br />

| Parameters ||
|---|---|
| `gatt` | `BluetoothGatt`: GATT client <br /> |
| `txPhy` | `int`: the transmitter PHY in use. Value is one of the following: - `https://developer.android.com/reference/android/bluetooth/BluetoothDevice#PHY_LE_1M` - `https://developer.android.com/reference/android/bluetooth/BluetoothDevice#PHY_LE_2M` - `https://developer.android.com/reference/android/bluetooth/BluetoothDevice#PHY_LE_CODED` - `https://developer.android.com/reference/android/bluetooth/BluetoothDevice#PHY_LE_HDT` |
| `rxPhy` | `int`: the receiver PHY in use. Value is one of the following: - `https://developer.android.com/reference/android/bluetooth/BluetoothDevice#PHY_LE_1M` - `https://developer.android.com/reference/android/bluetooth/BluetoothDevice#PHY_LE_2M` - `https://developer.android.com/reference/android/bluetooth/BluetoothDevice#PHY_LE_CODED` - `https://developer.android.com/reference/android/bluetooth/BluetoothDevice#PHY_LE_HDT` |
| `status` | `int`: Status of the PHY read operation. `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_SUCCESS` if the operation succeeds. <br /> |

### onPhyUpdate

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onPhyUpdate (BluetoothGatt gatt, 
                int txPhy, 
                int rxPhy, 
                int status)
```

Callback triggered as result of `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#setPreferredPhy(int,%20int,%20int)`, or as a result of
remote device changing the PHY.

<br />

| Parameters ||
|---|---|
| `gatt` | `BluetoothGatt`: GATT client <br /> |
| `txPhy` | `int`: the transmitter PHY in use. Value is one of the following: - `https://developer.android.com/reference/android/bluetooth/BluetoothDevice#PHY_LE_1M` - `https://developer.android.com/reference/android/bluetooth/BluetoothDevice#PHY_LE_2M` - `https://developer.android.com/reference/android/bluetooth/BluetoothDevice#PHY_LE_CODED` - `https://developer.android.com/reference/android/bluetooth/BluetoothDevice#PHY_LE_HDT` |
| `rxPhy` | `int`: the receiver PHY in use. Value is one of the following: - `https://developer.android.com/reference/android/bluetooth/BluetoothDevice#PHY_LE_1M` - `https://developer.android.com/reference/android/bluetooth/BluetoothDevice#PHY_LE_2M` - `https://developer.android.com/reference/android/bluetooth/BluetoothDevice#PHY_LE_CODED` - `https://developer.android.com/reference/android/bluetooth/BluetoothDevice#PHY_LE_HDT` |
| `status` | `int`: Status of the PHY update operation. `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_SUCCESS` if the operation succeeds. <br /> |

### onReadRemoteRssi

Added in [API level 18](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onReadRemoteRssi (BluetoothGatt gatt, 
                int rssi, 
                int status)
```

Callback reporting the RSSI for a remote device connection.

This callback is triggered in response to the `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#readRemoteRssi()`
function.

<br />

| Parameters ||
|---|---|
| `gatt` | `BluetoothGatt`: GATT client invoked `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#readRemoteRssi()` <br /> |
| `rssi` | `int`: The RSSI value for the remote device <br /> |
| `status` | `int`: `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_SUCCESS` if the RSSI was read successfully <br /> |

### onReliableWriteCompleted

Added in [API level 18](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onReliableWriteCompleted (BluetoothGatt gatt, 
                int status)
```

Callback invoked when a reliable write transaction has been completed.

<br />

| Parameters ||
|---|---|
| `gatt` | `BluetoothGatt`: GATT client invoked `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#executeReliableWrite()` <br /> |
| `status` | `int`: `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_SUCCESS` if the reliable write transaction was executed successfully <br /> |

### onServiceChanged

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onServiceChanged (BluetoothGatt gatt)
```

Callback indicating service changed event is received

Receiving this event means that the GATT database is out of sync with the remote device.
`https://developer.android.com/reference/android/bluetooth/BluetoothGatt#discoverServices()` should be called to re-discover the services.

<br />

| Parameters ||
|---|---|
| `gatt` | `BluetoothGatt`: GATT client involved. This value cannot be `null`. <br /> |

### onServicesDiscovered

Added in [API level 18](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onServicesDiscovered (BluetoothGatt gatt, 
                int status)
```

Callback invoked when the list of remote services, characteristics and descriptors for the
remote device have been updated, ie new services have been discovered.

<br />

| Parameters ||
|---|---|
| `gatt` | `BluetoothGatt`: GATT client invoked `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#discoverServices()` <br /> |
| `status` | `int`: `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_SUCCESS` if the remote device has been explored successfully. <br /> |

### onSubrateChange

Added in [version 36.1](https://developer.android.com/topic/libraries/support-library/revisions)

```
public void onSubrateChange (BluetoothGatt gatt, 
                int subrateMode, 
                int status)
```

Callback indicating LE connection's subrate parameters have changed.

<br />

| Parameters ||
|---|---|
| `gatt` | `BluetoothGatt`: The remote device involved. This value cannot be `null`. <br /> |
| `subrateMode` | `int`: for this LE connection. Value is one of the following: - `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#SUBRATE_MODE_OFF` - `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#SUBRATE_MODE_LOW` - `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#SUBRATE_MODE_BALANCED` - `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#SUBRATE_MODE_HIGH` - `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#SUBRATE_MODE_SYSTEM_UPDATE` - `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#SUBRATE_MODE_NOT_UPDATED` |
| `status` | `int`: `https://developer.android.com/reference/android/bluetooth/BluetoothGatt#GATT_SUCCESS` if the connection subrating has been updated successfully. Value is one of the following: - `https://developer.android.com/reference/android/bluetooth/BluetoothStatusCodes#SUCCESS` - `https://developer.android.com/reference/android/bluetooth/BluetoothStatusCodes#ERROR_UNKNOWN` |