通过点击表盘的时间来调节亮度应该是杨铭洲际最先实现的,我兴许是受到了启发,在我的机甲表盘上也增加了这一功能,兴许是受到我的机甲表盘的影响,之后也有很多表盘实现了点击时钟增加亮度,分钟减少亮度的功能,个人认为非常的实用,所以贴上教程以供参考。教程是之前的存货,抱歉拖到现在才发。
hmApp.startApp({ url: 'Settings_lightAdjustScreen', native: true })即可。
另外,之前我无意间发现使用hmFS.SysProSetChars在系统缓存中存储数据似乎容易导致设备重启甚至变砖,需要重置手环才能恢复正常,而且官方也不建议使用这种方式,所以建议尽量避免使用这种方式,然而早期的很多程序都喜欢使用这种方式,例如小宠物表盘等。建议可以使用文件存储数据,我的所有程序都是使用这种方式存储的,以下是示例代码,这是我根据官方示例修改的。
如果想要点击后直接跳转到亮度调节界面,可以只留一个触控区域,将function (info){后面的3行改为首先用压缩软件解压表盘文件,如果里面有app.js文件,那么这个表盘才可以修改。先要打开app.json文件,在runtime后面那对括号里面有个type,值为2,应该改为0(如果已经为0则不用管),此时2个bin文件已经失效了,可以将其删掉。之后点开watchface文件夹里面的index.js,如果里面的代码是连在一片的话,可以用在线工具给格式化一下,比如https://tool.lu/js/,之后找到代码的init_view函数的末尾,或者可以找onInit函数前面的一个后括号,之后在这个括号里面加上如下代码,注意要新开一行写:
addCover代表增加按钮的触控区域,sub为减少,其中的x,y分别代表横纵坐标,左上角为0,w,h则为宽高,注意手环分辨率为490*192,请自行确定合适的值,x,y的值可以参考表盘时间的位置,如 hour_startX: 55,hour_startY: 160里面就是小时的横纵坐标,w和h如果想要精确设置的话可以参考小时和分钟对应图片的宽高,之后保存后将其压缩回去就好了,注意zip包下面必须直接是app.json等文件,25代表每次调节25%的亮度。JavaScript:let addCover = hmUI.createWidget(hmUI.widget.TEXT, { x: 55, y: 160, w: 84, h: 72 }); let subCover = hmUI.createWidget(hmUI.widget.TEXT, { x: 55, y: 261, w: 84, h: 72 }); addCover.addEventListener(hmUI.event.CLICK_UP, function (info) { let bri = hmSetting.getBrightness() + 25 if (bri > 100) bri = 100 hmSetting.setBrightness(bri) }); subCover.addEventListener(hmUI.event.CLICK_UP, function (info) { let bri = hmSetting.getBrightness() - 25 if (bri < 0) bri = 0 hmSetting.setBrightness(bri); });
hmApp.startApp({ url: 'Settings_lightAdjustScreen', native: true })即可。
另外,之前我无意间发现使用hmFS.SysProSetChars在系统缓存中存储数据似乎容易导致设备重启甚至变砖,需要重置手环才能恢复正常,而且官方也不建议使用这种方式,所以建议尽量避免使用这种方式,然而早期的很多程序都喜欢使用这种方式,例如小宠物表盘等。建议可以使用文件存储数据,我的所有程序都是使用这种方式存储的,以下是示例代码,这是我根据官方示例修改的。
JavaScript:
function str2ab(str) {//在程序开头try后面添加
const buf = new ArrayBuffer(str.length * 2) // 每个字符2字节
const bufView = new Uint16Array(buf)
for (let i = 0, strLen = str.length; i < strLen; i++) {
bufView[i] = str.charCodeAt(i)
}
return buf
}
class LocalStorage {
constructor(fileName = '') {
this.fileName = fileName
this.contentObj = {}
}
set(obj) {
const file = hmFS.open(this.fileName, hmFS.O_RDWR | hmFS.O_TRUNC)
const contentBuffer = str2ab(JSON.stringify(obj))
hmFS.write(file, contentBuffer, 0, contentBuffer.byteLength)
hmFS.close(file)
}
get() {
const [fsStat, err] = hmFS.stat(this.fileName)
if (err === 0) {
const { size } = fsStat
const fileContentUnit = new Uint16Array(new ArrayBuffer(size))
const file = hmFS.open(this.fileName, hmFS.O_RDONLY | hmFS.O_CREAT)
hmFS.seek(file, 0, hmFS.SEEK_SET)
hmFS.read(file, fileContentUnit.buffer, 0, size)
hmFS.close(file)
try {
const val = String.fromCharCode.apply(null, fileContentUnit)
this.contentObj = val ? JSON.parse(val) : {}
} catch (error) {
this.contentObj = {}
}
}
return this.contentObj
}
}
//---
onDestory() {
console.log('page onDestroy invoked')
localStorage.set(data)//在onDestroy函数中添加这一句
}
//---
const localStorage = new LocalStorage('zzt741-pet.json')//创建类,指定文件名
data = localStorage.get()//获取文件数据
if (Object.keys(data).length == 0) {//设置默认值
data = {
whaleCount: 0,
resurgenceCount: 0
}
}
let var1 = data.whaleCount //获取具体的值
data.whaleCount = var1 //设置值
最后编辑: