📳 LSPosed 模块 | 为 微信输入法 & 豆包输入法 提供更丰富的震动选项。
我很喜欢vivo输入法那个双段震动,遂制作此模块给微信输入法和豆包输入法也弄一个两段震动。
需要API 101。
-
通过 LSP仓库/本仓库 下载模块并安装。LSPosed用户在管理器中勾选作用域并重启目标应用即可。免root框架用户需要自行修补 (集成模式,勾选DexLoader和文件提供器或者类似名称的同功能选项)
-
模块鲁棒性还行,兼容其他模块和部分修改版。But 对于例如 “共存版”、“改包名版” 的版本,因为包名改变会导致无法使用,可拉取源码自行编译。
-
通过微信输入法设置->帮助与反馈 || 豆包输入法设置->问题反馈打开寄生设置页。
-
对模块进行的 任何修改(包括修改模块设置/更新模块/更新本体),都需要保存并重启输入法才能生效。
-
按下震动: 打字按下时的震动策略; 抬起震动: 手指从屏幕抬起时的震动策略。
-
- 无震动:顾名思义
- 系统预设: Android系统中现有的最多20种震动风格
- 简单自定义: 自定义震动时长的强度的震动
- 自定义波形: 自定义具体震动曲线的高级震动,需要额外配置,参阅#高级配置
-
重载输入法: 快速停止输入法设置进程和键盘进程,以便快速应用新设置或更新版本。重启微信输入法需要授予微信输入法root权限,重启豆包输入法无需额外权限
-
模块的配置文件位于
/storage/emulated/0/Android/data/包名/files/haostoo/config/,其中config.xml为基础配置,由模块自动写入。 保存配置的操作实际也是在此处写入,通常无需手动操作。customhaptic.json为自定义波形的配置文件,需手动创建,详见高级配置
当存在格式正确的/storage/emulated/0/Android/data/包名/files/haostoo/config/customhaptic.json,且震动风格为自定义波形时,
对应的按下(Down)或抬起(Up)震动将根据此文件中的配置震动。
通过自定义曲线理论上可以模拟绝大多数应用和系统触觉反馈的震动风格,包括但不限于部分定制输入法提供的模拟机械键盘震动。
{
"down": {
"timings": [0, 10, 40],
"amplitudes": [0, 140, 60]
},
"up": {
"timings": [0, 40],
"amplitudes": [0, 120]
}
}down: 按键按下时触发的震动波形。
up: 按键抬起时触发的震动波形。
timings:
震动时间数组,单位为毫秒(ms)。数组中的每个元素表示该阶段持续的时间。
amplitudes:
震动强度数组。 取值范围:0 ~ 255。 数值越大,震感越强。
"timings": [0, 6, 6],
"amplitudes": [0, 140, 60]表示:
| 阶段 | 时长 | 强度 |
|---|---|---|
| 0 | 立即开始 | 开始 |
| 1 | 持续 6ms | 140 |
| 2 | 持续 6ms | 60 |
正确:
{
"timings": [0, 6, 6],
"amplitudes": [0, 140, 60]
}错误:
{
"timings": [0, 6, 6],
"amplitudes": [0, 140]
}正确:
"timings": [0, 6, 6]错误:
"timings": [5, 6, 6]正确:
"amplitudes": [0, 120, 255]错误:
"amplitudes": [0, 300, -1]错误:
"timings": []-
不同设备的马达性能不同,相同配置的实际震感可能存在 巨大差异。想获得较正常的体验至少需要线性马达。转子马达难以高精度控制,效果很差。
-
不同系统对于震动调用的频率和精度也有限制。因此对于timings分段不建议过短过复杂。过于复杂精细的曲线可能被系统截断或者降级, 导致实际的震动效果与配置效果有出入。
-
因此总时长控制在几十毫秒,分2~4段是比较甜点的选择。
自定义波形震动基于 VibrationEffect.createWaveform() 实现。