0

アプリのクリック、選択、スワイプ、閉じるなどのすべてのユーザー操作をデータベースに保存するモバイルアプリを開発したいと考えています。操作のボタン名、ID、時間を保存する必要があります。

実行中の他のアプリを邪魔することなく、Android でそれを追跡するにはどうすればよいですか?

4

1 に答える 1

1

これを行うネイティブな方法はありません。これを行う (簡単な) API を公開すると、あまりにも多くの人が (仮想) キーボードで入力したパスワードを含むユーザーのアクションを簡単に追跡できるようになるためです。安全保障問題。開発するアプリがこの追跡を主な目的として (バックグラウンドの「追加の」非広告追跡としてではなく) 行うと仮定すると、これはあまり問題になりません。

オーバーレイを使用すると、他のアクティビティに干渉することなく、一部のイベントをキャプチャできます。Serviceキャプチャ ウィンドウを作成する で、次のように指定しTYPE_SYSTEM_OVERLAYますFLAG_WATCH_OUTSIDE_TOUCH

mView = new TouchCaptureView(this);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
            WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
            PixelFormat.TRANSLUCENT);
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.addView(mView, params);

次に、タッチ キャプチャ ビューをオーバーライドして、データベース内のonTouchEventすべてを記録MotionEventします。ただし、これでは、ユーザーが実際にクリックしたものを知ることはできません。それはボタン、チェックボックスなどである可能性があり、それを知る方法はありません(さらに、コントロールがカスタム実装である可能性があります)。アプリはユーザーのアクションを他のアプリにブロードキャストしないため、結果のアクションを決定することはまったく不可能です。また、Android 4.0 以降では、オーバーレイ ウィンドウはイベントをキャプチャしなくなりました。TYPE_SYSTEM_ALERT引き続きイベントをキャプチャしますが、他のアクティビティに干渉します。

TL;DR: できません。

于 2014-06-27T14:19:28.533 に答える