web-dev-qa-db-ja.com

Androidでカスタムキーボードを作成する

Android 4.0以降)を実行しているすべてのデバイスで動作するカスタムキーボードを書きたいので、最初にネットを検索しましたが、何も見つかりませんでした。 Androidの純正キーボードを置き換えるアプリを作成しますか?

私が知りたいこと:

  1. 良いチュートリアルはありますか?サンプルコードはありますか?
  2. これを行うにはrootが必要ですか?
  3. その背後にある構造は何ですか? (それは単なるサービスを伴う通常のアクティビティですか?)
  4. キーボードで入力ボックスを読み取ることはできますか?
20
safari

それで、私はSwypeに取り組んだとき、私は約2年間これをしました。ルートは必要ありません。InputMethodServiceを実装するだけです。ほとんどのテキストボックスからテキストを取り出すことはできますが、すべてではありません(すべての編集フィールドがAPIの半分を正しく実装しているわけではありません。特に、入力タイプINPUT_TYPE_NULLを持つものはすべてうまく機能しません)。テキストを取得するには、inputConnection.getExtractedTextを呼び出します。

警告してください-APIは悪く、アプリはそれでの作業に失敗しています。基本的なキーボードは簡単ですが、複雑なことは何でもやってみてください。多くの時間を費やすことになります。大きなキーボードには多くの人時間がかかりました

19
Gabe Sechan

最初にネットを検索しましたが、何も見つかりませんでした

インプットメソッドの作成については、インターネット上にある the Android開発者用ドキュメント で説明されています。

サンプルコードはありますか?

SDK Managerからサンプルコードをダウンロードした場合、SDKインストールのsamples/ディレクトリにサンプルがあります。 SoftKeyboardを探します。

これを行うにはrootが必要ですか?

番号。

その背後にある構造は何ですか? (それは単なるサービスを伴う通常のアクティビティですか?)

an InputMethodService です。

9
CommonsWare
  1. 良いチュートリアルはありますか?サンプルコードはありますか?

これにより良いチュートリアル:
http://code.tutsplus.com/tutorials/create-a-custom-keyboard-on-Android--cms-22615

  1. これを行うにはrootが必要ですか?

いいえ、これを行うためにrootは必要ありません。

  1. その背後にある構造は何ですか? (それは単なるサービスを伴う通常のアクティビティですか?)

inputMethodServiceを使用する必要があります。 ドキュメント を参照してください。

  1. キーボードで入力ボックスを読み取ることはできますか?

ルート:いいえ

キーボードで入力ボックスを読み取ることはできますか?

はい、可能です。

InputConnection ic = getCurrentInputConnection();
String currentText = ic.getExtractedText(new ExtractedTextRequest(), 0).text;
2
Fay007