zoukankan      html  css  js  c++  java
  • Android系统--输入系统(五)输入系统框架

    Android系统--输入系统(五)输入系统框架

    1. Android设备使用场景:

    假设一个Android平板,APP功能、系统功能(开机关机、调节音量)、外接设备功能(键盘、触摸屏、USB外接键盘/鼠标)。

    2. 引入输入系统:

    (1)触摸屏控制APP (2)外接设备控制系统功能

    3. 输入系统三部分

    • 读取事件

    • 分发事件

    • 处理事件

    4. 读取事件分析

    4.1 读取支持功能
    • 支持多设备

      • GPIO键盘

      • 遥控器

      • 外接USB键盘鼠标

      • 触摸屏

    • 即插即用:可以随时接入或者拨出

    • 支持多语言(映射):同一个同一按键,可能得出不同结果(针对不同国家)

    4.2 读取实现
    • Linux驱动

      • GPIO键盘,生成设备节点(/dev/input/event0)

      • 遥控器,生成设备节点(/dev/input/event1)

    • 应用处理

      • open/read 设备节点 /dev/input/event

      • 检测有无数据

      • 检测设备的拔插

      • 处理(映射)

    5. 分发事件分析

    5.1 分发支持功能
    • 分辨事件

      • 按键(SystemKey:音量键、电源键;GlobaKey:特殊键;UserKey:发给APP)

      • 触摸屏(virtualKey、手势->转化)

    • 发送事件

      • 找出当前APP

      • 发送给APP(源代码分析)

    6. 处理事件分析

    6.1 处理事件流程分析
    • 点击:执行某些函数

    • 输入框

      • 启动输入框

      • 显示文字

    7. 输入系统代码框架

    7.1 输入系统代码框架图

    7.2 输入系统框架说明

    核心:进程间通信(socketpair机制)

    • Reader线程不断循环从设备节点读取数据

    • 映射

    • 发送给InputDispatcher线程

    • 通过windowManagerService确定输入事件

    • 将确定的输入事件需要发送APP

    • APP响应

  • 相关阅读:
    C#中的编译为什么不叫Compile而叫build
    类型(Type)
    C#中关于值类型和引用类型的区别
    php通用化api格式输出
    tp6获取参数的五种办法
    PHP 数组------分割、合并
    explain结果中的type字段的含义
    order by 排序
    SQL开发技巧
    tp5模板输出日期时间
  • 原文地址:https://www.cnblogs.com/lkq1220/p/6719964.html
Copyright © 2011-2022 走看看