返回官网官方微博

麦步社区-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

[表盘制作教程] [更新]自己做的一个天气api地址 新加月相和日出日落时间api

[复制链接]

6

主题

49

帖子

930

麦力

精华
2
阅读权限
30
在线时间
36 小时

跳转到指定楼层
楼主
发表于 2016-6-27 11:05:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 石头 于 2016-7-1 20:23 编辑

之前做了一个天气表盘,主要是自己的做了一个转发的页面,弥补了麦步sdk中只能获取son数组中同样的key只能获取第一个key对应的值的问题。然后又用自己的一个闲置域名绑定了一个免费的空间,把那个转发的页面放了上去。
访问地址是:http://www.pilipapa.com/weather.php?city=所在的城市
比如:http://www.pilipapa.com/weather.php?city=北京
获得数据是:
{"err":0,"city":"北京","aqi":"良","uvi":"中等","t":"23","w1":"雷阵雨","t1":"33~21","d1":"微风","w2":"雷阵雨","t2":"26~20","d2":"微风","w3":"雷阵雨转多云","t3":"29~22","d3":"微风","w4":"阴转雷阵雨","t4":"29~22","d4":"微风"}
key所对应的值是:
err:错误代码,0代表的是成功
city:城市名称
aqi:空气质量
uvi:紫外线强度
t:今天的实时温度
w1: 今天的天气(w2,w3,w4依次为明天,后天,大后天的天气)
t1:今天的温度范围(t2,t3,t4依次为明天,后天,大后天的温度范围)
d1:今天的风向和强度(d2,d3,d4依次为明天,后天,大后天的风向和强度)

然后提供给有需要的麦友吧。

至于天气表盘的源码,都是依照卖萌表盘的源码修改的,主要是替换了获取json的几个key,都很简单。然后代码改的比较乱,就不公开了。

然后大家有什么请求联网数据的需要,获取一些什么信息,用到转发的话,可以说一下,我会尽量做一个。
【更新】
增加日出日落时间:
http://www.pilipapa.com/sun.php?city=城市
返回json示例:
http://www.pilipapa.com/sun.php?city=北京

{"sunrise":"04:52","sunset":"19:44","sunAltitude":-0.11,"sunAzimuth":2.21,"moonrise":"03:00","moonset":"17:29","moonAltitude":-0.55,"moonAzimuth":2.74}
增加月相:
http://www.pilipapa.com/moon.php
返回json示例
{"age":26.3,"distance":"365223.99","phase_name":"残月","phase":88}
phase代表月亏得百分比

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

22

主题

174

帖子

1988

麦力

精华
2
阅读权限
50
在线时间
144 小时

麦步工业测评协会

沙发
发表于 2016-6-27 15:51:41 | 只看该作者
这个太好了!

22

主题

174

帖子

1988

麦力

精华
2
阅读权限
50
在线时间
144 小时

麦步工业测评协会

板凳
发表于 2016-6-27 15:52:55 | 只看该作者
这个域名会一直在吗?

48

主题

670

帖子

3384

麦力

精华
0
阅读权限
200
在线时间
745 小时
地板
发表于 2016-6-27 16:02:17 | 只看该作者
支持下 给很多开发者提供了方便
发帖内容均来自麦步智能手表自动触发,不接受抄水表、送快递、送温暖等任何形式的关怀

6

主题

49

帖子

930

麦力

精华
2
阅读权限
30
在线时间
36 小时

5#
 楼主| 发表于 2016-6-27 16:07:59 来自手机 | 只看该作者
域名会一直在的 空间是免费的 但是应该是没什么问题吧
来自: 微社区

115

主题

1013

帖子

5771

麦力

精华
1
阅读权限
100
在线时间
87 小时

麦步工业测评协会

6#
发表于 2016-6-27 16:30:18 来自手机 | 只看该作者
然而想自己动手做却无从下手 没学过c需要啥也看不懂啊 能不能哪位大神给小白这个简单教程
来自: 微社区

6

主题

49

帖子

930

麦力

精华
2
阅读权限
30
在线时间
36 小时

7#
 楼主| 发表于 2016-6-27 19:23:46 | 只看该作者
wx_AAlzVp9L 发表于 2016-6-27 16:30
然而想自己动手做却无从下手 没学过c需要啥也看不懂啊 能不能哪位大神给小白这个简单教程 ...

接触过编程吗,只要知道什么是变量和函数就行了,改表盘无非是通过源码改,改图片位置,改文字位置,如果是改天气的话就是改几个key就行了,照那个卖萌天气改就很好弄了。要说工作量的话,无非复制粘贴多一些,打包调试麻烦些。遇到不懂的尽情百度。

点评

没接触过 纯小白 现学要多久?  发表于 2016-6-28 10:25

11

主题

77

帖子

5744

麦力

精华
4
阅读权限
100
在线时间
304 小时

麦步工业测评协会

8#
发表于 2016-6-27 20:26:36 | 只看该作者
石头 发表于 2016-6-27 19:23
接触过编程吗,只要知道什么是变量和函数就行了,改表盘无非是通过源码改,改图片位置,改文字位置,如果 ...

說的太好了,確實如此,無中生有那是大神在幹的!

不過話說回來,樓主您也是大神級的,能搞一個這個服務也太強了…

6

主题

49

帖子

930

麦力

精华
2
阅读权限
30
在线时间
36 小时

9#
 楼主| 发表于 2016-6-27 21:06:30 | 只看该作者
本帖最后由 石头 于 2016-6-27 21:26 编辑
aix 发表于 2016-6-27 20:26
說的太好了,確實如此,無中生有那是大神在幹的!

不過話說回來,樓主您也是大神級的,能搞一個這個服務 ...

我还是小白级别的。然后看到6楼自己做过表盘。应该就很容易了。
然后我还是说一下改天气的地方吧。
参照卖萌天气源码。
第40行和第42行
#define WEATHER_KEY                        "temperature,pm25,info,level"

#define WEATHER_URL "http://op.juhe.cn/onebox/weather/querykey=REPLACE_WITH_YOUR_KEY_HERE&cityname="

比如把WEATHER_KEY 改成"w1,t1,w2,t2" 这个就是获取w1这个key的值,就是今天的天气,w2-明天的天气,t1-今天的温度范围,t2-明天温度范围。当然如果想获取后天的天气,可以再加w3,t3。依次类推。
然后把WEATHER_URL 改成"http://www.pilipapa.com/weather.php?city="

然后再在164行的那个weather_info_callback函数内改key,第176,177,178行。
        maibu_get_json_int(buff, "temperature", &g_temperature);
        maibu_get_json_int(buff, "level",&g_level);
        maibu_get_json_int(buff, "pm25", &g_curPm);
把第二个参数改成我们的key,w1,t1,w2,t2,当然还要复制一行。
因为maibu_get_json_int这个函数是获取int整数类型的。而我们的json数组中都是string类型的
所以要改成maibu_get_json_str,相应的第三个参数要改成char[]类型的。所以你在程序开头建四个char[]类型的变量,不行就吧19行的那个
static char    g_city[20]              = {0};
复制四个,改改变量名比如可以改成w1,t1,w2,t2 ,然后因为天气信息大约最多6个汉字吧,6x4,把20改成30。
就是:
static char    w1[30]              = {0};
static char    t1[30]              = {0};
static char    w2[30]              = {0};
static char    t2[30]              = {0};
然后再回到164行的函数那里,改里面的maibu_get_json_int这种函数
maibu_get_json_str(buff, "w1", &w1);
maibu_get_json_str(buff, "t1", &t1);
maibu_get_json_str(buff, "w2", &w2);
maibu_get_json_str(buff, "t2", &t2);

这样你就可以获得了今天的天气w1,今天的温度范围t1,明天的天气w2,明天的气温范围t2。

然后如果需要更多的信息,加key,加成员变量,加maibu_get_json_str就行了。很简单吧。
对了还有180行的那个判断语句

               
        if(maibu_get_json_str(buff, "info", buffer,sizeof(weather_info)) != JSON_ERROR )
        {//防止数据为空导致的数据清空
                memset(weather_info,0,sizeof(weather_info));
                maibu_get_json_str(buff, "info", weather_info,sizeof(weather_info));
                g_weather_icon_key = get_weather_icon(weather_info,get_date_flag());
        }
        else
        {
                return;
        }



这个里面的"info"可以改成"w1",然后把g_weather_icon_key改成g_weather_icon_key = 1。这个只是偷懒的方法,如果要优化的话,这里的判断语句里面还是需要优化一下的。

至于展示天气信息,就需要改文字,改图片,界面了。

以上只是最简单的修改方法。

115

主题

1013

帖子

5771

麦力

精华
1
阅读权限
100
在线时间
87 小时

麦步工业测评协会

10#
发表于 2016-6-30 00:26:31 来自手机 | 只看该作者
超爱麦步 发表于 2016-6-27 15:51
这个太好了!

这个给超爱肯定又将带来惊喜啊!然而我什么都看不懂:'(:'(:'(
来自: 微社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-24 08:40 , Processed in 0.079557 second(s), 25 queries .

Powered by Discuz! X3.2

© 2012-2021 Comsenz Inc.

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