Android系统--输入系统(十五)实战_使用GlobalKey一键启动程序
来源:互联网 发布:软件研发类期刊 编辑:程序博客网 时间:2024/05/17 07:05
Android系统--输入系统(十五)实战_使用GlobalKey一键启动程序
1. 一键启动的过程
1.1 对于global key, 系统会根据global_keys.xml发送消息给某个组件
<key keyCode="KEYCODE_TV" component="com.thisway.app_0001_leddemo/.MyBroadcastReceiver" />
1.2 APP应该注册广播消息的接收者
1.2.1 编写BroadcastReceiver派生类, 实现消息处理函数
package com.thisway.app_0001_leddemo;//注意包名,可以是自己的报名,但是后面的实验当中的操作需要根据包名修改import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.widget.Toast;/*** Created by alienware on 2017/5/12.*/public class MyBroadcastReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "myReceiver receive", Toast.LENGTH_SHORT).show(); Intent intentNewTask=new Intent(context,MainActivity.class); intentNewTask.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intentNewTask); }}
1.2.2 注册派生类: 修改 AndroidManifest.xml,添加下列代码,实现静态注册
<receiver android:name=".MyBroadcastReceiver"> <intent-filter> <action android:name="android.intent.action.GLOBAL_BUTTON"/> </intent-filter></receiver>
1.3 然后在该组件中启动app
2. 具体操作流程
2.1 手工发广播
将编写好的安卓应用程序下载到Tiny4412开发板后,关闭该应用程序进程,在串口终端执行如下命令,程序被唤醒。
am broadcast -a android.intent.action.GLOBAL_BUTTON -n com.thisway.app_0001_leddemo/.MyBroadcastReceiver
2.2 用按键触发
2.2.1 修改 /work/android-5.0.2/frameworks/base/core/res/res/xml/global_keys.xml,在该文件添加如下代码
添加:<key keyCode="KEYCODE_TV" component="com.thisway.app_0001_leddemo/.MyBroadcastReceiver" />
2.2.2 在Ubuntu下编译AndroidSDK,执行如下命令,生成 framework-res.apk ( out/target/product/tiny4412/system/framework/framework-res.apk)
mmm frameworks/base/core/res
2.2.3 把生成的framework-res.apk通过adb push放到单板目录上/system/framework/;注明:先以rw方式remount /system, 才能复制,故执行如下命令,再进行复制操作
sumount -o remount,rw /system
2.2.4 修改驱动程序对应的kl文件(对于TV键不需要修改, scancode 377就对应TV键),执行下列操作
cp /system/usr/keylayout/Generic.kl /data/system/devices/keylayout/mv Generic.kl InputEmulatorFromLKQ_net.kl
2.3.5 重启开发板,并装载模拟驱动
rebootinsmod /data/local/InputEmulator.ko
2.3.6 模拟上报按键,APP被唤醒
sendevent /dev/input/event5 1 377 1sendevent /dev/input/event5 1 377 0sendevent /dev/input/event5 0 0 0
2.3 不使用驱动而使用以下命令模拟按键,可以唤醒APP
input keyevent TV
3. 总结
本次博文主要实现一键启动APP过程,如果需要真实按键,则需要自己编写一个按键驱动程序。下次博文将对APP跟输入系统建立联系的过程进行具体分析。
阅读全文
0 0
- Android系统--输入系统(十五)实战_使用GlobalKey一键启动程序
- Android输入系统(一)
- JavaEE项目实战(OA系统)之十五_员工管理之四
- Android 输入系统(一)InputManagerService
- QT_PC实战常见问题_系统美化(使用样式表)
- 在Mer系统中启动Android系统(一)
- Android输入系统实例简单实现之一键启动应用程序
- Android系统--输入系统(十七)Dispatcher线程_分发dispatch
- Android系统--输入系统(十七)Dispatcher线程_分发dispatch
- 一、Android系统源码下载实战
- Android系统使用global key 一键启动指定APP或者打开WiFi/蓝牙等系统设置界面
- android 系统级的开机启动程序
- android (一)、SystemServer与系统服务启动
- 一、Android启动分析---初始化log系统
- cocos2dx消息系统项目实战(一)
- 用户日志分析系统实战(一)
- JavaEE项目实战(OA系统)之一_软件需求
- Android实战_限制EditText 文本输入
- HDU 2444 The Accomodation of Students 二分匹配
- 常用linux 命令
- 二维数组的查找
- java内省机制
- 002_javaScript中事件的冒泡(Bubble)
- Android系统--输入系统(十五)实战_使用GlobalKey一键启动程序
- 二叉搜索树转化为排序双向链表。可以使用中序线索化的方法去进行,在这里需要注意的是我们需要一个记录前一个访问节点的结点。 二叉搜索树转换前: 转换后: 思路:如果根节点的左子树存在,则一直去访
- KRPano
- LeetCode——122. Best Time to Buy and Sell Stock II
- 2n皇后问题
- win7环境下查询端口号占用及杀进程
- SPRING BOOT+WEBMAGIC
- Lua中的元表与元方法学习总结
- Harvesting the Low-hanging Fruits: Defending Against Automated Large-Scale Cyber-Intrusions by Focus