2011-07-15 9 views
7

public boolean onTouchEvent(MotionEvent event)を使用して、アクティビティからできるだけ多くのタッチイベントを取得するにはどうすればよいですか?明らかに、サービスでオーバーライドする方法がonTouchEventではありません。どうすればこれを行うことができますか?直接的な方法や信頼できる回避策はありますか?サービス内のタッチイベント(座標、モーションイベントなど)の取得

私のアイデアは、特定のジェスチャーを行うためにバックグラウンドでリッスンするサービスを作成し、ユーザーが正しいジェスチャーを行ったときに何かをすることです。ありがとうございました!

編集:この質問は、このquestionへの回答を意図しています。

+0

私は100%を知らないので、これを回答に入れるつもりはありませんが、サービスの考え方は人間同士の相互作用はありません。私はまた、携帯電話を使用している人のうち10人のうち9人がアプリ外でジェスチャーをしていないと考えているので、どの解決策でもハンドラーが起動して全体のユーザーエクスペリエンスが低下する可能性があります。 – DeeV

+0

よく、この2つのアプリを見てくださいhttps://market.android.com/details?id=mobi.conduction.swipepad.android&feature=search_resultとhttps://market.android.com/details?id=com.mobilemerit .wavelauncher&feature = search_result。私はそれをする方法を理解しようとしています。 – Brian

+0

私は知っていることに興味があるので、誰かがこれに答えることを願っています。しかし、私はそれらが携帯電話のデスクトップ上にあるもののようなカスタムウィジェットだと思うが、彼らは常に上にある。私が正しく覚えていれば、Wave Launcherはオフスクリーンから始まり、あなたはそれを上にドラッグする必要があります。下の20ピクセルほどがタッチされたことを記録したウィジェットの端です。その外観から、スワイプパッドは同じ方法です。サービスを使用しないでください。 – DeeV

答えて

0

0x0ビューを作成し、常に上にあるシステムダイアログとしてサービスのウィンドウに追加することができます。

'WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH'権限を使用してイベントを再生できます。残念ながら、最初のタッチイベントのみを取得することはできますが、イベントを引き渡してアクティビティを減らすことはできません。私はあなたが実際にそれをすることができないことをうれしく思っています。マルウェアがこれを悪用してユーザーの資格情報を取得する方法を想像できますか?

+0

ありがとうございます。あなたが私の質問に言及していれば、それがどのように機能するかを示す質問へのリンクがあります。私の最大の問題は、実際には動くタッチジェスチャーを得ることです。 Wave LauncherやSwipePadのようなアプリはこれを行うことができますが、私はちょうどその方法を知らない。 – Brian

関連する問題