如何让一个service监听按键事件? 另外我还想让这个服务开机就能运行? 重写一个函数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"/>
输入事件从驱动读出后由WindowManagerService派发给焦点进程的焦点view上面, 具体我不知道如何能获取,但有想法供你参考。 1.越过框架层,在你的service里直接通过jni去读内核Input子系统报上来的消息 2.看看WindowManager有没有提供截取按键消息的binder接口出来 3.不行就想想为何有这种需求,是不是想歪了
开机运行需要在Manifect里加个Broadcastreceiver,收到Bootcomplete消息后start你的server
1、改变/dev/input/eventX的读写权限 2、jni写一个so,用select或者epoll来监听input事件,可以用inotify实现 3、app调用jni接口就可以了
|