2017年1月8日日曜日

Androidでタッチイベントが取得できないだと!/ その3

tetatailでも解決できないので、地道に自分で解析中。
まだ解決はできていません。

最近のプロジェクトは、速度重視のため、SurfaceView ⇒ GLSurfaceView に作り変えたもの。

基本システム以外、入力なども全て一旦削除(コメントアウト)して、
GLでのシステムができたので、徐々に機能を追加している途中で、
初回タッチが入力できていない、ということが発覚した。

なので、昔のプロジェクトを実行してみたところ、問題なく全てのタッチが取得できている。
ということは、

・GLSurfaceViewのタッチ入力
・その他の改良部分

のいずれかであることは間違い、ということだ。

次の検証。

GLSurfaceView をそのまま使用していた部分を、MyGLSurfaceView に変更し、
APIをラップして動作を確認してみる。

まず、onTouchEvent() だが、Activityと同様に、2回目しかコールされていない。

起動時に、onWindowFocusChanged(boolean) が、 true でコールされていることを確認。
これで、フォーカス移動に1タッチ取られている、という可能性も低くなった。

ちなみに、onWindowFocusChange() 内で、ブレークしているときに、画面を2回タップして再実行すると、やはり、1回分のタップが認識される。

ブレーク中もきちんとタッチした回数を覚えていて、その回数 -1 回、onToucheEvent() がコールされている。

以上のことから、タイミングなど不確定要素が絡んでいる可能性は低く、確実に、初回の1タップ処理が、何か別の処理に搾取されていると推測できる。

一体、何なんだ…。



0 件のコメント:

コメントを投稿