Create input method editors on Wear

Wear OS supports input methods beyond voice, by extending the Android input method editor (IME) framework. The IME framework provides support for virtual, on-screen keyboards that allow users to input text in the form of keyclicks, handwriting, or gestures.

Wear OS users can choose between various input options from Remote Input. These options include:

  • Dictation
  • Emoji
  • Canned responses
  • Smart Reply
  • Default IME

Figure 1. Sample input methods

Wear OS comes with a system default Input Method Editor (IME) but also opens up the IME APIs for third-party developers to create custom IMEs. The IME APIs used for Wear OS devices are the same as other form factors, though usage is slightly different due to limited screen size.

This document provides guidance to help you create a Wear-OS-specific IME

Create an input method for Wear

The Android platform provides a standard framework for creating IMEs. To create a Wear-OS-specific IME, you need to optimize your IME for limited screen size.

Wear-OS-specific IME filters

To learn how to create an input method for Wear OS, follow the guide to create an input method on handsets and add the following Google Play filters in your manifest file to make it a Wear-OS-specific IME.

API level

If you are developing an IME for Wear OS, remember that the feature is supported only on Android 6.0 (API level 23) and higher. To ensure that your IME can be installed only on wearables that support input methods beyond voice, add the following to your app's manifest:

<uses-sdk android:minSdkVersion="23" />

Device feature sets

To control how your app is filtered from devices that don't support Wear OS IMEs (for example, on an iPhone), add the following to your app's manifest:

<uses-feature android:required="true" android:name="android.hardware.type.watch" />

Invoke an input method

Wear OS provides user settings on the watch that lets the user enable multiple IMEs from the list of installed IMEs. Once the users enable your IME, they can invoke your IME from the following places:

  • A notification or an app using the RemoteInput API.
  • Wear OS apps with an EditText field. Touching a text field places the cursor in the field and automatically displays the IME on focus.

General IME considerations

Here are some things to consider when implementing IME for Wear:

  • Set a default action.

    RemoteInput and Wear OS apps expect only single-line text entry. The ENTER key should always trigger a call to sendDefaultEditorAction, which causes the app to dismiss the keyboard and continue on to the next step or action.

  • Use a full-screen-mode IME.

    Input methods on Wear OS cover most of the screen, leaving very little of the app visible. Using full-screen mode ensures an optimal user experience regardless of the app UI. In full-screen mode, an ExtractedText provides a mirrored view of the text field being edited and can be styled to blend with the rest of the input method UI. For more details on full-screen mode, see InputMethodService.

  • Handle InputType flags.

    For privacy reasons, at a minimum you should handle the InputType flag TYPE_TEXT_VARIATION_PASSWORD in your IME. When your IME is in password mode, make sure that your keyboard is optimized for single key press (auto spelling correction, auto completion and gesture input are disabled). Most importantly, keyboard in password mode should support ASCII symbols regardless of the input language. For more details, see Specify the input method type.

  • Provide a key for switching to the next input method

    Android allows users to easily switch between all IMEs supported by the platform. In your IME implementation, set the boolean supportsSwitchingToNextInputMethod to true. This enables your IME to support the switching mechanism, so the apps can switch to the next platform-supported IME. To learn more about how to implement switching between IMEs, see Switching among IME subtypes.