Данные о погоде в формате Watch Face Format

Начиная с версии 2, Watch Face Format поддерживает данные о погоде. Эти данные охватывают различные показатели и временные рамки, от текущих условий до почасовых и ежедневных прогнозов.

Доступ к данным о погоде осуществляется с помощью выражений. Например, чтобы показать текущие погодные условия в элементе <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] могут быть истинными одновременно, если данные устарели и попытки их обновить не удались. В таких случаях может показываться доступная информация о погоде, а также индикатор, указывающий на то, что при получении новых данных произошла ошибка.

Актуальность данных

Временную метку доступных данных можно получить с помощью [WEATHER.LAST_UPDATED], которая представляет собой временную метку эпохи Unix в миллисекундах.

Это значение можно отформатировать с помощью метода icuText(,), чтобы получить представление, удобное для чтения, как показано в примере с погодой.

Погодные условия

Текущие условия доступны в файле [WEATHER.CONDITION], а их описание – в файле [WEATHER.CONDITION_NAME].

Значения для [WEATHER.CONDITION] можно посмотреть в источниках данных. Например, 4 означает HEAVY_RAIN.

Прочие показатели

В формате Watch Face Format есть и другие показатели, например [WEATHER.TEMPERATURE] и [WEATHER.UV_INDEX]. Подробную информацию о доступных показателях, включая единицы измерения и типы данных, можно найти на справочной странице Источники данных.

Почасовой и ежедневный прогноз

Чтобы посмотреть прогноз на определенный час или день, выполните следующие действия:

  • [WEATHER.HOURS.1.CONDITION] – прогноз погоды через час.
  • [WEATHER.DAYS.2.CONDITION] – прогноз погоды на два дня вперед.

Данные по часам могут быть доступны на восемь часов раньше, а ежедневные данные – на пять дней раньше. Однако циферблат всегда должен проверять доступность данных прогноза. В разное время и на разных устройствах может быть доступен разный диапазон часов или дней. Например, чтобы проверить, доступны ли прогнозные данные на период, начинающийся через час, используйте [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.