更多内容,可以查看相关文章:原笔迹手写技术与智能绣花机的第一次亲密接触
以下是原笔迹手写控件在绣花机上的实例应用,实例中的手写效果没有使用压感屏,如果配合电磁屏的平板设备,效果会更好。
分类: 软件开发
本人的软件开发相关的项目、知识笔记
Android 9.0 系统开发要注意的事项
如果说 5.1 到 7.1 是一道小坎。那 7.1 到 9.0 就是一道大坑,有很多需要注意的问题,下面简单记录一下。
1. 编译
编译工具链需要使用 64 位的,NDK, JDK 需要使用 64 位的,前期的 buildroot 集成的那些工具,也要更新为新的 64 位的,不然会出现各种奇怪的编译问题。
还有就是新的编译框架 NINJA。
之前有提过,7.1 有启用过 jack,但是现在 9.0 上已经完全看不到 jack 了。
8.0 开始,Android 引入了 Android.bp 来代替之前的 Android.mk。而 Android.mk 也同时支持,但是相信以后的版本,mk将会慢慢消失(所以我们要开始学习 bp 文件的编写,bp 文件的编写,会更加简单和明了)。
我们需要大概知道,编译系统会通过 soong 将 Android.bp 转化成 ninja 文件;所有的 makefile(mk文件)也会转化成 ninja 文件,然后两个 ninja 文件合并成一个文件,最终的编译,就是依赖这个 ninja 文件。
至于编译系统ninja,简单来说,就是一个专注编译速度的编译系统,更多资料可以参考 https://ninja-build.org/
原笔迹手写SVG绘图算法的改善
最近折腾了一下SVG,对SVG绘图的效果做了重大的改善,效果可以媲美之前的分段画点算法,这个是一个很鼓舞的成果,SVG绘图的优点很多,例如绘图手指跟随效果很流畅,同时生成文件更小,更重要的是浏览器原生支持SVG,这样客户可以很方便的把SVG数据应用到网络应用,以及同步书写的应用。
后面有空的话,要把这个算法移植到 iOS。
好了,不多说,看效果图:
那,下一步应该是什么呢?
集成手写控件到 mupdf?手写控件javascript 版本?手写识别功能?
路漫漫其修远兮~~~
重大进展!iOS 原笔迹手写控件,压感,笔锋不可少!
之前在手写的合作项目中,有不少客户需要一并开发 iOS 的手写应用。
但是 iOS 手写控件一直是空白的,原因很多:
1是自己对 iOS 开发并不熟悉,
2是 iOS 开发上手也需要额外大量的空余时间,
3是 iOS 开发的门槛也是不低,iOS 开发 mbp 费用不低,还需要 iPhone 或者 iPad,甚至 apple pencil,这一套下来,费用不菲。
随着最近国家二胎政策的全面放开,以及电子教育、电子课堂的复兴,手写需求貌似越来越多,Kevin 最近的手写业务也是不少,最近好不容易挤出一点业余时间,来好好学习 iOS 开发,并实现 iOS 端的手写控件。
开发语言选择了新兴的 iOS 开发语言 swift,开发设备选择了 mbp pro 2018,而测试设备这个 iPhone 7,以及 ipad air。
凭着一定的移动开发经验,以及对手写的原理的深入掌握,从0开始,学习 swift,开发测试 demo,最终实现了 iOS 端的手写控件,而且初步效果很不错,后期将会继续完善 api 以及文档,以及相关功能。
如果客户有 iOS 端的需求,也完全可以满足客户的需求了。
测试设备使用的是 iPhone 7,因为还没有购置 iPad 以及 apple pencil,所以图示的压感效果是用速度算法计算出的压感,这样的效果已经很好了。相信后面有 apple pencil 的效果会更上一层楼。
效果图:
原笔迹手写技术与智能绣花机的第一次亲密接触
0. 前言
是的,之前一直没有想象过原笔迹手写技术可以应用在绣花机上,更多的只是在教育行业有合作的需求。
直到客户提出需求,才恍然大悟,试想将自己酷炫的签名秀在自己的鸭舌帽上,将自己得意的书法作品秀在绸缎上,将孩子萌萌达的涂鸦秀在家庭亲子装上,等等,这是何等提升幸福感的事情啊!
1. 需求
- 原笔迹手写,支持电磁屏/主动电容屏压感以及笔锋;普通电容屏的的压感以及笔锋
- 生成笔迹svg,绣花机通过生成的svg来进行刺绣
- 生成笔迹png,激光绣花级通过生成的png来进行刺绣
- 其他
2. 技术实现
通过在平板上书写,绘制,能很好的还原原笔迹,压感,笔锋,平滑,优美。原笔迹手写技术已经比较成熟,实现效果如下:
唯一的问题就是svg的需求。之前生成的svg不符合客户的需求,绣花机需要的是不是一条贝塞尔曲线,而是形成笔迹的两条贝塞尔曲线,然后根据这两条塞尔曲线进行刺绣。
技术上有一定的难度,但是因为之前已经有过相当长的一段时间的研究,所有实现也并不是太难。svg文件的效果可以很好地满足客户的需求。
svg文件生成效果如下:
3. 视频实例
最终期望效果~~~
4. 展望
相信随着智能手机,平板的普及,原笔迹手写在消费行业定会大有所为,同时也会在工业行业找到更多展现自己价值的机会。
水一下~~~涂鸦作品
Android dm-verity 实现原理深入研究
前言:这篇文章是 Kevin 的原创作品,如有相关疑问,可以留言交流。
思维导图:
说明:源码基于 SC20 平台 Android5.1
Android dm-verify overview
目录
Android dm-verify overview.. 1
一、原理… 1
与Verified Boot关系… 1
dm-verity. 1
作用分区… 2
二、模块结构… 2
1.签名… 2
生成OEM自己的密钥对… 4
验签… 5
用户空间,android 部分… 5
内核空间… 5
三、如何启用… 5
四、测试… 6
测试样例1. 无法 remount, 无法 push 文件… 6
测试样例2. 6
五、存在风险… 6
物理块出现坏块… 6
六、其他… 6
七、参考文档… 6
一、原理
Verified Boot 是 Android 4.4 开始引入的一个新特性,配合可选的 dm-verify 功能,可以检测系统是否被篡改,以此保存系统的完整性。
dm-verity 基于kernel 的 Device mapper 框架,Device mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机制下,用户可以很方便的根据自己的需要制定实现存储资源的管理策略。关于 Device mapper,可以参考此文献
https://www.ibm.com/developerworks/cn/linux/l-devmapper/
dm-verity 用一个 hash 树来描述整个 system 镜像。这种机制允许 system 分区在读写的时候进行校验,而不是一次性将整个 system 镜像进行校验。当校验 hash 值不一致的时候,返回 IO 错误
框架示意图:
Android 启动“无启动图标的 apk“
在 Android 开发以及测试中,经常遇到需要启动一个没有启动图标的apk,这个时候可以使用 pm 以及 am 命令来配合,启动相应apk。
主流程:
- pm 获取apk包名
- pm 获取apk详细配置信息,主要是相应启动 Activity 的类的路径
- am 启动相应 Activity 的类
简单实践:
- pm 获取apk包名
连接 adb 后,输入
shell@rk3368_32:/ $ pm list packages
输出
... package:com.android.captiveportallogin package:android.rk.RockVideoPlayer
得到相应的包名为 android.rk.RockVideoPlayer
2. pm 获取apk详细配置信息,主要是相应启动 Activity 的类的路径
输入
pm dump android.rk.RockVideoPlayer
输出
... Non-Data Actions: android.intent.action.MAIN: 3d093a3c android.rk.RockVideoPlayer/.RockVideoPlayer android.intent.action.VIEW: 26ecb42f android.rk.RockVideoPlayer/.VideoPlayActivity
得到相应启动 Activity 的类的路径为 android.rk.RockVideoPlayer/.RockVideoPlayer
3. am 启动 Activity 类的路径
输入
am start -n android.rk.RockVideoPlayer/.RockVideoPlayer
即可启动相应 Activity。
掌握这个方法后,可以方便以后的自动化测试。
速度补偿压感效果的改善
在纸质笔记本上书写的时候,会随着书写速度的快慢,钢笔笔迹会相应变细或者变粗,这样的笔迹更加动感,优美。终于,手写控件也实现了这个效果。在普通触摸屏上能实现这样的效果,的确不错。
图1:
图2
Android 原笔迹手写实现普通触摸屏的压感笔锋效果
Android 要实现原笔迹手写的压感,笔锋,必须要配合更好的压感触摸屏,例如电磁屏。三星的 note 系统,微软的 surface 系列,都是需要加装电磁屏的。E人E本,好记星的平板,有电磁屏的加成,也能很好的实现压感笔锋的效果,而且效果并不比三星微软的差。
如果没有电磁屏,也可以依靠最近兴起的主动电容屏来实现压感笔锋的效果,但是效果略差。
如果连主动电容屏也没有,那就是普通的电容屏,这样一般只能实现没有压感笔锋的效果,只能勉强用用,无法体会平板手写的优雅~~~
之前,手写控件也受限于此,无法实现普通电容屏的压感笔锋效果,效果如下:
幸好,现在我的手写控件已经克服这个问题,通过算法实现了普通电容屏的压感笔锋效果,而且整体效果也很好。
看图: