アンドロイド用のインディーゲームを開発しており、ユーザーにニックネームを選択させたいと考えています。私たちは、NDKが提供するネイティブアクティビティを使用することを選択しました。これは、最も簡単な方法です。ネイティブアクティビティを使用中にソフトキーボードを閉じるとクラッシュする
static void showKeyboard(Activity activity) {
String s = Context.INPUT_METHOD_SERVICE;
InputMethodManager m = (InputMethodManager)activity.getSystemService(s);
View w = activity.getWindow().getDecorView();
m.showSoftInput(w, 0);
}
:
我々はキーボードで出会った最初の問題は、関数の呼び出し機能はANativeActivity_showSoftInputは、()(説明などhereなど)まったく何もしないように見えるので、私たちは、JNIを使用してキーボードを持ち出すということでした
これはキーボードの起動には問題ありません。一部のデバイスでは正常に動作します。しかし、ユーザーはアプリケーションがこのデバッグ出力でフリーズ「隠すキーボード」ボタンを押すことで、キーボードを閉じようとする他のデバイス(例えばネクサス7)、上:
I/InputDispatcher( 453): Application is not responding: AppWindowToken{429b54a8 token=Token{42661288 ActivityRecord{41bb0b00 u0 com.example.project/android.app.NativeActivity}}} - Window{420d6138 u0 com.example.project/android.app.NativeActivity}. It has been 5006.7ms since event, 5005.6ms since wait started. Reason: Waiting because the focused window has not finished processing the input events that were previously delivered to it.
I/WindowManager( 453): Input event dispatching timed out sending to com.example.project/android.app.NativeActivity
をして、ユーザーがダイアログが表示されますボックス:
Project isn't responding. Do you want to close it? [Wait]/[OK]
明らかに間違っていることはありますか?これはバグかもしれませんか? this oneのような問題は、キーボードの機能性がネイティブグルーに適切に実装されたことがないように思われます。
まだ、多くのデバイスでテストされていませんが、クラッシュしないものは古いAndroid OSのものです。また、キーボードが表示されてもクラッシュするキーボードでは、の背面にあるボタンは、のようなものから のように変わります。おそらく、それはネイティブの接着剤を最初に開発したときに考慮されなかった別の入力イベントに対応していますか?私はちょうど推測している。
ネイティブアクティビティを使用している間にソフトキーボードが動作していた場合は、どのように行ったか教えてください。
乾杯
それは、Android hereにバグとして報告されているUPDATE
、我々はまだかかわらず、回避策を聞いて幸せになります。あなたもそれによって影響を受けている場合は、(スターを押すことで)その問題に関する投票をしたいかもしれません。
私はそれを完全に逃しました、Cファイルにパッチを当てるよりはるかに良い、ありがとう。 –
偶然、今日Nexusのアップグレードを受け取りました。問題はAndroid 4.3で修正されているようです。あなたの提案は、Androidのバージョンが4.2の場合にのみ、patch_process_input関数の適用を容易にします。必要に応じて、あなたと私の答えを組み合わせて、他の人のための最終的な解決策を提供することができます。私は最終的な答えとしてマークします。そうでなければ、私が覚えていれば、私は来週いつかそれをやろうとします。乾杯。 –
確かに更新されました。私はまた、問題が4.3で修正されていることに気づいた!それはしばらくの間、4.1および4.2の電話機で市場に残っています... – krsteeve