导航:首页 > 操作系统 > android代码模拟点击

android代码模拟点击

发布时间:2023-02-01 11:19:35

❶ 我用Xamarin编写android程序,如何实现模拟(自动)点击屏幕上某像素点(不是用户在屏幕上点击)

View.performClick()
可以实现在代码里点击一个视图,但不完全符合你的要求。
点按钮好像没有按下效果

❷ android sendevent模拟滑动点击事件

adb shell input swipe 250 250 300 300
模拟事件全部是通过input命令来实现的,首先看一下input命令的使用:
usage: input ...

具体请查阅 <android keycode详解> http://blog.csdn.net/huiguixian/article/details/8550170

然后使用的话比较简单,比如想模拟home按键:

adb shell input keyevent 3

请查阅上述文章,根据具体keycode编辑即可。

此x、y坐标对应的是真实的屏幕分辨率,所以要根据具体手机具体看,比如你想点击屏幕(x, y) = (250, 250)位置:

adb shell input tap 250 250

adb shell input swipe 250 250 300 300
在项目中实现陀螺仪翻页的解决策略

竖屏

向右滑 :input swipe 50 1000 650 1000 ->

向左滑: input swipe 650 1000 50 1000 <-

横屏

默认点击屏幕在横屏状态下的中心位置 input tap 627 283 (可以完成例如在相册页面的)

向右滑 :input swipe 600 300 800 300 -> (适用于小范围的移动。 例如相册的展示页面)

向左滑 :input swipe 800 300 60 300 <- (适用于小范围的移动。 例如相册的展示页面)

向右滑 :input swipe 200 300 1200 300 -> (适用于大范围的移动。 例如相册的单张浏览模式)

向右滑 :input swipe 1200 300 200 300 <- (适用于大范围的移动。 例如相册的单张浏览模式)

superbar中使用命令在不申请root的条件下打开设备文件节点的权限
打开设备文件节点的权限:chmod 666 /dev/input/*
查看设备文节点的权限: ll /dev/input

android RingSDK 的事件注入
https://code.google.com/p/android-event-injector/

ps:在没有OTG线的情况下连接电脑,通过命令打开任意的app
adb shell am start com.wormhole.glass1/com.wormhole.glass.MainActivit

❸ android怎么模拟点击而不受控制

本文讲的是通过使用代码,可以控制手机的屏幕和物理按键,也就是说不只是在某一个APP里去操作,而是整个手机系统。

更多问题解决办法请参考android学习手册,例子、源码、文档全部搞定,采用androidstudo的目录结构,360手机助手中下载。下面是截图。


getevent/sendevent

getevent&sendevent 是Android系统下的一个工具,可以模拟多种按键和触屏操作,产生的是raw event,raw event经过event hub处理产生最终的gesture事件。getevent用于获取当前系统input设备的一些参数和实时事件的数据;sendevent用于发送input事件,这俩命令的作用就是相当于解放了手,可以通过命令直接调用linux底层来控制手机,工具的源码位于Android SDK的system/core/toolbox下(sendevent.c getevent.c)。


getevent

用法说明:


[plain] view plain print?

#getevent-h

Usage:getevent[-t][-n][-sswitchmask][-S][-v[mask]][-p][-q][-ccount][-r][device]

-t:showtimestamps

-n:don'tprintnewlines

-s:printswitchstatesforgivenbits

-S:printallswitchstates

-v:verbositymask(errs=1,dev=2,name=4,info=8,vers=16,pos.events=32)

-p:showpossibleevents(errs,dev,name,pos.events)

-q:quiet(clearverbositymask)

-c:

-r:printrateeventsarereceived

# getevent -h
Usage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-p] [-q] [-c count] [-r] [device]
-t: show time stamps
-n: don't print newlines
-s: print switch states for given bits
-S: print all switch states
-v: verbosity mask (errs=1, dev=2, name=4, info=8, vers=16, pos. events=32)
-p: show possible events (errs, dev, name, pos. events)
-q: quiet (clear verbosity mask)
-c: print given number of events then exit
-r: print rate events are received
其中[-t]参数显示事件的时间戳,[-n]取消事件显示时的换行符,[-s switchmask]得到指定位的开关状态,[-S]得到所有开关的状态,[-v [mask]]根据mask的值显示相关信息,后面详细介绍mask的使用方法,[-p]显示每个设备支持的事件类型和编码,[-q]只显示事件数据,[-c count]只显示count次事件的数据,[-r]显示事件接收频率。


[java] view plain print?

shell@android:/$getevent-p

shell@android:/ $ getevent -p

[java] view plain print?

getevent-p

adddevice1:/dev/input/event7

name:"gpio-keys"

events:

KEY(0001):0066

inputprops:

<none>

adddevice2:/dev/input/event2

name:"alps"

events:

ABS(0003):0000:value12,min-4096,max4096,fuzz0,flat0,resolution0

0001:value-4,min-4096,max4096,fuzz0,flat0,resolution0

0002:value-252,min-4096,max4096,fuzz0,flat0,resolution0

000a:value0,min-4096,max4096,fuzz0,flat0,resolution0

0010:value0,min-4096,max4096,fuzz0,flat0,resolution0

0011:value0,min-4096,max4096,fuzz0,flat0,resolution0

inputprops:

<none>

adddevice3:/dev/input/event6

name:"7k_handset"

events:

KEY(0001):006b00720073007400e2

inputprops:

<none>

adddevice4:/dev/input/event5

name:"proximity_sensor"

events:

ABS(0003):0019:value1,min0,max1,fuzz0,flat0,resolution0

inputprops:

<none>

adddevice5:/dev/input/event4

name:"accelerometer_sensor"

events:

inputprops:

<none>

adddevice6:/dev/input/event3

name:"magnetic_sensor"

events:

inputprops:

<none>

adddevice7:/dev/input/event1

name:"7x27a_kp"

events:

KEY(0001):00720073

inputprops:

<none>

adddevice8:/dev/input/event0

name:"sec_touchscreen"

events:

KEY(0001):0066008b009e00d9

ABS(0003):002f:value0,min0,max4,fuzz0,flat0,resolution0

0030:value0,min0,max255,fuzz0,flat0,resolution0

0032:value0,min0,max100,fuzz0,flat0,resolution0

0035:value0,min0,max480,fuzz0,flat0,resolution0

0036:value0,min0,max800,fuzz0,flat0,resolution0

0039:value0,min0,max4,fuzz0,flat0,resolution0

LED(0011):0008

inputprops:

INPUT_PROP_DIRECT

getevent -p
add device 1: /dev/input/event7
name: "gpio-keys"
events:
KEY (0001): 0066
input props:
<none>
add device 2: /dev/input/event2
name: "alps"
events:
ABS (0003): 0000 : value 12, min -4096, max 4096, fuzz 0, flat 0, resolution 0
0001 : value -4, min -4096, max 4096, fuzz 0, flat 0, resolution 0
0002 : value -252, min -4096, max 4096, fuzz 0, flat 0, resolution 0
000a : value 0, min -4096, max 4096, fuzz 0, flat 0, resolution 0
0010 : value 0, min -4096, max 4096, fuzz 0, flat 0, resolution 0
0011 : value 0, min -4096, max 4096, fuzz 0, flat 0, resolution 0
input props:
<none>
add device 3: /dev/input/event6
name: "7k_handset"
events:
KEY (0001): 006b 0072 0073 0074 00e2
input props:
<none>
add device 4: /dev/input/event5
name: "proximity_sensor"
events:
ABS (0003): 0019 : value 1, min 0, max 1, fuzz 0, flat 0, resolution 0
input props:
<none>
add device 5: /dev/input/event4
name: "accelerometer_sensor"
events:
input props:
<none>
add device 6: /dev/input/event3
name: "magnetic_sensor"
events:
input props:
<none>
add device 7: /dev/input/event1
name: "7x27a_kp"
events:
KEY (0001): 0072 0073
input props:
<none>
add device 8: /dev/input/event0
name: "sec_touchscreen"
events:
KEY (0001): 0066 008b 009e 00d9
ABS (0003): 002f : value 0, min 0, max 4, fuzz 0, flat 0, resolution 0
0030 : value 0, min 0, max 255, fuzz 0, flat 0, resolution 0
0032 : value 0, min 0, max 100, fuzz 0, flat 0, resolution 0
0035 : value 0, min 0, max 480, fuzz 0, flat 0, resolution 0
0036 : value 0, min 0, max 800, fuzz 0, flat 0, resolution 0
0039 : value 0, min 0, max 4, fuzz 0, flat 0, resolution 0
LED (0011): 0008
input props:
INPUT_PROP_DIRECT
可以看到 [-p] 参数显示出来当前系统存在的所有input设备,并且把每个设备支持的事件类型以及编码都列举了出来。


每一个device相当于手机所支持的input设备,每个device里面的events下:KEY(0001) 、ABS(0003)、SYN(0000)等表示该设备所支持的事件类型:EV_SYN[0000] (同步事件),EV_KEY[0001] (按键事件),EV_ABS[0003] (绝对值事件)

举例event0中的KEY类型:

[java] view plain print?

KEY(0001):0066008b009e00d9

KEY(0001):0066008b009e00d9


表示sec_touchscreen支持的按键编码有:KEY_HOME[0066] (HOME键),KEY_MENU[008b] (MENU键)

KEY_BACK[009e] (BACK键),KEY_SEARCH[00d9] (SEARCH键)

举例event0中的ABS类型:

❹ android怎么模拟点击而不受控制

事情是这样的。现在要写一个模拟点击的功能(当然是点击第三方的APP了)。
可以用 Instrumentation 但是要在全局生效 就要假如这一行
android:sharedUserId="android.uid.system"
可以加了之后不能运行 要拿到系统签名文件 可是楼主没有android的源代码 这种做法被放弃。
还可以用adb shell 命令 我的代码是这样的 :

Java code
String[ ] commands =
{"mount -o rw,remount /system/bin/sendevent/dev/input", "sendevent /dev/input/event212 314 868 1004"};
CommandResult result = ShellUtils.execCommand(commands, false);//执行shell 命令
可是也没有看到效果 不知道这个是不是一定要ROOT才行
至于还有一种 是用了AccessibilityService 界面变化时监听到了 可是目标界面的关键按钮被屏蔽!反而目标界面上的其他无关紧要的按钮能点击
上一下核心代码 就是点击这张图片了:

Java code

AccessibilityNodeInfo mNodeInfo = event.getSource();
List<AccessibilityNodeInfo> list = mNodeInfo.("com.soft.apk008v:id/main_centerImg");
for (AccessibilityNodeInfo node : list) {
node.performAction(AccessibilityNodeInfo.ACTION_LONG_CLICK);
}

点击图片的时候报错了。这个APP不知道是怎样加的密 。反编译看看源码 这个图片按钮 是OnTouch监听 手放开就执行跳转事件
直接跳转到目标Activity也是不被允许的

❺ android中,如何模拟触摸屏down的一个事件,例如屏幕有个按钮,我要是用代码实现按钮被点击了。

不知道你是要知道“怎么模拟按钮的点击事件”还是要知道“这个东西是怎么调上来的”?
1、模拟点击事件,可以用调用Button的onClick的方法。
2、这个点击事件是触到屏幕后,触摸屏驱动首先得到这个消息,然后根据WindowManager里面记录的信息分发给ViewRoot,然后就一直发,就像生活委员发信件一样,最终发给那个被点击的View,没人处理就报废。

❻ android 模拟view中的某个控件点击

最近项目中有个需求,点击某一个按钮以外的位置触发按钮的点击事件。 但是这整个view 都是第三方的。 

通过父容器的dispatchTouchEvent(MotionEvent ev) 对事件进行控制和分发。

(1)找到要触发的按钮,获取他的坐标 通过递归找到对应的控件

(2)判断点击是否在控件上

/**

* 判断是否点击在view上

*

* @param pointX

* @param pointY

* @param view

* @return

*/

private boolean isPointInView(float pointX, float pointY, View view) {

    if (view ==null) {

        return false;

    }

    int[] location =new int[2];

    view.getLocationOnScreen(location);

    int x = location[0];

    int y = location[1];

    if (pointX >= x && pointX <= x + view.getWidth() && pointY >= y && pointY <= y + view.getHeight()) {

        return true;

    }

    return false;

}

(3) 如果不在控件的位置,则通过传递 控件的MotionEvent 设置MotionEvent 的location ,分发child.dispatchTouchEvent 事件

private boolean dispatchChildTouchEvent(MotionEvent ev, View child) {

    MotionEvent transformedEvent = MotionEvent.obtain(ev);

    if (downPosX ==0 ||downPosY ==0) {

        int wd = Math.max(child.getWidth(), 1);

        int hg = Math.max(child.getHeight(), 1);

        Random random =new Random();

        downPosX = random.nextFloat() *(wd -1);

        downPosY = random.nextFloat() *(hg -1);

    }

    transformedEvent.setLocation(downPosX, downPosY);

    Logger.d(TAG, "dispatchChildTouchEvent"+" posx " +downPosX +" posy " +downPosY);

    return child.dispatchTouchEvent(transformedEvent);

}

❼ Android 如何实现模拟点击

实现模拟点击,需要root手机,然后获取linux中的事件点击驱动,相关

❽ Android模拟点击

个人博客: haichenyi.com 。感谢关注

  本篇介绍实现模拟点击的两种方式:

  举个栗子:我们现在需要实现点击A按钮,触发B按钮点击事件的效果:两个按钮在布局里面随便创建就好了。

   第一种方式就是:调用performClick事件

  这种方式很简单,但是有一个弊端,就是不会传递触摸点坐标,只是模拟一下btn2的点击事件。

   第二种方式就是:MotionEvent事件

  这种方式比较麻烦,用到的就是view的事件分发,一个简单的点击事件的触发就是down和up组成,当然还有平移我们这里不考虑。

   第一步 ,先用MotionEvent.obtain创建两个事件:一个down事件,一个up事件,创建的时候需要传递坐标点,传你目标view的范围内的坐标就行。

   第二步 ,通过目标view,也就是这里的btn2去把这两个事件分发出去,通过dispatchTouchEvent分发,这样就完成了一次模拟点击事件,分发完记得回收

  这样,就完成了一次模拟点击,并且坐标也传递了。因为,创建这两个事件的时候就传递了。解决了performClick的弊端。

❾ android studio 能用c++写模拟触摸点击吗

可以用C+来写模拟,但是不建议,会比较麻烦。

但站在个人角度来说,最简单的是用Java代码。

在相应控件下写上:android:onClick=“btnClick”,然后按照自己的想法设置一下参数,并登录就可以了。当然,还有其它办法,分别为:1、内部实现类;2、Activity实现OnClicklistenter;3、匿名内部实现类。

这些事件写法思路都是一样的:

主要是看你自己习惯用哪一种。

❿ android 如何模拟 自动点击某个定点坐标

在Android中有时需要模拟某一个View的touch事件,来达到对该View的功能相应处理的简单化,因为你只需要模拟对该View的touch事件,便能沿着原来touch的事件相应走下去,不需要添加任何代码,你可以这么做:

从代码可以看出这里的重点是需要知道两个点:一是你模拟点击的坐标,在这里就是x和y,二就是你需要设置响应这个点击事件的View,这里是一个SeekBar,这个点击的坐标一般也选在这个需要响应View上,我的使用场景是在遥控器的确定键的相应上,如果还有新的应用场景,请多交流哦。

阅读全文

与android代码模拟点击相关的资料

热点内容
苏e行app为什么会有登录过期 浏览:799
杰森坐牢 下象棋是什么电影 浏览:408
苹果相机也么加密 浏览:891
java图片打印 浏览:173
恶魔小丑电影 浏览:548
apriori算法软件 浏览:24
波利亚怎样解题pdf 浏览:570
法国电影耽美 浏览:642
java调用迅雷 浏览:423
开发云服务器cvm需要做些什么 浏览:259
程序员长期变胖 浏览:629
平板怎么创建图标文件夹 浏览:220
alphafrance制作的影片 浏览:281
小电影网站有那些 浏览:191
护工韩国伦理电影 浏览:899
母乳人妻伦理片 浏览:844
电影院被强行猛插 浏览:208
80年代台湾老电影红楼梦 浏览:278
大疆带屏控如何安装app 浏览:946
国产大胸电影 浏览:706