質問編集履歴

1 試したことに追記しました。

LaTache

LaTache score 4

2017/01/06 17:31  投稿

Androidで、初回のタッチイベントが取得できません。
###前提・実現したいこと
Androidスマホ用のアプリを作成しています。
タッチイベントを取得しようとしていますが、最初のタッチのみイベントが発生しません。
(onTouchEvent()がコールされません。)
###発生している問題・エラーメッセージ
『最初のタッチのみ反応して、それ以降タッチが反応しなくなる』というのはよくある問題らしく、色々なところで対処法が書かれているのですが、初回のタッチイベントのみが取得できない、というのはあまり事例がないのか、検索でも見つかりませんでした。
ソースコードはごく一般的なものだと思います。
(メインの部分だけ抜き出しています)
普通と異なるといえば、GLSurfaceView を使用しているところでしょうか。
onTouchEvent() にブレークを仕掛けてみると、
初回のタッチは無反応で、2回目以降、ブレークします。
###該当のソースコード
```
public class DemoActivity extends Activity {
   private GLSurfaceView mGLView;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       mGLView = new GLSurfaceView(this);
       setContentView(mGLView);
   }
   @Override
   public boolean onTouchEvent(MotionEvent event) {
       // 独自処理
       return true;
   }
}
```
###試したこと
Android4.2.2、Android5.1 の2機種で実行しましたが、いずれも同じでした。
ActivityのonCreate()の最後で、  
 
MotionEvent ev = MotionEvent.obtain(10, 20, MotionEvent.ACTION_DOWN, 0, 0, 0);  
this.onTouchEvent(ev);  
 
とすると、自動で onTouchEvent() がコールされました。  
その後、タッチ⇒無反応  
再度タッチ⇒反応  
となりました。  
 
###補足情報(言語/FW/ツール等のバージョンなど)
AndroidStudio2.2.3 (Android API 15)
を使用しています。
  • Android

    8500 questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る