導航:首頁 > 操作系統 > 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代碼模擬點擊相關的資料

熱點內容
阿滿喜劇系列電影名單 瀏覽:866
律師pdf 瀏覽:412
有一個片 一個孕婦肚子有怪獸 瀏覽:844
姜銀慧主演的電影有哪些 瀏覽:998
最新日韓電影好看的韓國電影日本電影免費觀看 瀏覽:317
潘金蓮在鞦韆上吃葡萄是哪部電影 瀏覽:321
穿越二戰賣軍火給德國的小說 瀏覽:991
韓國倫理電影吸毒 瀏覽:520
法國真實口交的電影叫什麼 瀏覽:629
成龍鯊魚館的電影 瀏覽:606
看字幕英文視頻的是app 瀏覽:834
帶點顏色的玄幻仙俠 瀏覽:426
擎洲廣達為什麼有加密狗 瀏覽:806
0855電影 瀏覽:749
壓縮袋封口不好封 瀏覽:825
長春一汽程序員真實待遇 瀏覽:997
唯美動作愛情片 瀏覽:316
表情廣場app怎麼自己製作 瀏覽:249
看片著名網站 瀏覽:485
五十年代台灣電影 瀏覽:356