zoukankan      html  css  js  c++  java
  • 10.8 android输入系统_实战_使用GlobalKey一键启动程序

    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

  • 相关阅读:
    使用mybatis插入自增主键ID的数据后返回自增的ID
    CentOS 配置阿里云 yum 源
    Zabbix监控ActiveMQ
    wget下载阿里云oss的文件报错403
    Zabbix-proxy和Zabbix-agent源码安装
    Zabbix 设置自动添加主机两种方法(自动注册、自动发现)
    Zabbix邮件预警-这个坑我跳了不止一次
    AWS云创建EC2与使用注意事项-踩坑记录
    Zabbix图表中文乱码(包含Docker安装乱码)
    Zabbix server 更改数据库密码
  • 原文地址:https://www.cnblogs.com/liusiluandzhangkun/p/9165067.html
Copyright © 2011-2022 走看看