HTC Sensation 事件操作.

真机于模拟器的区别是,网上一大堆的说明,操作方法都是针对的模拟器,用到真机上,不起作用了.

一般模拟器的事件就一个.

模拟器获取事件信息

root@generic:/ # getevent
add device 1: /dev/input/event0
  name:     "qwerty2"
就一个/dev/input/event0  因此能搜到的文章都是写的event0

真机就比较多了,如我的这个HTC

有8个设备

# getevent
add device 1: /dev/input/event6
  name:     "proximity"
add device 2: /dev/input/event5
  name:     "lightsensor-level"
add device 3: /dev/input/event4
  name:     "dummy_keypad"
add device 4: /dev/input/event3
  name:     "pyramid-keypad"
add device 5: /dev/input/event2
  name:     "cy8c-touchscreen"
add device 6: /dev/input/event1
  name:     "rcp_events"
add device 7: /dev/input/event0
  name:     "h2w headset"
add device 8: /dev/input/event7
  name:     "htc_headset"

需要给手机发送指令,那么就需要知道你摸了手机,是哪个设备相应的

通过getevent很容易

用手点了下

/dev/input/event2: 0003 0030 00000040
/dev/input/event2: 0003 0032 00000040
/dev/input/event2: 0003 0035 00000196
/dev/input/event2: 0003 0036 000002e5
/dev/input/event2: 0000 0002 00000000
/dev/input/event2: 0000 0000 00000000

输出一大堆event2 那么接受点击的就是 /dev/input/event2 这个设备了

点了下开机键

/dev/input/event3: 0001 0074 00000001
/dev/input/event3: 0001 0074 00000000

输出了event3 那么开机键关联的就是 /dev/input/event3 这个设备了


手机的分辨率是540 960

按照这个尺寸获取坐标小心,发送sendevent 是不对的.

通过getevent -p 获取event2的参数信息

add device 5: /dev/input/event2
  name:     "cy8c-touchscreen"
  events:
    SYN (0000): 0000  0001  0003 
    KEY (0001): 0066  008b  009e  00d9 
    ABS (0003): 0030  value 0, min 0, max 255, fuzz 0 flat 0
                0032  value 0, min 0, max 512, fuzz 0 flat 0
                0035  value 0, min 11, max 1012, fuzz 0 flat 0
                0036  value 0, min 6, max 940, fuzz 0 flat 0

0035的值范围是 11 ---- 1012

540这个尺寸需要调整下按比例缩放.

540/1001 + 11 才是实际映射到事件的尺寸.

通过 getevent -t 查看手机接受的事件信息

25804-683810: /dev/input/event5: 0003 0028 00000002
25804-684206: /dev/input/event5: 0000 0000 00000000
25805-734866: /dev/input/event2: 0003 0030 0000003c
25805-737734: /dev/input/event2: 0003 0032 0000003c
25805-737795: /dev/input/event2: 0003 0035 00000221
25805-737856: /dev/input/event2: 0003 0036 00000120
25805-737917: /dev/input/event2: 0000 0002 00000000
25805-737978: /dev/input/event2: 0000 0000 00000000

事件发送的速度是很快的,是在同意秒内进行处理,

所以你发送sendevent 是跟不上这个节奏的,如果要进行划屏的操作,那么一个一个的发送指令,执行时就成了长按效果了.

因此网上的一堆指令发送是达不到想象的效果的.

非要达到这个效果,那么需要把指令错开,并发执行.

XXXXXXXXXXXXXXXXXX &

sleep XXX

一般通过这样子来模拟并发并且有间隔,但是因为执行时间不固定,因此也还是会存在指令错位导致的异常.

还有一种功能就是通过直接在设备上安装代理,通过agent的方式发送keyevent的方法进行,不过这样实现较复杂.

对于android更高版本的系统input会支持更多的参数,此类设备比较好实现,也不会存在等版本android指令不知道导致使用折中方法导致的问题.








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值