Android系统中,目前没有一个接口可以让应用随时获取Touch事件,而这个功能恰恰是全屏手写中很重要的一个部分。 手写输入的实现主要分为3个部分:

1、笔画的获取

2、笔画的绘制

3、笔画的识别

在以往broncho项目中,根据平时的交流和对WM的粗略接触,以往全屏手写的笔画获取都是在WM里处理来实现笔画数据获取的。这一次在android系统上实现全屏手写,稍微改变了一下思路:

1、WM提供一个touch事件发送接口,让应用可以注册一个touch事件监听。事件监听函数返回true,WM不再处理这个事件,返回false,WM继续分发这个事件。

2、WM提供一个touch事件发送接口,让应用可以模拟发送touch事件。

3、修改WM事件分发函数,在分发touch事件到应用前,先调用事件监听函数。发送touch事件的接口可以直接调用WM的接口。

4、WM就做了这些修改,笔画的获取处理放到了全屏手写输入法中。

根据今天(2009年6月26日)在硬件上的调试结果,这个思路还是灵活的,对笔画事件获取的处理不再需要修改WM,直接修改全屏手写应用,然后安装即可。

目前的测试结果是笔画的获取还有不足,如多余的MOVE事件没有过滤(多余的MOVE事件就是没有收到DOWN事件时收到了MOVE事件);在模拟器上鼠标点击和实际手指触碰是完全不同的处理的,导致无法点击按钮。

修改的文件和要点:

添加和实现两个接口

void setGlobalPointerEventListener(IWindow window);
boolean injectGlobalPointerEvent(in MotionEvent event, boolean             sync);

frameworks/base/core/java/android/view/IWindowSession.aidl

frameworks/base/services/java/com/android/server/WindowManagerService.java

添加接口

boolean dispatchGlobalPointer(in MotionEvent event, long                   eventTime);
frameworks/base/core/java/android/view/IWindow.aidl

添加接口引用
frameworks/base/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java

修改接口实现
frameworks/base/core/java/android/view/ViewRoot.java
frameworks/base/core/java/android/view/SurfaceView.java

全屏手写输入的笔迹获取相关推荐

  1. 极域脱控破解分析+代码实现(杀死和重启,挂起和恢复,解除全屏按钮限制,获取极域安装路径,极域密码破解)

    免责声明:以下内容仅供学习使用 本文的工具成品下载见githubmythwarehelper仓库,附加资源也在内 已完成功能:杀死极域,获取极域安装路径,从注册表破解极域密码,重启极域,挂起极域,恢复 ...

  2. Android全屏绘制

    这个是为实现全屏手写输入准备的. Android平台自身提供了一个底层的显示接口-FLINGER服务,通过这个接口,我们可以实现创建一个新的显示区域来绘制想要的显示内容,并和原有的屏幕输出混合输出到屏 ...

  3. MFC对话框动态刷新图片(仿照全屏屏保)

    最近做MFC对话框工程 用到全屏刷新图片的功能,由于功能实现比较简单,便使用CImage类配合定时器制作,下面贴上实现方式: 增加消息响应事件: //在对话框属性的消息中 添加WM_PAINT与WM_ ...

  4. 苹果cmsV10添加全屏幻灯图、全屏轮播图教程

    使用全屏模板的小伙伴们很多都不会把首页的幻灯图片设置成全屏显示,今天就给大家讲解下幻灯图片全屏的设置教程. 1,设置全屏有2种途径:A是直接上传全屏的图片,B是通过苹果cms系统后台编辑视频的&quo ...

  5. html实现点击图片全屏显示,用vue实现点击图片预览浏览器满屏大图

    前提 安装插件 npm install vue-directive-image-previewer -D 引入插件 import VueDirectiveImagePreviewer from 'vu ...

  6. Android全屏显示

    Android全屏显示 一.获取状态栏和导航条的高度: 1. 获取状态栏的高度: public int getStatusBarHeight() {Resources resources = mAct ...

  7. 【3D商城】鼠标滚动控制全屏切换

    [3D商城]鼠标滚动控制全屏切换 ajax请求获取服务器数据 设置加载loading组件 产品列表和场景列表的编写 监听鼠标滚动事件 列表标签中显示设置隐藏属性 头部标签中显示设置隐藏属性 结果 aj ...

  8. UNITY设置屏幕全屏但是周围有黑框的解决方法

    有个项目之前设置全屏的方法是: //获取设置当前屏幕分辩率 Resolution[] resolutions = Screen.resolutions; //设置当前分辨率 Screen.SetRes ...

  9. jquery实现全屏

    主要用到两个方法 调用各个浏览器提供的全屏方法 function handleFullScreen() {var de = document.documentElement;if (de.reques ...

最新文章

  1. 方舟自建服务器物品叠加mod,10000倍物品叠加 -90%负重 V280
  2. C# 中SqlParameter类的使用方法小结
  3. 使用redis缓存加索引处理数据库百万级并发
  4. python 菜鸟入门
  5. 判断闰年 php,PHP怎么判断一年是否为闰年?
  6. MySQL通过接口导入hive_利用Sqoop将MySQL数据导入Hive中
  7. Java数据结构:数组模拟的队列(Queue)和环形队列(Circle Queue)
  8. Linux应急响应篇
  9. Java数组排序的方法
  10. 【游戏开发实战】Unity调用谷歌Google免费翻译API(https接口),年轻人不讲武德,用多个国家语言怎么讲
  11. 圆锥曲线解答题实用结论
  12. MiniDP与HDMI的关系
  13. 视频直播时连麦功能使用说明
  14. 『YQOI2019』失昼城的守星使 题解
  15. in memory computing 存内计算是学术圈自娱自乐还是真有价值?
  16. 猴年马月,猴年来了,马月呢?
  17. spring中的hibernate-validate数据校验
  18. Solaris培训第二章:OpenBoot PROM(转)
  19. 基于NSGA2算法的多AGV柔性车间调度多目标优化【附python源码】
  20. 中国商业油库及码头行业运行动态分析及投资规划建议研究报告2022年版

热门文章

  1. Windows7如何隐藏文件与查看隐藏文件
  2. NodeList和HTMLCollection的区别
  3. 图像压缩编码码matlab实现——JSjpeg
  4. 银行面试着装攻略分享(二)银行着装要点归纳
  5. 移动机器人嵌入式系统详细篇
  6. 开封机器人餐厅_开封食品分拣机器人
  7. 基于工业路由器的工业机器人远程监控系统方案应用
  8. 使用CSS实现低保真图文本
  9. STM32平衡车之陀螺仪MPU6050
  10. 粮食储备库电力配电监控系统的设计与应用