1

私は現在、サービスからタッチイベントを受け取ることに取り組んでいます。

これを行う方法の 1 つは、システム ビューで TouchDelegate を使用し、その境界を画面に拡張してから、デリゲート内からタッチ イベントを受け取ることでした。

しかし、私が使用するとき

((Activity)ctx).getWindow().getDecorView().setTouchDelegate(new TouchDel(bounds, view));

私のサービス内から、nullpointerexception と強制終了が発生します。

4

1 に答える 1

1

Serviceシステムからタッチイベントをグローバルに受信するためにを直接登録できるメカニズムは実際にはありません。アプリケーションのActivityUIは、受信したイベントをに渡す必要がありますService。あなたがそれらのために持っている特定の使用法についてもっと知ることなく、私は一般的なアプローチを提案することしかできません。そのような可能なアプローチの1つは次のとおりです。

  • クラスで、アプリケーションに送信される各イベントの通知を受け取るようActivityにオーバーライドします。dispatchTouchEvent()ビューのタッチ処理を混乱させるリターン動作をオーバーライドしないように注意してください。
  • MotionEventParcelable、であるため、各イベントをにパッケージ化してIntent、開始コマンドとしてに送信できますService
  • または、をバインドされたサービスとして実装して、アプリケーション内のService各サービスがそれActivityにバインドしてメソッドを直接呼び出し、それぞれMotionEventがその方法で渡されるようにします。
于 2012-07-03T22:29:21.500 に答える