admin管理员组

文章数量:1415491

I'm working on an Android project where I need to count the number of clicks or screen touches that occur on an underlying application, even when my app is running in the foreground.

Here's the scenario:

  1. My app is running in the foreground.
  2. Another app (e.g., the calculator app) is running in the background, visible beneath my app.
  3. I need to detect and count the number of times the user touches the screen, even if those touches are technically interacting with the underlying app.

I've tried several approaches, including:

  • Foreground Services: These allow my app to run in the foreground, but they don't seem to provide a way to capture touch events on other apps.
  • Accessibility Services: While powerful, I'm not sure if they are the right tool for this specific task, as I don't need to interact with the underlying app's UI elements, just count the touches.
  • WindowManager and Overlays: I've created a transparent overlay using WindowManager and SYSTEM_ALERT_WINDOW permission, but I'm struggling to capture touch events that are intended for the underlying app.
  • TouchInterceptor : I created a TouchInterceptor class that extends View. I added this class to the windowManager with 0 width and 0 height. I tried to catch touch events with onTouchEvent method. But onTouchEvent method is not called.

I'm looking for a way to achieve this without requiring root access or modifying the underlying app.

Here are my specific questions:

  1. Is it possible to capture touch events that occur on an underlying app from a foreground app in Android?
  2. If so, what are the recommended approaches or techniques to achieve this?
  3. Are there any specific Android APIs or permissions that I should be using?
  4. Is there a way to detect touch events without interfering with the underlying app's functionality?
  5. Why is onTouchEvent method not called?

Any guidance or code examples would be greatly appreciated.

Thanks in advance!

本文标签: