如何让一个service监听按键事件

cyq1028 2012-03-16 01:35:16
如何让一个service监听按键事件?
另外我还想让这个服务开机就能运行?

求助!
...全文
873 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
jason_0918 2014-10-27
  • 打赏
  • 举报
回复
楼主 我现在也有这样的需求 同求源码啊 920754891@qq.com 万分感谢!
搬砖de蚂蚁 2014-10-27
  • 打赏
  • 举报
回复
各位牛人,有demo吗? 跪求!
lonuery 2014-04-29
  • 打赏
  • 举报
回复
引用 4 楼 cyq1028 的回复:
恩,非常感谢,考虑问题很全面, 我用c写了个库,直接访问input设备的,已经可以了,多谢![Quote=引用 3 楼 z642010820 的回复:] 输入事件从驱动读出后由WindowManagerService派发给焦点进程的焦点view上面, 具体我不知道如何能获取,但有想法供你参考。 1.越过框架层,在你的service里直接通过jni去读内核Input子系统报上来的消息 2.看看WindowManager有没有提供截取按键消息的binder接口出来 3.不行就想想为何有这种需求,是不是想歪了 开机运行需要在Manifect…… [/Quote]
能不能够写篇博客介绍一下,我仿照getevent.c的源码,写了一个.c文件,然后通过JNI去调用,但是还是监听不了,写篇博客介绍一下这个过程吧,或者放出一份demo也行,很期待大家一起交流
lonuery 2014-04-22
  • 打赏
  • 举报
回复
对了,能不能将你空间中的个人联系方式完善一下,以后遇到问题也能够更好的交流,我发现很多csdn的博客作者都 没有联系方式,将邮箱或者QQ留下,真的能够很好的进行交流,要不然就只能等你上线回复才能够交流,这样太费时 了。
lonuery 2014-04-22
  • 打赏
  • 举报
回复
引用 12 楼 cyq1028 的回复:
[quote=引用 11 楼 mzba520 的回复:] 同求源码 452655443@qq.com
getevent.c参考这个例子就可以了!
引用 9 楼 Landly 的回复:
求 一份源码 万分感激 454949196@qq.com
getevent.c参考这个例子就可以了!
引用 8 楼 zkw12358 的回复:
[quote=引用 6 楼 cyq1028 的回复:] 1、改变/dev/input/eventX的读写权限 2、jni写一个so,用select或者epoll来监听input事件,可以用inotify实现 3、app调用jni接口就可以了
楼主能不能将实现的一些代码放出来,我刚好也要实现你这样的功能,因为我们是在定制的android机器上进行 开发的,要求当程序在后台也能够监听特定的按键,但是要实现这样貌似就只能自己写一个so库,然后通过JNI去调用这个so库,问题是现在无从下手,能不能提供一个例子让我参考参考,不甚感激,lonuery@gmail.com[/quote]
引用 8 楼 zkw12358 的回复:
[quote=引用 6 楼 cyq1028 的回复:] 1、改变/dev/input/eventX的读写权限 2、jni写一个so,用select或者epoll来监听input事件,可以用inotify实现 3、app调用jni接口就可以了
楼主能不能将实现的一些代码放出来,我刚好也要实现你这样的功能,因为我们是在定制的android机器上进行 开发的,要求当程序在后台也能够监听特定的按键,但是要实现这样貌似就只能自己写一个so库,然后通过JNI去调用这个so库,问题是现在无从下手,能不能提供一个例子让我参考参考,不甚感激,lonuery@gmail.com[/quote] getevent.c参考这个例子就可以了! [/quote]这个类我已经看了,但现在关键是我获取到按键事件后怎样将这个按键事件传递给相应的服务?仿照getEvent.c写,然后使用JNI去调用,getEvent是不停的循环read,获取到事件之后应该怎样返回给service?能不能留下邮箱,好方便交流,我的email:lonuery@gmail.com
cyq1028 2014-04-18
  • 打赏
  • 举报
回复
引用 11 楼 mzba520 的回复:
同求源码 452655443@qq.com
getevent.c参考这个例子就可以了!
引用 9 楼 Landly 的回复:
求 一份源码 万分感激 454949196@qq.com
getevent.c参考这个例子就可以了!
引用 8 楼 zkw12358 的回复:
[quote=引用 6 楼 cyq1028 的回复:] 1、改变/dev/input/eventX的读写权限 2、jni写一个so,用select或者epoll来监听input事件,可以用inotify实现 3、app调用jni接口就可以了
楼主能不能将实现的一些代码放出来,我刚好也要实现你这样的功能,因为我们是在定制的android机器上进行 开发的,要求当程序在后台也能够监听特定的按键,但是要实现这样貌似就只能自己写一个so库,然后通过JNI去调用这个so库,问题是现在无从下手,能不能提供一个例子让我参考参考,不甚感激,lonuery@gmail.com[/quote]
引用 8 楼 zkw12358 的回复:
[quote=引用 6 楼 cyq1028 的回复:] 1、改变/dev/input/eventX的读写权限 2、jni写一个so,用select或者epoll来监听input事件,可以用inotify实现 3、app调用jni接口就可以了
楼主能不能将实现的一些代码放出来,我刚好也要实现你这样的功能,因为我们是在定制的android机器上进行 开发的,要求当程序在后台也能够监听特定的按键,但是要实现这样貌似就只能自己写一个so库,然后通过JNI去调用这个so库,问题是现在无从下手,能不能提供一个例子让我参考参考,不甚感激,lonuery@gmail.com[/quote] getevent.c参考这个例子就可以了!
06peng 2014-03-29
  • 打赏
  • 举报
回复
同求源码 452655443@qq.com
CuitMagical 2014-03-25
  • 打赏
  • 举报
回复
同求 源码一份 万分感谢啊 2259356002@qq.com
Landly 2014-03-10
  • 打赏
  • 举报
回复
求 一份源码 万分感激 454949196@qq.com
lonuery 2013-12-30
  • 打赏
  • 举报
回复
引用 6 楼 cyq1028 的回复:
1、改变/dev/input/eventX的读写权限 2、jni写一个so,用select或者epoll来监听input事件,可以用inotify实现 3、app调用jni接口就可以了
楼主能不能将实现的一些代码放出来,我刚好也要实现你这样的功能,因为我们是在定制的android机器上进行 开发的,要求当程序在后台也能够监听特定的按键,但是要实现这样貌似就只能自己写一个so库,然后通过JNI去调用这个so库,问题是现在无从下手,能不能提供一个例子让我参考参考,不甚感激,lonuery@gmail.com
废墟的树 2013-12-11
  • 打赏
  • 举报
回复
求楼主给点具体实现的代码之类的,非常感谢,很有需要。。。。。。804677682@qq.com
cyq1028 2013-06-08
  • 打赏
  • 举报
回复
1、改变/dev/input/eventX的读写权限 2、jni写一个so,用select或者epoll来监听input事件,可以用inotify实现 3、app调用jni接口就可以了
renmeng19860531 2012-04-23
  • 打赏
  • 举报
回复
能否向楼主请教一下是如何实现的呢
cyq1028 2012-03-19
  • 打赏
  • 举报
回复
恩,非常感谢,考虑问题很全面,
我用c写了个库,直接访问input设备的,已经可以了,多谢![Quote=引用 3 楼 z642010820 的回复:]

输入事件从驱动读出后由WindowManagerService派发给焦点进程的焦点view上面, 具体我不知道如何能获取,但有想法供你参考。
1.越过框架层,在你的service里直接通过jni去读内核Input子系统报上来的消息
2.看看WindowManager有没有提供截取按键消息的binder接口出来
3.不行就想想为何有这种需求,是不是想歪了

开机运行需要在Manifect……
[/Quote]
z642010820 2012-03-17
  • 打赏
  • 举报
回复
输入事件从驱动读出后由WindowManagerService派发给焦点进程的焦点view上面, 具体我不知道如何能获取,但有想法供你参考。
1.越过框架层,在你的service里直接通过jni去读内核Input子系统报上来的消息
2.看看WindowManager有没有提供截取按键消息的binder接口出来
3.不行就想想为何有这种需求,是不是想歪了

开机运行需要在Manifect里加个Broadcastreceiver,收到Bootcomplete消息后start你的server
cyq1028 2012-03-17
  • 打赏
  • 举报
回复
Android广播机制(两种注册方法)
1)第一种不是常驻型广播,也就是说广播跟随activity的生命周期。注意: 在activity结束前,移除广播接收器。
2)第二种是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。

如果是常驻型必须让apk先运行一次,才能被注册到系统中!
bluird 2012-03-16
  • 打赏
  • 举报
回复
重写一个函数public boolean onKeyDown(int keyCode, KeyEvent event)
开机运行比较简单通过应用程序自行在系统中登记注册事件(即Intent)来响应系统产生的各类消息。

例如Android实现系统开机自启动程需要在Manifest中加入如下Intent-filter及权限Uses-permission即可。
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
(修改时候主要是去掉上面该行即可)
<category android:name="android.intent.category.HOME" />
</intent-filter>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧