如何在没有路由的Android设备上强制触摸事件

时间:2017-07-31 11:29:23

标签: java android automation touch adb

我想编写一个可以在手机上以编程方式生成触摸事件的应用程序。

我已经尝试过这种方法:

  • adb:adb swipe等...它需要USB线并将手机连接到电脑
  • adb ON TCPIP:同样的 我对adb的问题是需要用户进行如此多的预设,而我并不想让用户学习它。我已经创建了一个使用adb的应用程序,但用户很难正确设置:(

  • 我听说过,我试图用平台标志签署我的应用程序,但它对我不好,因为我想在Android市场上发布我的应用程序而且它不是系统应用程序。 ..

我想找到一种在单个应用程序中实现此功能的方法,该应用程序可以在应用程序之外(从后台)产生触摸,我想在市场上发布。

我找到了这个应用程序:https://play.google.com/store/apps/details?id=com.teamviewer.quicksupport.samsung基本上可以做到这一点。因为当我点击我的电脑时,它会向手机发送信息并且手机会在屏幕上触摸。团队访问者如何以及拥有什么特权呢?

请给我一些建议。

2 个答案:

答案 0 :(得分:1)

  

我想找到一种在单个应用程序中实现此功能的方法,该应用程序可以在应用程序之外(从后台)产生触摸,我想在市场上发布。

除了可访问性服务可以完成的小输入伪装之外,这是不可能的。

  

团队观察员如何以及拥有哪些特权?

如果您阅读Play商店列表,您会发现它仅适用于三星设备。这是因为TeamViewer的制造商与三星达成协议以实现这种集成。同样,TeamViewer团队与其他一些设备制造商达成了协议。但是,他们没有与所有制造商合作,因此TeamViewer无法在所有设备上运行。

答案 1 :(得分:0)

在这里看看。这可能很有用。

InputInjector Android库可简化向您的Android应用程序注入InputEvents(MotionEvent,KeyEvent)的过程。该库使用内部API调用来注入事件,并取决于事件的可访问性。因此,该库将无法在所有设备上运行,但理论上支持Android 2.3及更高版本(API级别9-18 +)。

Androd 2.3(API级别9-15)

在旧版Android中,我们调用了与Instrumentation框架所使用的系统调用相同的系统调用。

权限无需设置特殊权限。

Androd 4.1.2(API级别16及更高版本)

从API级别16开始,我们可以访问InputManager类。我们以此为基础进行输入注入。

权限使用InputManager进行注入需要在清单中设置权限android.permission.INJECT_EVENTS。

使用此权限可能需要更改Lint Error Checking才能进行编译。在Eclipse中,这是通过转到Window-> Preferences-> Android-> Lint错误检查,然后找到ProtectedPermissions并将严重性设置为错误以外的其他方式来完成的。

注意:为了使用InputManager向其他应用注入事件,您的apk必须使用系统级证书签名。

https://github.com/arnebp/android-inputinjector