當前位置:首頁 » 安卓系統 » 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");
}
}
熱點內容
redis永久緩存 發布:2024-11-28 12:37:40 瀏覽:55
php是自學網 發布:2024-11-28 12:33:57 瀏覽:732
php採集系統 發布:2024-11-28 12:32:04 瀏覽:907
資料庫恢復的實現技術 發布:2024-11-28 12:25:26 瀏覽:5
壓縮圖檔 發布:2024-11-28 12:25:23 瀏覽:423
自定義緩存 發布:2024-11-28 12:25:07 瀏覽:235
怎麼進電腦的伺服器 發布:2024-11-28 12:23:57 瀏覽:830
伺服器2s1u是什麼意思 發布:2024-11-28 12:22:54 瀏覽:511
伺服器怎麼當做掛機寶 發布:2024-11-28 12:16:49 瀏覽:45
ga演算法nn 發布:2024-11-28 12:12:17 瀏覽:50