Начиная с версии 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.
Рекомендуем
- Примечание. Текст ссылки показывается, когда JavaScript отключен.
- Как изменить режим фокусировки
- Побочные эффекты в Compose
- Краткое руководство по AGSL