Wear でインプット メソッド エディタを作成する

Wear OS by Google では、Android インプット メソッド エディタ(IME)フレームワークを拡張することで、音声以外の入力方法に対するサポートを追加しています。IME フレームワークは仮想画面キーボードをサポートしており、ユーザーはキークリック、手書き、ジェスチャーでテキストを入力できます。

Wear ユーザーは、リモート入力からさまざまな入力オプションを選択できます。たとえば、次のようなオプションがあります。

  • 音声入力
  • 絵文字
  • 返信定型文
  • スマート リプライ
  • デフォルトの IME

図 1: 入力方法の例

Wear にはシステム デフォルトのインプット メソッド エディタ(IME)が用意されており、サードパーティのデベロッパーは IME API を使用して、Wear 向けのカスタム IME を作成できます。 Wear デバイスで使用される IME API は他のフォーム ファクタと同じですが、画面の表示領域が限られているため、使用方法が若干異なります。

このドキュメントでは、Wear 固有の IME の作成に役立つガイダンスを提供します。

Wear 向けの IME を作成する

Android プラットフォームは、IME を作成するための標準フレームワークを提供します。Wear 固有の IME を作成するには、限られた画面サイズに合わせて IME を最適化する必要があります。

Wear 向けの IME を作成するには、ハンドセットでインプット メソッドを作成するガイドに従って、マニフェスト ファイルに以下の Google Play フィルタを追加します。これが Wear 固有の IME フィルタになります。

Wear 固有の IME フィルタ

  • API レベル

    Wear 向けの IME を開発する場合は、この機能が Android 6.0(API レベル 23)以上のバージョンのプラットフォームでのみサポートされることに注意してください。 音声以外の入力方法をサポートするウェアラブルにのみ IME をインストールできるようにするには、アプリのマニフェストに次の行を追加します。

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

    つまり、アプリでは Android 6.0 以上が必要になります。 詳しくは、API レベルと、<uses-sdk> 要素に関するドキュメントをご覧ください。

  • デバイスの機能セット

    Wear IME をサポートしていないデバイス(スマートフォンなど)からアプリを除外する方法を制御するには、アプリのマニフェストに次の行を追加します。

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

IME を呼び出す

Wear ではユーザーがスマートウォッチの設定を行うことができ、インストールされている IME のリストから複数の IME を有効にすることができます。ユーザーが IME を有効にすると、以下から IME を呼び出せるようになります。

  • RemoteInput API を使用している通知またはアプリ。
  • EditText フィールドで指定された Wear アプリ。テキスト フィールドをタップすると、フィールドにカーソルが置かれて、フォーカスされた IME が自動的に表示されます。

IME に関する一般的な注意事項

Wear 向けの IME を実装する際には、以下の点を考慮してください。

  • デフォルトのアクションを設定する

    RemoteInput と Wear アプリは、1 行のテキスト入力のみを想定します。Enter キーをタップすると、常に sendDefaultEditorAction の呼び出しがトリガーされます。これにより、アプリはキーボードを閉じて次のステップまたはアクションに進みます。

  • 全画面表示モードの IME を使用する

    Wear の IME は画面のほとんどの領域を占めるため、アプリの大部分は表示されなくなります。全画面モードを使用すると、アプリの UI と無関係にユーザー エクスペリエンスが最適化されます。全画面モードでは、ExtractEditText が編集対象のテキスト フィールドのミラービューを提供し、IME の他の UI と調和した書式設定が可能になります。全画面モードについて詳しくは、InputMethodService をご覧ください。

  • InputType フラグを処理する

    プライバシー上の理由から、IME は少なくとも InputType フラグ TYPE_TEXT_VARIATION_PASSWORD を処理する必要があります。IME がパスワード モードの場合は、必ずキーボードが単一キー入力に最適化される(スペルの自動修正、オート コンプリート、ジェスチャー入力が無効化される)ようにします。最も重要な点は、パスワード モードのキーボードは入力言語に関係なく ASCII 記号をサポートする必要があるということです。詳しくは、入力方法のタイプの指定をご覧ください。

  • 次の IME に切り替えるためのキーを指定する

    Android では、プラットフォームでサポートされているすべての IME 間の切り替えをユーザーが簡単に行うことができます。 IME の実装では、ブール値 supportsSwitchingToNextInputMethod = true を設定すると、IME が切り替えメカニズムに対応できるようになります(これにより、アプリはプラットフォームでサポートされている次の IME に切り替えることができます)。IME の切り替えを実装する方法については、IME サブタイプを切り替えるをご覧ください。