表盘格式中的天气数据

从版本 2 开始,表盘格式包含对天气数据的支持。这些数据涵盖了一系列指标和时间范围,从当前状况到每小时和每日预报。

天气数据可通过表达式访问。例如,要在<Text> 元素中显示当前天气状况,请使用类似于以下的表达式

<Text>
  <Font family="SYNC_TO_DEVICE" size="32">
    <Template>Today's weather: %s
        <Parameter expression="[WEATHER.CONDITION_NAME]"/>
    </Template>
  </Font>
</Text>

可用性

表盘在访问[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] 都可能为真,表示数据已过期且刷新数据尝试失败。在这种情况下,可以显示可用的天气数据,并提供一个指示器来显示获取新数据时出错。

数据的新鲜度

可使用[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 示例