玩转小米手环 8 的第三方表盘
前言(一些废话) #
小米手环8是我购买的第一个款智能穿戴设备。之前我因为总是有着“我每天需要充电的玩意已经够多了”的想法所以迟迟没有购买智能穿戴设备,后来在同事的推荐下入手了小米手环8,在不开AOD并且关闭了一些没必要的功能的情况下,大概只需要每周充电一次,并且半个小时左右就能充满,摆脱了我之前对智能穿戴设备的偏见。
作为一名资深搞机佬,我自然会想到这玩意是否也有搞机空间。幸运的是,小米手环8有很多爱好者制作的第三方表盘,遗憾的是前辈小米手环7和后辈小米手环8 Pro以及小米手环9的可玩性都比它更高。。。
如何安装第三方表盘? #
首先要明确一点:小米官方的app“小米运动健康”是肯定不会允许用户安装非官方表盘的,因此只能借助第三方工具来实现。
表盘自定义工具 #
表盘自定义工具 是由米坛的开发者团队开发的工具。其中包含了很多国内爱好者上传的第三方表盘。
该工具安装第三方表盘是采用替换法来实现的,简单来说,在“小米运动健康”中下载并安装官方表盘商店的表盘时,会暂时将表盘下载到 /sdcard/Android/data/com.mi.health/files/WatchFace
的某个位置,而表盘自定义工具会在官方表盘下载完成后不停地用第三方表盘文件替换掉官方表盘文件,从而骗过“小米运动健康”app。
很明显,该方法有两个明显的缺点:
- 需要依赖官方的“小米运动健康”app,操作略显复杂,并且实现方式不够优雅且有点危险。
- 高版本的Android系统已不再允许app随意访问
/sdcard/Android/data
目录,需要借助Shizuku授权才可以,略显麻烦。
表盘自定义工具同时也支持蓝牙一键安装,即利用授权密钥直接与手环进行蓝牙通讯。不过你需要注册一个账号,然后赞助10元。。。
Notify for Xiaomi #
Notify for Xiaomi 是由国外开发者开发的手环工具,功能较为丰富,可以当作“小米运动健康”的替代品,其中包含的第三方表盘多以国外爱好者制作的为主。
相比于“表盘自定义工具”,Notify for Xiaomi安装第三方表盘的方式更加优雅,不需要依赖“小米运动健康”app,并且实现方式与官方基本上是一致的,我推荐通过这种方式安装第三方表盘。
表盘安装失败?
或许你应该先在手环上删除掉与你要安装的第三方表盘文件ID冲突的表盘,如果你不想删,你可以手动修改一下第三方表盘文件的ID(通过十六进制编辑器修改文件头部,很简单)。
槽点也是有的,如果不花钱买专业版的话广告会有点多。
需要注意的是,为避免冲突,使用Notify for Xiaomi时请确保“小米运动健康”app未在后台运行。
Authorization Key?
为了实现Notify for Xiaomi与手环间的通讯,你需要在首次使用时填写一个授权密钥。
要获取这个密钥有两种方式:
- 利用“表盘自定义工具”,从“小米运动健康”的调试日志中自动提取(方便,推荐)。
- 按照Notify for Xiaomi的提示登录你的小米账号,然后自动获取(可能不安全)。
如何制作第三方表盘? #
表盘自定义工具 #
“表盘自定义工具”内置了自定义表盘制作工具,你可以选择一个官方表盘为模板,然后替换图片资源、坐标等信息来做出自己喜欢的表盘。
优点:
- 在手机上即可完成制作,不需要电脑,适合学生党和小白用户。
- 相比于EasyFace(之后会介绍),它支持制作可编辑表盘,
支持在数字组件后追加单位符号。
缺点:
- 在手机上制作不如在电脑上制作方便,用户难免需要在手机和电脑之间来回传输素材。
- 只能用app提供的模板,不能自己添加或删除组件,略显死板。
EasyFace #
EasyFace 是由国外开发者m0tral制作的第三方表盘制作工具,运行在Windows平台。
关于EasyFace的汉化版资源、详细的使用方法、以及使用过程中需要注意的要点,请看米坛的 这个帖子,这里就不再赘述了。
需要注意的是,由EasyFace编译生成的表盘文件,其ID都是 167210065
,很遗憾我在EasyFace软件中找不到修改的地方,因此想修改的话只能十六进制编辑生成的表盘文件头了。
优点:
- 开发方便,你可以在电脑上一边设计表盘一边在Photoshop中处理素材。
- 可以自由地添加或删除组件。
缺点:
- 对小白用户来说略显专业。
- 不支持制作可编辑表盘,
不支持在数字组件后追加单位符号。
简单一句话:EasyFace的优缺点,恰巧是“表盘自定义工具”的优缺点的反面。
EasyFace如何实现在电量百分比后边添加百分号?
首先考虑一下为什么会有这样的需求。
电量百分比数字可能是一位数、两位数或三位数,也有可能是靠左对齐或者居中,此时电量百分比数字的最后一位数的位置是不确定的。我们的目标是让百分号始终显示在电量百分比数字的后面,而不是显示在画面中的固定位置(如果电量百分比数字元素是靠右侧对齐的,或者电量百分比数字元素没有开启高位消隐的话,那么将百分号固定在某一位置是没问题的)。
EasyFace从v4.9版本开始支持在数字组件后追加单位符号,这样就可以满足上述我们的需求了。不过使用方式有些隐晦,在GitHub页面的wiki文档里也没有提及。
具体的实现方法为:新建一个图片元素,放在任意位置,然后修改其名称,加上后缀
_ref[数字元素的名字]
。图片素材的尺寸并不需要与数字组件的图片素材相同。
EasyFace的替代品?
Mi Create 是由另一位开发者制作的第三方表盘制作工具,同时支持Windows平台和Linux平台,并且是开源的(但是表盘编译器仍然是用的EasyFace的,它并不开源)。
WatchfacePackToolMi8 #
WatchfacePackToolMi8 是米坛用户GiveMeFive制作的适用于小米手环8的PC端表盘打包工具,可以看作是将“表盘自定义工具”里的表盘编译器独立出来的版本。
帖子里附有教程,以及大量用于“照葫芦画瓢”的“葫芦”。
WatchfacePackToolMi8不仅能制作可编辑表盘,甚至还可以制作小程序表盘,当然JavaScript肯定得你自己敲了。
需要注意的是,WatchfacePackToolMi8只是一个编译器,并不能帮助你设计表盘,工程目录中的 image
文件夹包含了表盘界面的素材,image_aod
文件夹包含了表盘AOD界面的素材,而详细的配置则是在 wfDef.json
文件中,虽然json具有可读性,但不能像前面提到的工具那样实现“所见即所得”。
优点:
- 功能强大,支持制作可编辑表盘、小程序表盘。
缺点:
- 只能用来编译,不能用于设计。
生成的可编辑表盘不能编辑?
编辑
wfDef.json
,将id
的值更改为某个支持编辑的官方表盘(如:鹅1、鹅2)的ID。小程序表盘同理。
其他一些实用工具 #
UnpackMiColorFace #
UnpackMiColorFace 是由EasyFace的开发者m0tral制作的表盘文件解包工具,支持从表盘文件中提取素材资源,甚至可以直接生成可以被EasyFace打开的工程目录。
需要注意的是,该项目仓库只有源代码,并没有编译好的可以直接用的exe文件,相信我,除非你自己是C#程序猿,否则你绝对没心思去搭C#开发和编译环境,不过没关系,这里有。
有了这个工具,你就可以魔改其他作者的第三方表盘了。但是,请合理使用,不要抄袭或冒名。
使用方法也很简单,把你要解包的表盘文件拖到exe上面就可以了。
Fprj_to_wfDef #
Fprj_to_wfDef 可以一键将EasyFace项目转换为可以被WatchfacePackToolMi8编译的项目。
这样你就可以一边在EasyFace中做设计一边用功能更强大的WatchfacePackToolMi8编译表盘文件了。
请注意,截止到截稿日期之前,该工具尚不支持转换时钟指针组件。
其中还附赠了一个 wfdef_preview.py
工具,顾名思义,它的作用就是渲染并预览wfDef项目,不再需要一次次编译再导入到手环上看效果了,对于有时钟指针的表盘也是支持的。