全屏手写输入的笔迹获取
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
全屏手写输入的笔迹获取相关推荐
- 极域脱控破解分析+代码实现(杀死和重启,挂起和恢复,解除全屏按钮限制,获取极域安装路径,极域密码破解)
免责声明:以下内容仅供学习使用 本文的工具成品下载见githubmythwarehelper仓库,附加资源也在内 已完成功能:杀死极域,获取极域安装路径,从注册表破解极域密码,重启极域,挂起极域,恢复 ...
- Android全屏绘制
这个是为实现全屏手写输入准备的. Android平台自身提供了一个底层的显示接口-FLINGER服务,通过这个接口,我们可以实现创建一个新的显示区域来绘制想要的显示内容,并和原有的屏幕输出混合输出到屏 ...
- MFC对话框动态刷新图片(仿照全屏屏保)
最近做MFC对话框工程 用到全屏刷新图片的功能,由于功能实现比较简单,便使用CImage类配合定时器制作,下面贴上实现方式: 增加消息响应事件: //在对话框属性的消息中 添加WM_PAINT与WM_ ...
- 苹果cmsV10添加全屏幻灯图、全屏轮播图教程
使用全屏模板的小伙伴们很多都不会把首页的幻灯图片设置成全屏显示,今天就给大家讲解下幻灯图片全屏的设置教程. 1,设置全屏有2种途径:A是直接上传全屏的图片,B是通过苹果cms系统后台编辑视频的&quo ...
- html实现点击图片全屏显示,用vue实现点击图片预览浏览器满屏大图
前提 安装插件 npm install vue-directive-image-previewer -D 引入插件 import VueDirectiveImagePreviewer from 'vu ...
- Android全屏显示
Android全屏显示 一.获取状态栏和导航条的高度: 1. 获取状态栏的高度: public int getStatusBarHeight() {Resources resources = mAct ...
- 【3D商城】鼠标滚动控制全屏切换
[3D商城]鼠标滚动控制全屏切换 ajax请求获取服务器数据 设置加载loading组件 产品列表和场景列表的编写 监听鼠标滚动事件 列表标签中显示设置隐藏属性 头部标签中显示设置隐藏属性 结果 aj ...
- UNITY设置屏幕全屏但是周围有黑框的解决方法
有个项目之前设置全屏的方法是: //获取设置当前屏幕分辩率 Resolution[] resolutions = Screen.resolutions; //设置当前分辨率 Screen.SetRes ...
- jquery实现全屏
主要用到两个方法 调用各个浏览器提供的全屏方法 function handleFullScreen() {var de = document.documentElement;if (de.reques ...
最新文章
- .Net Core 项目引用本地类库方式(二)
- python 利用pyinstaller 编译.exe文件过程中编写完的.exe文件执行过程中闪退
- webstorm激活+汉化教程
- java用for语句实现菱形_编写Java程序,应用for循环打印菱形、三角形
- python控制语句_Python流程控制语句
- ASP.NET Gridview的简单的Bootstrap分页
- python 通达信公式函数,python通达信公式函数,python调用通达信数据
- 前端实现序列帧_最简单的序列帧动画canvas插件
- 装office2010时,装了msxml6仍提示要装msxml6
- 带你Dart带你Diao之类(一)
- 服务器美国视频网站吗,美国服务器可以做视频网站吗
- python量化选股策略 源码_【一点资讯】Python实现行业轮动量化选股【附完整源码】...
- excel 简单制作数据透视表
- 内部类与外部类之间的访问
- matlab实现nc文件批量转tif文件
- 记忆圆周率前二十位(耳机向)
- 凯文·米特尼克被称为世界上“头号电脑黑客”(百度搜索)
- java gis 矢量数据结构_地理信息系统矢量数据结构.ppt
- 解决windows10右下脚工具栏图标显示不正常问题
- 网络编程 网络地址点分十进制和二进制之间的转换
热门文章
- Thinkpad T580 更换固态NVME 2242接口硬盘迁移系统
- 苹果5壁纸_iOS 13 愿望清单,这些反类人操作苹果要改改了!
- python123中棋盘放米的故事_小学数学故事:棋盘上的麦粒问题
- 行人闯红灯自动识别抓拍系统解决方案
- C# 设置Excel数据自适应行高、列宽的2种情况
- HTML5 video 进入全屏和退出全屏 兼容iframe
- golang测试框架 GoConvey使用总结
- 【Web】Web内容可访问性指南 1.0
- 【职业规划】了解自己~
- [CNN]|CNN与Transformer区别