Android系统--输入系统(十五)实战_使用GlobalKey一键启动程序
2017-08-01 17:33
274 查看
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, 才能复制,故执行如下命令,再进行复制操作
su mount -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 重启开发板,并装载模拟驱动
reboot insmod /data/local/InputEmulator.ko
2.3.6 模拟上报按键,APP被唤醒
sendevent /dev/input/event5 1 377 1 sendevent /dev/input/event5 1 377 0 sendevent /dev/input/event5 0 0 0
2.3 不使用驱动而使用以下命令模拟按键,可以唤醒APP
input keyevent TV
3. 总结
本次博文主要实现一键启动APP过程,如果需要真实按键,则需要自己编写一个按键驱动程序。下次博文将对APP跟输入系统建立联系的过程进行具体分析。相关文章推荐
- Android系统Recovery工作原理之使用update.zip升级过程分析(八)---升级程序update_binary的执行过程
- 使用Android系统隐藏api 读取*.apk 程序安装包信息
- Android系统Recovery工作原理之使用update.zip升级过程分析(八)---升级程序update_binary的执行过程
- Android核心分析之十五Android输入系统之输入路径详解
- Android程序:使用系统服务*1.获取网络状态 * 2.打开关闭wifi * 3.获取系统音量 * 4.获取运行程序的包名
- 问题阐述: 本人使用mini6410开发了一个sqlite数据库的程序,在mini6410的linux系统下已经能够成功运行了。因为Android使用的也是linux内核,所以我想当然的认为按照同样
- android程序中查看系统内存使用情况
- 【Android程序优化,避免内存泄露】- [实战一]:避免内存泄露的最后一道墙,使用leakcanary分析程序中的内存泄露。
- Android使用webview调用系统浏览器以及项目内显示并支持图片和输入
- Android系统中自带了很多图标,我们的程序可以方便使用。
- Android系统使用global key 一键启动指定APP或者打开WiFi/蓝牙等系统设置界面
- 使用Android系统隐藏api 读取*.apk 程序安装包信息[转]
- 【Android程序优化,避免内存泄露】- [实战一]:避免内存泄露的最后一道墙,使用leakcanary分析程序中的内存泄露。
- 3.第三单元任务二实训:使用作业提交系统提交Java作业时 ,需要输入Java源代码文件名和自己的邮箱,提交前对Java文件名以及邮箱进行有效检查。编写程序实现对输入的Java源文件名以及邮箱有效性的
- android使用系统程序打电话发短信
- Android使用系统调用相册的时候打开了云相册出现CRASH或者找不到截图程序的解决方案
- Android系统Recovery工作原理之使用update.zip升级过程分析(八)---升级程序update_binary的执行过程
- [Unity]Android(安卓)代码安卓APK时,使用系统安装器安装的[最正确]办法(不弹出选择打开的程序)
- android 开发之 使用Android系统隐藏api 读取*.apk 程序安装包信息
- android 使用系统照相程序照相并存储、显示在界面上