# 小米天气新接口

该接口提供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)


最近更新时间: 12/30/2020, 9:36:40 AM