返回官网官方微博

麦步社区-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: MAI 表盘
查看: 15960|回复: 45
打印 上一主题 下一主题

初次修改表盘,分享一下

[复制链接]

2

主题

18

帖子

380

麦力

精华
0
阅读权限
30
在线时间
15 小时

跳转到指定楼层
楼主
发表于 2016-8-24 15:29:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这个表盘主要修改自神盾局特工的表盘。其实之前很喜欢运动天气表盘,无奈在iOS下,经常过一阵子手表就无法从手机那里获取天气,必须打开APP再切换一下表盘才能获取。然后过个一两天就又不行了。索性就不要天气信息,只显示手表本地能够获得的信息好了。然后海拔和楼层我也不是很关心,就一起去掉了,得到了这个表盘。其中右列从上到下为电量、第二时区(个人需求,需要一个第二时区)、温度和步数。个人比较满意的是电量的显示,既有百分比的显示,还调用系统的状态栏显示了电池格数,这样让电池的标志又动态又美观。相应的蓝牙状态也是调用系统状态栏,这里没有显示。
下一步想把第二时区做成从手机端设置的模式,但是有点没看懂怎么从手机获取信息。有哪位能大概讲讲吗?

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信 WeiboWeibo
收藏收藏1 分享分享 顶 踩

214

主题

2514

帖子

3万

麦力

麦步团队

精华
1
阅读权限
200
在线时间
812 小时

麦步手表用户麦步工业测评协会

沙发
发表于 2016-8-24 15:32:47 | 只看该作者
还不错,看起来挺精致的。
关于自定义表盘这个功能,有看过了卖萌天气等开源源码了吗?

21

主题

136

帖子

2571

麦力

精华
0
阅读权限
50
在线时间
91 小时

板凳
发表于 2016-8-24 20:33:04 来自手机 | 只看该作者
神盾局特工日期好像不更新,需要切换到其他表盘再切换回来才更新
来自: 微社区

2

主题

18

帖子

380

麦力

精华
0
阅读权限
30
在线时间
15 小时

地板
 楼主| 发表于 2016-8-24 21:20:45 | 只看该作者
胸无墨 发表于 2016-8-24 20:33
神盾局特工日期好像不更新,需要切换到其他表盘再切换回来才更新

是的,的确存在这个问题,修正起来也很简单。原作者在时间刷新函数里没有写随时间刷新日期和星期的代码,至少在开源版的源码里是这样的。自己加上之后就可以正常更新了。

2

主题

18

帖子

380

麦力

精华
0
阅读权限
30
在线时间
15 小时

5#
 楼主| 发表于 2016-8-24 21:23:16 | 只看该作者
不贰小 发表于 2016-8-24 15:32
还不错,看起来挺精致的。
关于自定义表盘这个功能,有看过了卖萌天气等开源源码了吗? ...

看了卖萌天气的源码,回调函数太多看不明白应该用哪个。能告诉我如果想实现在app里的那个“设置表盘内容”功能该用哪个函数吗?

21

主题

136

帖子

2571

麦力

精华
0
阅读权限
50
在线时间
91 小时

6#
发表于 2016-8-24 22:03:21 来自手机 | 只看该作者
klds1991 发表于 2016-8-24 21:20
是的,的确存在这个问题,修正起来也很简单。原作者在时间刷新函数里没有写随时间刷新日期和星期的代码, ...

我不懂编程,只会调整下要素的位置、字体等,能教我随时间刷新日期和星期的代码怎么写么,放在哪一行。谢谢
来自: 微社区

2

主题

18

帖子

380

麦力

精华
0
阅读权限
30
在线时间
15 小时

7#
 楼主| 发表于 2016-8-25 09:22:07 | 只看该作者
胸无墨 发表于 2016-8-24 22:03
我不懂编程,只会调整下要素的位置、字体等,能教我随时间刷新日期和星期的代码怎么写么,放在哪一行。谢 ...


我发现这个问题已经是修改表盘的后期了,所以改动比较大,无法给你直接能用的代码。不过我可以给你修改的思路,基本上只要对现有代码进行模仿就可以完成, 应该很简单。
第一步是将日期和星期图层给定到它的涂层句柄中。在代码开始的变量声明阶段,新声明两个变量用于日期、星期图层句柄,例如在
  1. static int32_t g_app_mwd_battery_layer_id = -1;
复制代码

后面添加
  1. static int32_t g_app_mwd_week_layer_id = -1;
复制代码

接着,在窗口初始化函数里(P_Window init_mwd_window())将相应图层赋给涂层句柄。例如将
  1. app_window_add_layer(p_window, layer_text_date);
复制代码

修改为
  1. if(layer_battery != NULL)
  2.         {
  3.                 g_app_mwd_battery_layer_id = app_window_add_layer(p_window, layer_battery);
  4.         }
复制代码

的形式。注意是修改为这个形式,请自己替换其中需要替换的变量,不要照抄。
至此,已经可以在别的方法里调用这两个图层了。
第二步是在时间更新方法(app_zola_watch_time_change)里修改日期和星期。
请仿照这个代码,在这个代码后面添加新的代码
  1. P_Layer layer_battery = app_window_get_layer_by_id(p_window, g_app_mwd_battery_layer_id);
  2.                 if (NULL == layer_battery)
  3.                 {
  4.                         return;
  5.                 }
复制代码

这样可以取到表盘的日期和星期图层。然后仿照这个代码
  1. sprintf(str, "%d:%02d", datetime.hour, datetime.min);
  2.                 app_layer_set_text_text(p_hm_layer, str);
复制代码

修改日期、星期表盘的内容。日期、星期的获取方法在窗口初始化方法(P_Window init_mwd_window())里有。这样就能实现日期、星期的更新。

214

主题

2514

帖子

3万

麦力

麦步团队

精华
1
阅读权限
200
在线时间
812 小时

麦步手表用户麦步工业测评协会

8#
发表于 2016-8-25 09:56:59 | 只看该作者
klds1991 发表于 2016-8-24 21:23
看了卖萌天气的源码,回调函数太多看不明白应该用哪个。能告诉我如果想实现在app里的那个“设置表盘内容 ...

需不需要把你加到开发者群里,咨询下大神

34

主题

294

帖子

2491

麦力

精华
0
阅读权限
100
在线时间
97 小时
9#
发表于 2016-8-25 14:04:10 | 只看该作者
其实OS SDK里应该简化很多函数。尤其回调函数会吓着很多人。尤其是因为开发表盘的大多不见得是C高手。
比如取得网址上的内容 写成 char* GetWebString(char* url);
开发者直接调用就可以了。

2

主题

18

帖子

380

麦力

精华
0
阅读权限
30
在线时间
15 小时

10#
 楼主| 发表于 2016-8-25 15:26:51 | 只看该作者
不贰小 发表于 2016-8-25 09:56
需不需要把你加到开发者群里,咨询下大神

已经搞定了。现在问题出在app里不会出现那个“设置表盘内容”的按钮。我把UUID换成双时区表盘的就出现了这个按钮,说明这个东西是编程解决不了的,应该是在开发者平台里设置的。嘛,现在这样披着羊皮也能用了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|麦步官方论坛 ( 粤ICP备12052190号  

GMT+8, 2024-5-6 03:22 , Processed in 0.079616 second(s), 27 queries .

Powered by Discuz! X3.2

© 2012-2021 Comsenz Inc.

快速回复 返回顶部 返回列表