表盘格式的天气数据

自版本 2 起,表盘格式开始支持天气数据。这些数据涵盖各种指标和时间范围,从当前天气状况到每小时和每日预报。

天气信息通过表达式进行访问。例如,如需在 <Text> 元素中显示当前天气状况,请使用类似于以下内容的表达式:

<PartText x="100" y="100" width="200" height="50">
    <Text>
        <Font family="SYNC_TO_DEVICE" size="16">
            <Template><![CDATA[Today's weather: %s]]>
                <Parameter expression="[WEATHER.CONDITION_NAME]"/>
            </Template>
        </Font>
    </Text>
</PartText>

可用性

在访问 [WEATHER.*] 对象的其他成员之前,请检查 [WEATHER.IS_AVAILABLE] 值:

<Condition>
    <Expressions>
        <Expression name="is_weather_available">[WEATHER.IS_AVAILABLE]</Expression>
    </Expressions>
    <Compare expression="is_weather_available">
        <!-- Weather is available, so show the weather data. -->
    </Compare>
    <Default>
        <!-- Weather isn't available, so show an appropriate message. -->
    </Default>
</Condition>

您还应检查 [WEATHER.IS_ERROR],这表示天气数据加载时出错。

请注意,[WEATHER.IS_AVAILABLE][WEATHER.IS_ERROR] 可以同时为 true,表示数据已过时且尝试刷新数据失败。在这种情况下,系统可以显示可用的天气信息,并显示一条指示消息,表明在提取新数据时发生了错误。

数据新鲜度

可以使用 [WEATHER.LAST_UPDATED] 访问可用数据的时间戳,该时间戳是以毫秒为单位的 Unix 纪元时间戳。

可以使用 icuText(,) 方法格式化此值,以获得人类可读的表示形式,如天气示例中所示。

天气状况

当前条件可在 [WEATHER.CONDITION] 中查看,[WEATHER.CONDITION_NAME] 中提供的是便于用户理解的版本。

您可以在数据源中查看 [WEATHER.CONDITION] 的值。例如,4 表示 HEAVY_RAIN

其他指标

表盘格式提供了一系列其他指标,例如 [WEATHER.TEMPERATURE][WEATHER.UV_INDEX]。如需详细了解可用指标(包括单位和数据类型),请访问数据源参考页面。

每小时和每日天气预报

您可以按如下方式访问未来特定小时或日期的天气预报:

  • [WEATHER.HOURS.1.CONDITION] - 1 小时后的天气预报情况。
  • [WEATHER.DAYS.2.CONDITION] - 未来 2 天的天气预报情况。

每小时数据最多可提前 8 小时提供,每日数据最多可提前 5 天提供。不过,表盘应始终检查天气预报数据的可用性。在不同时间或不同设备上,可用的时间范围或天数可能有所不同。例如,如需检查从现在起 1 小时后的天气预报数据是否可用,请使用 [WEATHER.HOURS.1.IS_AVAILABLE]

每日和每小时预报还包含一系列指标,例如 [WEATHER.HOURS.<N>.TEMPERATURE][WEATHER.DAYS.<N>.CHANCE_OF_PRECIPITATION]。如需详细了解可用指标(包括单位和数据类型),请访问数据源参考页面。

使用天气数据进行测试

为了获取天气数据,Wear OS 设备必须知道设备位置。

为了节省电量,手表不会使用板载 GPS 传感器来确定天气预报的位置,而是依赖于已连接的手持设备或可用网络提供的位置信息。

如需使位置数据可用于测试,请执行以下某项操作:

  • Wear OS 模拟器与实体手机或模拟器手机配对。
  • 通过以下 adb 命令模拟位置:
adb unroot
adb shell cmd location set-location-enabled true
adb root
adb shell appops set 0 android:mock_location allow
adb shell cmd location providers add-test-provider gps
adb shell cmd location providers set-test-provider-enabled gps true
adb shell cmd location providers set-test-provider-location gps --location 37.773972,-122.431297

更多详情

如需查看访问和呈现天气数据的完整示例,请参阅 GitHub 示例