11. 实战_使用GlobalKey一键启动程序
参考文章:
Android 两种注册(动态注册和静态注册)、发送广播的区别
http://www.jianshu.com/p/ea5e233d9f43

【Android】动态注册广播接收器
http://blog.csdn.net/etzmico/article/details/7317528

Android初学习 - 在BroadcastReceiver中启动Activity的问题
http://blog.csdn.net/cnmilan/article/details/50617802

a. 对于global key, 系统会根据global_keys.xml发送消息给某个组件
<key keyCode="KEYCODE_TV" component="com.thisway.app_0001_leddemo/.MyBroadcastReceiver" />

修改 /work/android-5.0.2/frameworks/base/core/res/res/xml/global_keys.xml

编译:
mmm frameworks/base/core/res
它会生成 framework-res.apk, 复制到单板/system/framework/

b. APP应该注册广播消息的接收者
b.1 编写BroadcastReceiver派生类, 实现消息处理函数

MyBroadcaseReceiver.java

import android.content.BroadcastReciver;

import android.content.Context;

import android.content.Intent;

import android.widget.Toast;

public class MyBroadcastReceiver extends BroadcastReceiver{

  public void onReceive(Context context,Intent intent){

    Toast.makeText(context,"get BroadcastReceiver",Toast LENGTH_SHORT).show();

    //在BroadcastReceiver中启动Activity

    Intent intentNewTask = new Intent(context,MainActivity.class);

    intentNewTask.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    context.startActivity(intentNewTask),

  }

}
b.2 注册派生类: 修改 AndroidManifest.xml添加

<receiver android:name = ".MyBroadcaseReveiver">

  <intent-filter>

    <action android:name = "android.intent.action.GLOBAL_BUTTON"/>

  </intent-filter>

</receiver>
c. 然后在该组件中启动app

源码下载方法
第一次:
git clone https://github.com/weidongshan/APP_0001_LEDDemo.git

取出v3版本,在它的基础上修改
git checkout v3 // 添加了button, checkbox的点击方法

实验:
a. 手工发广播(可以启动应用程序)
am broadcast -a android.intent.action.GLOBAL_BUTTON -n com.thisway.app_0001_leddemo/.MyBroadcastReceiver

b. 用按键触发
修改 /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" />

编译:
mmm frameworks/base/core/res   //下面的目录都没有Android.mk编译文件
它会生成 framework-res.apk ( out/target/product/tiny4412/system/framework/framework-res.apk)

把framework-res.apk放到单板上:
先以rw方式remount /system, 才能复制://通过cat /proc/mounts发现system是以ro方式挂载的
su
mount -o remount,rw /system

ifconfig eth0 192.168.1.100
busybox mount -t nfs -o nolock,vers=2 192.168.1.123:/work/nfs_root /data/nfs

cp framework-res.apk /system/framework/   ///system/framework/目录下本来也有个framework-res.apk文件,这里就是覆盖源文件的意思

修改驱动程序对应的kl文件(对于TV键不需要修改, scancode 377就对应TV键)
cp /system/usr/keylayout/Generic.kl /data/system/devices/keylayout/InputEmulatorFrom100ask_net.kl

insmod InputEmulator.ko

模拟上报按键:
sendevent /dev/input/event5 1 377 1
sendevent /dev/input/event5 1 377 0
sendevent /dev/input/event5 0 0 0

也可以不使用驱动而使用以下命令模拟按键:
input keyevent TV

源码下载方法
第一次:
git clone https://github.com/weidongshan/APP_0001_LEDDemo.git

取出v9版本
git checkout v9 // add BroadcastReceiver to start itself

10.8 android输入系统_实战_使用GlobalKey一键启动程序的更多相关文章

  1. 10.5 android输入系统_Reader线程_使用EventHub读取事件和核心类及配置文件_实验_分析

    4. Reader线程_使用EventHub读取事件 使用inotify监测/dev/input下文件的创建和删除 使用epoll监测有无数据上报 细节: a.fd1 = inotify_init(& ...

  2. 10.6 android输入系统_Dispatcher线程_总体框架

    图解Android - Android GUI 系统 (5) - Android的Event Input System - 漫天尘沙 - 博客园.htm // 关注里面的Dispatcher处理流程h ...

  3. Android系统--输入系统(十五)实战_使用GlobalKey一键启动程序

    Android系统--输入系统(十五)实战_使用GlobalKey一键启动程序 1. 一键启动的过程 1.1 对于global key, 系统会根据global_keys.xml发送消息给某个组件 & ...

  4. 10.9 android输入系统_APP跟输入系统建立联系和Dispatcher线程_分发dispatch

    12. 输入系统_APP跟输入系统建立联系_InputChannel和Connection核心: socketpair // 第9课第3节_输入系统_必备Linux编程知识_任意进程双向通信(scok ...

  5. 10.4 android输入系统_框架、编写一个万能模拟输入驱动程序、reader/dispatcher线程启动过程源码分析

    1. 输入系统框架 android输入系统官方文档 // 需FQhttp://source.android.com/devices/input/index.html <深入理解Android 卷 ...

  6. 10.7 android输入系统_Dispatcher线程情景分析_Reader线程传递事件和dispatch前处理

    android输入系统C++最上层文件是com_android_serve_input_InputManagerService.cpp global key:按下按键,启动某个APP可以自己指定,修改 ...

  7. 10.11 android输入系统_补充知识_activity_window_decor_view关系

    android里:1个application, 有1个或多个activity(比如支付宝有:首页.财富.口碑.朋友.我的,这些就是activity)1个activity, 有1个window(每个ac ...

  8. 10.12 android输入系统_InputStage理论

    android应用程序对输入系统的处理分为多个阶段,我们把这些阶段称为InputStage 理论处理流程: (1)activity发给window,如果window不能处理,再由activity处理; ...

  9. 10.14 android输入系统_多点触摸驱动测试及Reader线程、InputStage分析

    21. 多点触摸_电容屏驱动程序_实践_tiny4412 tiny4412触摸屏: 分辨率为800 x 480http://wiki.friendlyarm.com/wiki/index.php/LC ...

随机推荐

  1. virtual与override

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. android 图片特效处理之怀旧效果

    图片特效处理系列将介绍图片的像素点的特效处理,这些物资注重的是原理.也就是说只要你知道这些算法不管是C++,VB,C#,Java都可以做出相同的特效.下面将介绍图片怀旧效果的算法.算法如下: 上面公式 ...

  3. Vue的响应原理

    渲染render function之后就是 核心的响应式过程了 Object.defineProperty vue的核心之一就是Object.defineProperty 方法(IE9及其以上) Ob ...

  4. BZOJ 1355 KMP中next数组的应用

    思路: 我们知道 next[i]是失配的i下一步要去哪儿 next[n]就是失配的n要去哪儿 n-next[n]就是答案(即最短周期)啦 //By SiriusRen #include <cst ...

  5. Kinect 开发 —— 显示骨骼用户插件

    public partial class SkeletonViewer : UserControl { private readonly Brush[] _SkeletonBrushes = new ...

  6. BZOJ1814: Ural 1519 Formula 1(插头Dp)

    Description Regardless of the fact, that Vologda could not get rights to hold the Winter Olympic gam ...

  7. api h5 sdk 接入的说明

    api 接入 :纯后台接入没有页面 h5接入: 有页面的接入  需要和客户交互 客户输入内容 sdk 接入:需要对方的sdk文件 植入文件

  8. [Angular] How to get Store state in ngrx Effect

    For example, what you want to do is navgiate from current item to next or previous item. In your com ...

  9. 单位阶跃函数(Heaviside/unit step function)—— 化简分段函数

    注意,单位阶跃函数一种不连续函数. 1. 常见定义 最经典的定义来自于 Ramp function(斜坡函数,max{x,0})的微分形式: H(x)=ddxmax{x,0} 2. 化简分段函数 如对 ...

  10. Linux桌面新彩虹-Fedora 14 炫酷应用新体验

    Linux桌面新彩虹 --Fedora 14 炫酷应用新体验 650) this.width=650;" hspace="12" align="left&quo ...