Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Constants](https://developer.android.com/reference/android/bluetooth/BluetoothHearingAid#constants) \| [Inherited Constants](https://developer.android.com/reference/android/bluetooth/BluetoothHearingAid#inhconstants) \| [Methods](https://developer.android.com/reference/android/bluetooth/BluetoothHearingAid#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/bluetooth/BluetoothHearingAid#inhmethods)

# BluetoothHearingAid

*** ** * ** ***


`
public

final

class
BluetoothHearingAid
`


`

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


`

`


implements

https://developer.android.com/reference/android/bluetooth/BluetoothProfile


`

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

<br />

*** ** * ** ***

This class provides the public APIs to control the Hearing Aid profile.

BluetoothHearingAid is a proxy object for controlling the Bluetooth Hearing Aid Service via
IPC. Use `https://developer.android.com/reference/android/bluetooth/BluetoothAdapter#getProfileProxy(android.content.Context,%20android.bluetooth.BluetoothProfile.ServiceListener,%20int)` to get the BluetoothHearingAid proxy object.

Android only supports one set of connected Bluetooth Hearing Aid device at a time. Each method
is protected with its appropriate permission.

## Summary

| ### Constants ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/bluetooth/BluetoothHearingAid#ACTION_CONNECTION_STATE_CHANGED` Intent used to broadcast the change in connection state of the Hearing Aid profile. |

### Inherited constants

From interface `https://developer.android.com/reference/android/bluetooth/BluetoothProfile` `int` `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#A2DP`

Advanced Audio Distribution Profile (A2DP)


`int` `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#CSIP_SET_COORDINATOR`

Coordinated Set Identification Profile (CSIP) set coordinator


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#EXTRA_PREVIOUS_STATE`

Extra for the connection state intents of the individual profiles.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#EXTRA_PROFILE`

Extra for the `https://developer.android.com/reference/android/bluetooth/BluetoothProfile` that the intent applies to.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#EXTRA_STATE`

Extra for the connection state intents of the individual profiles.


`int` `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#GATT`

Generic Attribute Profile (GATT)


`int` `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#GATT_SERVER`

Generic Attribute Profile (GATT) Server


`int` `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#HAP_CLIENT`


`int` `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#HEADSET`

Headset and Handsfree profile


`int` `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#HEALTH`

*This constant was deprecated
in API level 29.
Health Device Profile (HDP) and MCAP protocol are no longer used. New apps should
use Bluetooth Low Energy based solutions such as `https://developer.android.com/reference/android/bluetooth/BluetoothGatt`, `https://developer.android.com/reference/android/bluetooth/BluetoothAdapter#listenUsingL2capChannel()`, or `https://developer.android.com/reference/android/bluetooth/BluetoothDevice#createL2capChannel(int)`*


`int` `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#HEARING_AID`

Hearing Aid Device


`int` `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#HID_DEVICE`

Human Interface Device (HID) Device


`int` `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#LE_AUDIO`

LE Audio Device


`int` `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#SAP`

SIM Access Profile (SAP)


`int` `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#STATE_CONNECTED`

The profile is in connected state


`int` `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#STATE_CONNECTING`

The profile is in connecting state


`int` `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#STATE_DISCONNECTED`

The profile is in disconnected state


`int` `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#STATE_DISCONNECTING`

The profile is in disconnecting state


| ### Public methods ||
|---|---|
| ` https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/bluetooth/BluetoothDevice>` | ` https://developer.android.com/reference/android/bluetooth/BluetoothHearingAid#getConnectedDevices()() ` Get connected devices for this specific profile. For apps targeting `https://developer.android.com/reference/android/os/Build.VERSION_CODES#S` or or higher, this requires the `https://developer.android.com/reference/android/Manifest.permission#BLUETOOTH_CONNECT` permission which can be gained with `https://developer.android.com/reference/android/app/Activity#requestPermissions(java.lang.String[],%20int)`. |
| ` int` | ` https://developer.android.com/reference/android/bluetooth/BluetoothHearingAid#getConnectionState(android.bluetooth.BluetoothDevice)(https://developer.android.com/reference/android/bluetooth/BluetoothDevice device) ` Get the current connection state of the profile For apps targeting `https://developer.android.com/reference/android/os/Build.VERSION_CODES#S` or or higher, this requires the `https://developer.android.com/reference/android/Manifest.permission#BLUETOOTH_CONNECT` permission which can be gained with `https://developer.android.com/reference/android/app/Activity#requestPermissions(java.lang.String[],%20int)`. |
| ` https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/bluetooth/BluetoothDevice>` | ` https://developer.android.com/reference/android/bluetooth/BluetoothHearingAid#getDevicesMatchingConnectionStates(int[])(int[] states) ` Get a list of devices that match any of the given connection states. For apps targeting `https://developer.android.com/reference/android/os/Build.VERSION_CODES#S` or or higher, this requires the `https://developer.android.com/reference/android/Manifest.permission#BLUETOOTH_CONNECT` permission which can be gained with `https://developer.android.com/reference/android/app/Activity#requestPermissions(java.lang.String[],%20int)`. |

### 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*.


From interface `

https://developer.android.com/reference/android/bluetooth/BluetoothProfile

` `
abstract


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/bluetooth/BluetoothDevice>` `
https://developer.android.com/reference/android/bluetooth/BluetoothProfile#getConnectedDevices()()
`

Get connected devices for this specific profile.


`
abstract


int` `
https://developer.android.com/reference/android/bluetooth/BluetoothProfile#getConnectionState(android.bluetooth.BluetoothDevice)(https://developer.android.com/reference/android/bluetooth/BluetoothDevice device)
`

Get the current connection state of the profile


`
abstract


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/bluetooth/BluetoothDevice>` `
https://developer.android.com/reference/android/bluetooth/BluetoothProfile#getDevicesMatchingConnectionStates(int[])(int[] states)
`

Get a list of devices that match any of the given connection states.


## Constants

### ACTION_CONNECTION_STATE_CHANGED

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

```
public static final String ACTION_CONNECTION_STATE_CHANGED
```

Intent used to broadcast the change in connection state of the Hearing Aid profile. Please
note that in the binaural case, there will be two different LE devices for the left and right
side and each device will have their own connection state changes.

This intent will have the following extras:

- `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#EXTRA_STATE` - The current state of the profile.
- `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#EXTRA_PREVIOUS_STATE`- The previous state of the profile.
- `https://developer.android.com/reference/android/bluetooth/BluetoothDevice#EXTRA_DEVICE` - The remote device.
- `https://developer.android.com/reference/android/bluetooth/BluetoothDevice#EXTRA_CLASS` - The class of the remote device, if available, when the new state is `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#STATE_CONNECTED`.
- `https://developer.android.com/reference/android/bluetooth/BluetoothDevice#EXTRA_LE_APPEARANCE` - The LE appearance of the remote device, if available, when the new state is `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#STATE_CONNECTED`.

`https://developer.android.com/reference/android/bluetooth/BluetoothProfile#EXTRA_STATE` or `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#EXTRA_PREVIOUS_STATE` can be any of `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#STATE_DISCONNECTED`, `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#STATE_CONNECTING`, `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#STATE_CONNECTED`, `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#STATE_DISCONNECTING`.


For apps targeting `https://developer.android.com/reference/android/os/Build.VERSION_CODES#R` or lower, this requires the `https://developer.android.com/reference/android/Manifest.permission#BLUETOOTH` permission which can be gained with a simple `<uses-permission>` manifest tag.


For apps targeting `https://developer.android.com/reference/android/os/Build.VERSION_CODES#S` or or higher, this requires the
`https://developer.android.com/reference/android/Manifest.permission#BLUETOOTH_CONNECT` permission which can be gained with `https://developer.android.com/reference/android/app/Activity#requestPermissions(java.lang.String[],%20int)`.


Requires `https://developer.android.com/reference/android/Manifest.permission#BLUETOOTH_CONNECT`

<br />

Constant Value:

"android.bluetooth.hearingaid.profile.action.CONNECTION_STATE_CHANGED"


## Public methods

### getConnectedDevices

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

```
public List<BluetoothDevice> getConnectedDevices ()
```

Get connected devices for this specific profile.

Return the set of devices which are in state `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#STATE_CONNECTED`


For apps targeting `https://developer.android.com/reference/android/os/Build.VERSION_CODES#S` or or higher, this requires the
`https://developer.android.com/reference/android/Manifest.permission#BLUETOOTH_CONNECT` permission which can be gained with `https://developer.android.com/reference/android/app/Activity#requestPermissions(java.lang.String[],%20int)`.


Requires `https://developer.android.com/reference/android/Manifest.permission#BLUETOOTH_CONNECT`

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/bluetooth/BluetoothDevice>` | This value cannot be `null`. <br /> |

### getConnectionState

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

```
public int getConnectionState (BluetoothDevice device)
```

Get the current connection state of the profile


For apps targeting `https://developer.android.com/reference/android/os/Build.VERSION_CODES#S` or or higher, this requires the
`https://developer.android.com/reference/android/Manifest.permission#BLUETOOTH_CONNECT` permission which can be gained with `https://developer.android.com/reference/android/app/Activity#requestPermissions(java.lang.String[],%20int)`.


Requires `https://developer.android.com/reference/android/Manifest.permission#BLUETOOTH_CONNECT`

<br />

| Parameters ||
|---|---|
| `device` | `BluetoothDevice`: This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `int` | Value is one of the following: - `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#STATE_DISCONNECTED` - `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#STATE_CONNECTING` - `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#STATE_CONNECTED` - `https://developer.android.com/reference/android/bluetooth/BluetoothProfile#STATE_DISCONNECTING` |

### getDevicesMatchingConnectionStates

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

```
public List<BluetoothDevice> getDevicesMatchingConnectionStates (int[] states)
```

Get a list of devices that match any of the given connection states.

If none of the devices match any of the given states, an empty list will be returned.


For apps targeting `https://developer.android.com/reference/android/os/Build.VERSION_CODES#S` or or higher, this requires the
`https://developer.android.com/reference/android/Manifest.permission#BLUETOOTH_CONNECT` permission which can be gained with `https://developer.android.com/reference/android/app/Activity#requestPermissions(java.lang.String[],%20int)`.


Requires `https://developer.android.com/reference/android/Manifest.permission#BLUETOOTH_CONNECT`

<br />

| Parameters ||
|---|---|
| `states` | `int`: This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/bluetooth/BluetoothDevice>` | This value cannot be `null`. <br /> |