# 小米天气新接口
该接口提供5天内(暂不包括昨天)定位城市/街道的常用天气信息查询服务,支持条件查询;
用户可在天气客户端取消关注定位城市/街道,此时该接口返回的数据为用户关注第一个城市的天气信息。
# 数据更新策略
该接口根据条件进行查询,分为三种case:1.本地+网络;2.取本地数据;3.取网络数据 本地数据,每小时更新一次(具体更新策略参见天气后台数据更新任务)
# 接口uri及参数说明
content://weather/actualWeatherData/{dataType}/{wantOnlyCityName}
参数名 | 参数值 | 说明 | 备注 |
---|---|---|---|
dataType(必需) | 1 | check本地数据,如果本地数据超过一小时,更新本地数据,并返回 | 默认逻辑,必须异步调用 |
dataType | 2 | 直接取本地数据 | 可同步调用,仍建议异步 |
dataType | 3 | 直接获取网络数据 | 必须异步调用 |
wantOnlyCityName(非必需) | 1/0 | 是否只需要城市名(否则精确到区或街道名),1即是,0即否 | 默认可不传此参数,默认值为0,即city_name字段返回尽量精确的名称 |
出于功耗考虑,若无特殊需求,请尽量使用第 1 种类型。因为正常情况下天气后台数据是保持了较新时效性的,此时使用3和1没有区别。
# 接口返回字段
ColIndex | 字段名 | 说明 | 类型(type) | 字段值示例 | 备注 |
---|---|---|---|---|---|
0 | publish_time | 实时天气信息发布时间(time mills) | string | 1508143200000 | 可用于实时信息的时效判断 |
1 | city_id | 城市唯一标识 | string | 39.959_116.298 | 经纬度(北纬_东经) |
2 | city_name | 城市/街道名称 | string | 安宁庄南路 | 能定位到街道时优先返回街道名,否则返回城市名 |
3 | description | 天气现象(实时) | string | 多云 | |
4 | temperature | 气温(实时) | string | 18℃ | |
5 | temperature_range | 气温(预报) | string | 8℃~18℃ | 支持数组,type="string[]" |
6 | aqilevel | AQI等级 | int | 90 | 参考见:AQI等级 |
7 | locale | 语言 | string | zh_CN | |
8 | weather_type | 天气类型(实时) | int string | 1 | type="int"时不支持数组,type="string[]"时支持数组 与天气现象对应关系参考见:天气现象代码对照表 |
9 | humidity | 湿度 | int | 68% | 单位:% |
10 | sunrise | 日出时间 | int | 80760000 | 距0点过去的毫秒数(换算成时间时只取Hour和Minute,例如80760000换算后为06:26) |
11 | sunset | 日落时间 | int | 34440000 | 距0点过去的毫秒数(换算成时间时只取Hour和Minute,34440000换算后为17:34) |
12 | wind | 风向,风力 | string | 东南风,2级 | |
13 | day | 日期偏移量 | int | 1 | 0代表昨天,1代表今天,2代表明天 |
14 | pressure | 气压 | int | 1016hPa | 单位:hPa |
15 | timestamp | 预报天气信息发布时间(time mills) | string | 1508055000000 | |
16 | tmphighs | 最高温(预报) | string | 18 | 支持数组,type="string[]" |
17 | tmplows | 最低温(预报) | string | 8 | 支持数组,type="string[]" |
18 | forecast_type | 天气类型(预报) | int string | 1 | type="int"时不支持数组,type="string[]"时支持数组 与天气现象对应关系参考见:天气现象代码对照表 |
19 | weathernamesfrom | 天气现象(预报) | string | 多云 | 支持数组,type="string[]" |
20 | weathernamesto | 同上 | |||
21 | temperature_unit | 气温单位 | int | 1 | 1代表摄氏度,0代表华氏度 |
22 | water | 暂时无用(降水概率) | - | 50% | 暂时无用 |
# 示例
<VariableBinders>
<ContentProviderBinder name="WeatherProvider" uri="content://weather/actualWeatherData/1" columns="city_id,city_name,weather_type,aqilevel,description,temperature,forecast_type,tmphighs,tmplows,wind,humidity,sunrise,sunset,pressure,weathernamesfrom,forecast_type,publish_time" countName="hasweather">
<Variable name="weather_city_id" type="string" column="city_id"/>
<Variable name="weather_location" type="string" column="city_name"/>
<Variable name="weather_id" type="int" column="weather_type"/>
<Variable name="weather_temperature" type="int" column="temperature"/>
<Variable name="weather_aqi" type="int" column="aqilevel"/>
<Variable name="weather_sunrise" type="int" column="sunrise"/>
<Variable name="weather_sunset" type="int" column="sunset"/>
<Variable name="weather_forecast_type" type="int" column="forecast_type"/>
<Variable name="weather_wind" type="string" column="wind"/>
<Variable name="weather_pressure" type="int" column="pressure"/>
<Variable name="weather_humidity" type="int" column="humidity"/>
<Variable name="weather_type" type="string[]" column="weather_type"/>
<Variable name="weather_description" type="string[]" column="description"/>
<Variable name="weather_weathernamesfrom" type="string[]" column="weathernamesfrom"/>
<Variable name="weather_temphigh" type="string[]" column="tmphighs"/>
<Variable name="weather_templow" type="string[]" column="tmplows"/>
<Variable name="weather_publish_time" type="string" column="publish_time"/>
</ContentProviderBinder>
</VariableBinders>
<Text x="100" y="300" size="40" color="#ffffff" textExp="#weather_temperature"/>
<Arraty count="5" indexName="__weather">
<Text x="100" y="500+50*#__weather" size="40" color="#ffffff" textExp="#weather_forecast_type[#__weather]"/>
</Arraty>
# 简化版天气图标使用
在日常制作中如果画26个天气图标工作量较大,所以我们可以把一个类型的图标集合为一个图标即可。
如下示例:
<VariableBinders>
<ContentProviderBinder name="WeatherProvider" uri="content://weather/actualWeatherData/1" columns="city_name,weather_type,aqilevel,description,temperature,temperature_range" countName="hasweather">
<Variable name="weather_location" type="string" column="city_name"/>
<Variable name="weather_id" type="int" column="weather_type"/>
<Variable name="weather_temperature" type="string" column="temperature"/>
<Variable name="weather_description" type="string" column="description"/>
<Variable name="weather_aqi" type="int" column="aqilevel"/>
<Trigger>
<!-- 空气质量 -->
<VariableCommand name="air_quality" expression="ifelse(#weather_aqi}=0**#weather_aqi{=50,'空气优',#weather_aqi}50**#weather_aqi{=100,'空气良好',#weather_aqi}100**#weather_aqi{=150,'轻度污染',#weather_aqi}150**#weather_aqi{=200,'中度污染',#weather_aqi}200**#weather_aqi{=300,'严重污染',#weather_aqi}300,'重度污染','获取信息异常')" type="string"/>
<!-- 天气类型简化版;可用于天气图标展示。例如:srcid="#weatherId" -->
<VariableCommand name="weatherId" expression="ifelse(#weather_id}25||#weather_id{0,0, (#weather_id}=4**#weather_id{=6||#weather_id}=8**#weather_id{=11||#weather_id==25),4,#weather_id}=13**#weather_id{=17,13 ,#weather_id}=18**#weather_id{=21||#weather_id==23,18,#weather_id)"/>
</Trigger>
</ContentProviderBinder>
</VariableBinders>
<!-- 用图展示天气现象 -->
<Image x="100" y="100" src="weather.png" srcid="#weatherId"/>
简化版图标对应天气现象示图:
11个天气图标附件下载:11个天气图标素材.zip (opens new window)