android input 事件,Android 中input学习--取得input事件

有的时候我们并不希望起个View,从画面上得到各种输入事件。

怎么从底层得到各种input事件呢?

首先android下有个工具getevent,输出结果如下:

$ adb shell getevent

add device 1: /dev/input/event7

name: "proximity"

add device 2: /dev/input/event6

name: "lightsensor-level"

add device 3: /dev/input/event5

name: "compass"

add device 4: /dev/input/event4

name: "saga-keypad"

add device 5: /dev/input/event3

name: "atmel-touchscreen"

add device 6: /dev/input/event2

name: "projector-Keypad"

add device 7: /dev/input/event1

name: "projector_input"

add device 8: /dev/input/event0

name: "h2w headset"

/dev/input/event4: 0001 0074 00000001

/dev/input/event6: 0003 0028 ffffffff

/dev/input/event6: 0000 0000 00000000

/dev/input/event6: 0003 0028 00000005

/dev/input/event6: 0000 0000 00000000

/dev/input/event3: 0003 0030 00000000

/dev/input/event3: 0000 0000 00000000

/dev/input/event3: 0003 0030 00000000

/dev/input/event3: 0000 0000 00000000

/dev/input/event4: 0001 0074 00000000

/dev/input/event?都是一些输入设备,

比如event3是触摸屏的,event5是罗盘的,event4是物理键盘的,等等。

既然getevent能取到这些信息,那我们能不能自己写程序获得这些事件呢,

当然可以,以event3(触摸屏事件)为例:

#include

#include

#include

#include

static char TOUCH_DEVICE[256] = "/dev/input/event3";

int touchfd = -1;

struct pollfd fds[1];

static void init_touch()

{

if((touchfd = open(TOUCH_DEVICE, O_RDWR)) == -1)

{

printf("cannot open touch device %s\n", TOUCH_DEVICE);

// exit(-1);

}

fds[0].fd = touchfd;

fds[0].events = POLLIN;

}

int getevent()

{

struct input_event event;

int res = 0;

res = poll(fds, 1, -1);

while(true) {

if(fds[0].revents) {

if(fds[0].revents & POLLIN) {

res = read(touchfd, &event, sizeof(event));

if(res < (int)sizeof(event)) {

fprintf(stderr, "could not get event\n");

return 1;

}

printf("getevent: %04x %04x %08x\n", event.type, event.code, event.value);

}

}

}

return 0;

}

能取到了,怎么用就不说了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值