# DeviceWearableButtonsProvider

Artifact: [androidx.wear:wear-input](https://developer.android.com/jetpack/androidx/releases/wear) [View Source](https://cs.android.com/search?q=file:androidx/wear/input/DeviceWearableButtonsProvider.java+class:androidx.wear.input.DeviceWearableButtonsProvider) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear#1.0.0)

*** ** * ** ***


```
public final class DeviceWearableButtonsProvider implements WearableButtonsProvider
```

<br />

*** ** * ** ***

Default implementation of `https://developer.android.com/reference/androidx/wear/input/WearableButtonsProvider`, that reads the button locations from the platform.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/wear/input/DeviceWearableButtonsProvider#DeviceWearableButtonsProvider()()` |

| ### Public methods |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html int[]` | `https://developer.android.com/reference/androidx/wear/input/DeviceWearableButtonsProvider#getAvailableButtonKeyCodes(android.content.Context)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/content/Context.html context)` Get the keycodes of available hardware buttons on device. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/os/Bundle.html` | `https://developer.android.com/reference/androidx/wear/input/DeviceWearableButtonsProvider#getButtonInfo(android.content.Context,int)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/content/Context.html context, int keycode)` Returns a bundle containing the metadata of a specific button. |

## Public constructors

### DeviceWearableButtonsProvider

Added in 1.0.0

```
public DeviceWearableButtonsProvider()
```

## Public methods

### getAvailableButtonKeyCodes

```
public @Nullable int[] getAvailableButtonKeyCodes(@NonNull Context context)
```

Get the keycodes of available hardware buttons on device. This function based on key's locations from system property. This count includes the primary stem key as well as any secondary stem keys available.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/content/Context.html context` | The context of the current activity |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html int[]` | An int array of available button keycodes, or null if no keycodes could be read. |

### getButtonInfo

```
public @NonNull Bundle getButtonInfo(@NonNull Context context, int keycode)
```

Returns a bundle containing the metadata of a specific button. Currently, only location is supported. Use with and . The key will not be present if the information is not available for the requested keycode.

The location returned is a Cartesian coordinate where the bottom left corner of the screen is the origin. The unit of measurement is in pixels. The coordinates do not take rotation into account and assume that the device is in the standard upright position.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/content/Context.html context` | The context of the current activity |
| `int keycode` | The keycode associated with the hardware button of interest |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/os/Bundle.html` | A `https://developer.android.com/reference/android/os/Bundle.html` containing the metadata for the given keycode |