# TestWearableButtonsProvider

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

*** ** * ** ***


```
class TestWearableButtonsProvider : WearableButtonsProvider
```

<br />

*** ** * ** ***

A `https://developer.android.com/reference/kotlin/androidx/wear/input/WearableButtonsProvider` suitable for use in tests.

This allows for explicitly specifying which buttons are available for testing, and their coordinates. It is intended to be used by passing in a map, mapping between the button keycode (typically in the set `https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_STEM_PRIMARY`, `https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_STEM_1`, `https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_STEM_2`, or `https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_STEM_3`) and the location of the button. Take the following example:

```kotlin
    Mapbuttons = new HashMap<>();
    buttons.put(KEYCODE_STEM_1, new TestWearableButtonLocation(100, 100);

    TestWearableButtonsProvider provider = new TestWearableButtonsProvider(buttons);

    WearableButtons.setWearableButtonsProvider(provider);
```

## Summary

| ### Nested types |
|---|
| `class https://developer.android.com/reference/kotlin/androidx/wear/input/testing/TestWearableButtonsProvider.TestWearableButtonLocation` Class describing the location of a button on a wearable device. |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/kotlin/androidx/wear/input/testing/TestWearableButtonsProvider#TestWearableButtonsProvider(java.util.Map<java.lang.Integer,androidx.wear.input.testing.TestWearableButtonsProvider.TestWearableButtonLocation>)( buttons: (https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-mutable-map/index.html)https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-map/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html!, https://developer.android.com/reference/kotlin/androidx/wear/input/testing/TestWearableButtonsProvider.TestWearableButtonLocation!> )` Build a button provider, which will respond with the provided set of buttons. |

| ### Public functions |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-array/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html>?` | `https://developer.android.com/reference/kotlin/androidx/wear/input/testing/TestWearableButtonsProvider#getAvailableButtonKeyCodes(android.content.Context)(context: https://developer.android.com/reference/android/content/Context.html)` Get the keycodes of available hardware buttons on device. |
| `https://developer.android.com/reference/android/os/Bundle.html` | `https://developer.android.com/reference/kotlin/androidx/wear/input/testing/TestWearableButtonsProvider#getButtonInfo(android.content.Context,int)(context: https://developer.android.com/reference/android/content/Context.html, keycode: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)` Returns a bundle containing the metadata of a specific button. |

## Public constructors

### TestWearableButtonsProvider

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear#1.0.0)

```
TestWearableButtonsProvider(
    buttons: (Mutable)Map<Int!, TestWearableButtonsProvider.TestWearableButtonLocation!>
)
```

Build a button provider, which will respond with the provided set of buttons.

| Parameters |
|---|---|
| `buttons: (https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-mutable-map/index.html)https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-map/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html!, https://developer.android.com/reference/kotlin/androidx/wear/input/testing/TestWearableButtonsProvider.TestWearableButtonLocation!>` | The buttons returned by this provider. |

## Public functions

### getAvailableButtonKeyCodes

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear#1.0.0)

```
fun getAvailableButtonKeyCodes(context: Context): Array<Int>?
```

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 |
|---|---|
| `context: https://developer.android.com/reference/android/content/Context.html` | The context of the current activity |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-array/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html>?` | An int array of available button keycodes, or null if no keycodes could be read. |

### getButtonInfo

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear#1.0.0)

```
fun getButtonInfo(context: Context, keycode: Int): Bundle
```

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 |
|---|---|
| `context: https://developer.android.com/reference/android/content/Context.html` | The context of the current activity |
| `keycode: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The keycode associated with the hardware button of interest |

| Returns |
|---|---|
| `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 |