当前位置:首页 » 安卓系统 » android模拟点击事件

android模拟点击事件

发布时间: 2024-02-04 13:52:49

❶ 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框架 ImageButton如何实现 按住和松开时的事件

这个可以用onTouch来实现,touch事件有手指按下,移动,放开的相关api。

关于Touch事件的说明:

1.关于事件构成

在Android中,事件主要包括点按、长按、拖拽、滑动等,点按又包括单击和双击,另外还包括单指操作和多指操作。所有这些都构成了Android中的事件响应。总的来说,所有的事件都由如下三个部分作为基础:

1.按下(ACTION_DOWN)

2.移动(ACTION_MOVE)

3.抬起(ACTION_UP)

所有的操作事件首先必须执行的是按下操作(ACTIONDOWN),之后所有的操作都是以按下操作作为前提,当按下操作完成后,接下来可能是一段移动(ACTIONMOVE)然后抬起(ACTION_UP),或者是按下操作执行完成后没有移动就直接抬起。这一系列的动作在Android中都可以进行控制。


2.事件的处理API

在View和ViewGroup中都存在dispatchTouchEvent和onTouchEvent方法,但是在ViewGroup中还有一个onInterceptTouchEvent方法,在Android中,所有的事件都是从开始经过传递到完成事件的消费,这些方法的返回值就决定了某一事件是否是继续往下传,还是被拦截了,或是被消费了。

public boolean dispatchTouchEvent(MotionEvent event)
public boolean onTouchEvent(MotionEvent event)
public boolean onInterceptTouchEvent(MotionEvent event)


3.事件处理API的说明

  1. dispatchTouchEvent方法用于事件的分发,Android中所有的事件都必须经过这个方法的分发,然后决定是自身消费当前事件还是继续往下分发给子控件处理。返回true表示不继续分发,事件没有被消费。返回false则继续往下分发,如果是ViewGroup则分发给onInterceptTouchEvent进行判断是否拦截该事件。

  2. onTouchEvent方法用于事件的处理,返回true表示消费处理当前事件,返回false则不处理,交给子控件进行继续分发。

  3. onInterceptTouchEvent是ViewGroup中才有的方法,View中没有,它的作用是负责事件的拦截,返回true的时候表示拦截当前事件,不继续往下分发,交给自身的onTouchEvent进行处理。返回false则不拦截,继续往下传。

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

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

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

❹ 如何绑定android点击事件

绑定android点击事件需要在该空间添加android:onClick="click"属性(click是为事件的方法),具体操作步骤如下:

1、使用Android studio创建一个Android项目,如下图:

❺ 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点击事件

绑定Android点击事件有三种方式:
一、匿名内部类
1、通过资源ID找到对应的Android控件,比如R.id.button1
Button button1 = (Button)findViewById(R.id.button1);
2、调用setOnClickListener方法,将点击事件与之绑定
button1.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
//这里放点击事件的逻辑
}
});
二、XML申明式
1、在对应的布局文件中添加一个按钮,即Button
2、在Button中添加 onClick="foo()" 属性
3、在对应的Activity中编写对应的foo()方法,如下:
public void foo(View v){
//这里放点击事件的逻辑
//这里的 " v " 是指当前组件,就是你点击的这个按钮

}
三、统一处理式
1、使对应的Activity类实现View.OnClickListener 接口,也就是这样写:

public class xxActivity implement View.OnClickListener {

2、在方法中重载onClick(View v)方法

public void onClick(View v){
3、通过 v.getId() 来判断,来源是哪一个按钮,这里可以放一个switch开关语句,来进行逻辑的分工。
}
}

纯手打,希望上文能对你起到一定的辅助作用。

❼ android textview或者LinearLayout的双击事件怎么做

这个我实现了,但是也是用记录上次点击时间的方法,代码给你看下。

importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.TextView;

importcom.sinovoice.test.R;

{
privatestaticfinalStringTAG="DoubleClickActivity";

privateintclickCount;
privatelongpreClickTime;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

TextViewtv=(TextView)findViewById(R.id.tv_main);
clickCount=0;
tv.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
if(clickCount==0){
preClickTime=System.currentTimeMillis();
clickCount++;
}elseif(clickCount==1){
longcurTime=System.currentTimeMillis();
if((curTime-preClickTime)<500){
doubleClick();
}
clickCount=0;
preClickTime=0;
}else{
Log.e(TAG,"clickCount="+clickCount);
clickCount=0;
preClickTime=0;
}
}
});
}

privatevoiddoubleClick(){
Log.i(TAG,"doubleclick");
}
}
热点内容
php输出array 发布:2024-11-28 13:30:15 浏览:745
汽车安卓大屏的高德怎么卸载 发布:2024-11-28 13:26:00 浏览:701
androidbitmap失真 发布:2024-11-28 13:05:04 浏览:866
php图片识别文字 发布:2024-11-28 12:55:23 浏览:823
redis永久缓存 发布:2024-11-28 12:37:40 浏览:56
php是自学网 发布:2024-11-28 12:33:57 浏览:733
php采集系统 发布:2024-11-28 12:32:04 浏览:908
数据库恢复的实现技术 发布:2024-11-28 12:25:26 浏览:6
压缩图档 发布:2024-11-28 12:25:23 浏览:424
自定义缓存 发布:2024-11-28 12:25:07 浏览:236