私は Android NDK アプリケーション (API 8 を対象) を作成しています。これはhello-gl2 の例に基づいているため、単一のフルスクリーン OpenGL2.0 ビューを使用します。
画面上のキーボードを起動する必要があるため、このサイトで入手可能な情報から、キーボードを起動し、キーアップ イベントをネイティブ アプリケーションに送信して処理し、キーボードを閉じることができます。Swypeまたはその他のより高度な当時のキーボード入力マネージャーに切り替えるまで、すべてがうまくいき、機能しなくなります。
KeyEvent開発者ドキュメントクラスの概要を読んだ後、私が見ているのは予想される動作のようです:
ソフト入力メソッドのキーの KeyEvents の受信に依存しないでください。
そのため、IME の出力をキャプチャしてネイティブ アプリケーションに渡す方法を考え出そうとしています。残念ながら、私はこれでまったく遠くまで行っていません。
拡張GLSurfaceViewクラスに次のコードがあります。
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs)
{
outAttrs.actionLabel = "";
outAttrs.hintText = "";
outAttrs.initialCapsMode = 0;
outAttrs.initialSelEnd = outAttrs.initialSelStart = -1;
outAttrs.label = "";
outAttrs.imeOptions = EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI;
outAttrs.inputType = InputType.TYPE_NULL;
return new BaseInputConnection(this, false);
}
@Override
public boolean onCheckIsTextEditor()
{
return true;
}
そして私は呼んでいます:
public boolean showSoftInput(View view, int flags)
getCurrentFocusから返されたビューをネイティブ コードから渡し、キーボードを表示します。
keyup イベントを使用せずに、オンスクリーン ソフトウェア キーボードからテキストを抽出することは可能ですか? これを行うために必要なものを更新することは可能ですか、それともまったく別の方法を検討する必要がありますか?
おわかりのように、Android 開発の非ネイティブ Java 側は、私にとってまったく新しいものです。
要約すると、私の現在の実装はこの回答に基づいています。これにより、キーイベントを使用してソフトキーボードテキストをキャプチャできますが、キーイベントを使用せずにテキストをキャプチャしたいと思います..(おそらくTextWatcher..私のビューは'編集可能ですか?)。
提供されたヘルプやアドバイスに感謝します。
アンディ