Java, UX, HTML, CSS, WEB-design

Перенос данных вашего приложения на запястье каждого пользователя с помощью Android Wear


  • Даниэле Бональдо

  • 0 Комментарии

Перенос данных вашего приложения на запястье каждого пользователя с помощью Android Wear

  • 9 минут чтения

  • Мобильные устройства, приложения, Android

Краткое резюме ↬

Пробовали ли вы экспериментировать с API усложнений? В этой статье показано, как сделать данные вашего приложения доступными непосредственно с циферблата носимых устройств, чтобы пользователь мог быстро получить к ним доступ. Вы также узнаете, как синхронизировать данные между телефоном и смарт-часами и как отображать их с помощью нового API-интерфейса осложнений.

Известно, что самой популярной операционной системой для мобильных устройств является Android. Одна из главных причин его популярности — возможность работать на огромном количестве устройств, а не только на телефонах и планшетах. Мы находим Android на телевизорах, часах, автомобилях, даже на холодильниках и зеркалах.

Android Wear — это версия операционной системы, специально разработанная для распространения платформы Android на носимые устройства с особым вниманием к смарт-часам. Эти устройства позволяют пользователю потреблять информацию совершенно иначе, чем традиционные портативные устройства: данные представляются в нужное время в зависимости от контекста пользователя, а взаимодействие менее инвазивно и требует меньше времени, чем в телефонном приложении.

Android Wear — это версия операционной системы, специально разработанная для распространения платформы Android на носимые устройства с особым вниманием к смарт-часам. Эти устройства позволяют пользователю потреблять информацию совершенно иначе, чем традиционные портативные устройства: данные представляются в нужное время в зависимости от контекста пользователя, а взаимодействие менее инвазивно и требует меньше времени, чем в телефонном приложении.

В этой статье показано как сделать данные вашего приложения доступными непосредственно с циферблата носимых часов, что позволяет пользователю получить к нему доступ с первого взгляда. Мы увидим, как синхронизировать данные между телефоном и смарт-часами и как отображать их с помощью нового API осложнений.

Дальнейшее чтение на SmashingMag:

  • Начало работы с носимыми устройствами: как планировать, создавать и проектировать
  • Дизайн для умных часов и носимых устройств
  • Интимный и прерывающий: дизайн для Apple Watch
  • Руководство перфекциониста по Wireframe

Еще после прыжка! Продолжить чтение ниже ↓

Циферблаты часов и осложнения

Что это за осложнения, для начала? В контексте традиционного часового дела усложнение, как определено в Википедии:

«…любая функция часов, кроме простой индикации часов и минут».

Одними из самых известных примеров усложнений являются отображение даты, хронометр или секундомер.

Усложнения, безусловно, не являются чем-то новым для механических часов. У нас есть первые сообщения о карманных часах, включая дополнительные усложнения, еще в 16 веке.

Механический часовой механизм
Механизм первых механических часов, которые я построил (Просмотреть увеличенную версию)

Умные часы — идеальное место для таких дополнительных функций благодаря огромному потенциалу, предоставляемому цифровыми экранами.

Самым популярным типом приложений для смарт-часов сегодня является циферблат, и на то есть веская причина: большую часть времени он отображается на дисплее часов, когда никакие другие приложения не используются. В магазине Play доступны тысячи циферблатов, каждый из которых отличается своим стилем.

Одним из основных принципов Android Wear является удобство просмотра: пользователь всегда должен иметь возможность просмотреть отображаемую информацию за доли секунды, не прерывая свою деятельность. Усложнения создаются именно с учетом этого принципа: в то время как основная цель циферблата состоит в том, чтобы дать пользователю возможность определять время, осложнения могут быть еще более полезными, отображая массив информации, не требуя от пользователя открытия другого приложения.

В Android Wear у нас уже есть несколько примеров циферблатов с расширениями. Они отображают такую ​​информацию, как счетчик шагов, прогноз погоды, сведения о следующей встрече пользователя и многое другое.

То, как эти усложнения работали до сих пор, имело большое ограничение: каждое отдельное приложение для циферблата должно было реализовать свою собственную логику для получения данных. Например, если два циферблата отображали прогноз погоды, разработчикам приходилось реализовывать два аналогичных механизма для получения одних и тех же данных. Такая пустая трата ресурсов!

Android Wear 2.0 призван решить эту проблему с помощью нового API усложнений.

API усложнений Wear

В частности, Android Wear включает в общение двух основных участников:

  • в поставщик данных, который включает в себя логику для получения данных;
  • в циферблат, который отображает информацию, предоставляемую поставщиком данных.
Поток API усложнения
Поток API усложнения (Просмотреть большую версию)

Циферблат никогда не имеет прямого доступа к поставщику данных. Вместо этого он получит обратный вызов, когда будут доступны новые данные для выбранных пользователем осложнений. Между тем поставщик данных не знает, как будет отображаться открытая информация: это полностью зависит от циферблата, в зависимости от его стиля.

Типы осложнений

Чтобы определить какой-либо протокол связи между двумя субъектами, API-интерфейс усложнений задает набор типов усложнений, которые могут использоваться поставщиком при предоставлении данных.

Различные типы осложнений
Типы осложнений (Изображение: d.android.com) (Посмотреть большую версию)

Каждый тип имеет по крайней мере одно обязательное поле, которое является основной частью данных. Циферблат всегда ожидает получить это поле, и некоторые необязательные поля могут использоваться для предоставления дополнительной информации.

Например, в типе «Краткий текст» обязательным полем является короткий текст, который может сопровождаться коротким заголовком или значком, чтобы сделать основную информацию еще более понятной. Иконки в целом должны быть одного цвета с прозрачностью, потому что они могут быть окрашены циферблатом.

В следующей таблице приведены обязательные и необязательные поля для каждого типа сложности:

Тип осложнения Обязательные поля Необязательные поля
Короткий текст Короткий текст Значок Краткое название
Значок Значок
Диапазон значений Значение Минимальное значение Максимальное значение Значок Короткий текст Краткое название
Длинный текст Длинный текст Длинное название Значок Маленькое изображение
Маленькое изображение Маленькое изображение
Большое изображение Большое изображение

Пример использования

Мне сразу стало очевидно, что этот новый API имеет огромный потенциал. Итак, я решил использовать его с существующим проектом, чтобы выставить некоторые уже доступные данные из приложения с помощью для этого случая осложнение.

Проект представляет собой приложение с открытым исходным кодом, созданное моим другом Александрос, которым я уже давно пользуюсь: Memento Namedays. Цель приложения — напомнить вам о днях рождения и именинах ваших контактов, и это выглядит как идеальный вариант использования усложнения для отображения информации о следующем дне рождения среди ваших контактов.

Давайте посмотрим, как мне удалось создать поставщик данных.

Синхронизация данных между портативным и носимым устройствами

Код приложения для телефона был включен в модуль Android под названием mobile. Я создал еще один модуль с именем wear, который включает в себя код части приложения, которое будет установлено на смарт-часах. Затем я сделал необходимые данные из mobile доступны для wear модуль приложения.

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

Каждый раз, когда происходит соответствующее изменение (например, когда наступает день рождения одного из моих контактов), я использовал API-интерфейс Wearable Data Layer для синхронизации этих данных между карманным устройством и носимым устройством.

Предоставление данных об осложнениях

в wear модуль, я создал поставщик данных о сложности, который является службой, расширяющей ComplicationProviderService. Этот базовый класс дает нам набор обратных вызовов, чтобы мы знали статус нашего усложнения:

  • onComplicationActivated сообщает нам, когда поставщик выбран в качестве источника данных для сложности на текущем циферблате.
  • onComplicationDeactivated сообщает нам, когда осложнение больше не выбрано.
  • onComplicationUpdate сообщает нам, когда пришло время предоставить обновленный набор данных для заполнения сложности.

Последний метод является наиболее важным, потому что нам нужно загрузить новые данные и связать их для пересылки на циферблат.

Среди параметров обратного вызова тип сложности позволяет поставщику данных добавлять необходимые поля в соответствии с типом, поддерживаемым циферблатом.

В случае типа «Короткий текст» я заполняю ComplicationData с датой следующего события и необязательным значком:


ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
    .setShortText(ComplicationText.plainText(formatShortDate(date)))
    .setIcon(Icon.createWithResource(context, R.drawable.ic_event))
    .setTapAction(createContactEventsActivityIntent())
    .build();

В случае «Длинного текста» я добавляю список имен контактов, связанных со следующим событием:


ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
    .setLongTitle(ComplicationText.plainText(formatLongDate(date)))
    .setLongText(ComplicationText.plainText(formatList(names))) 
    .setIcon(Icon.createWithResource(context, R.drawable.ic_event))
    .setTapAction(createContactEventsActivityIntent())
    .build();

Обратите внимание, что расширения могут быть доступны пользователю непосредственно с циферблата. Чтобы поддержать это, я использовал метод построителя setTapAction указать PendingIntent, указывающий на действие, отображающее всю информацию для данного события. Затем циферблат несет ответственность за запуск этого PendingIntent на кране пользователя.

На следующей картинке мы видим окончательный результат. Слева направо открытые расширения с типами «Короткий текст» и «Длинный текст» отображаются на двух разных циферблатах, а в действии отображаются сведения о событии.

Скриншоты созданных усложнений
Результат: усложнения «Короткий текст» и «Длинный текст», а также действие, запускаемое по нажатию (Просмотреть большую версию)

Обновление данных

Можно указать период обновления для ComplicationProviderService в своей записи манифеста, используя следующий ключ:

android.support.wearable.complications.UPDATE_PERIOD_SECONDS

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

В нашем случае данные усложнения меняются не часто, и приложение для телефона уже обрабатывает эту логику обновления синхронизированных данных. Тогда я решил быть хорошим гражданином и использовать механизм обновления в стиле push.

Во-первых, я отключил автоматическое обновление данных, установив параметр UPDATE_PERIOD_SECONDS ценность для 0 в манифесте.

Затем я использовал WearableListenerService чтобы получать обратный вызов каждый раз, когда некоторые обновленные данные синхронизируются для данного URI. В данном случае это тот, который я использовал для синхронизации данных между mobile и wear. Когда это происходит, я вручную запрашиваю обновление, используя ProviderUpdateRequester:


public class DataChangedListenerService extends WearableListenerService {

    @Override
    public void onDataChanged(DataEventBuffer dataEventBuffer) {
        super.onDataChanged(dataEventBuffer);
        ComponentName providerComponentName = new ComponentName(
            context, 
            MyComplicationProviderService.class
        );
        ProviderUpdateRequester providerUpdateRequester = new
            ProviderUpdateRequester(context, providerComponentName);
        providerUpdateRequester.requestUpdateAll();
    }

} 

Весь код для этой статьи доступен на GitHub.

Вы увидите, как легко обновить существующее приложение для синхронизации данных между телефоном и смарт-часами, а затем отобразить их на циферблате с помощью нового API-интерфейса осложнений.

Вывод

Благодаря Complications API каждое приложение для Android может легко экспортировать наиболее важные данные и сделать их доступными с первого взгляда прямо на запястье пользователя, даже не требуя специального циферблата.

На момент написания этот API все еще находится в состоянии предварительного просмотра, поэтому он может измениться до окончательного выпуска Android Wear 2.0, но его потенциал уже очень интересен.

Если многие приложения будут обновлены для использования этого нового API, у нас будет процветающая экосистема усложнений, из которых пользователи смогут выбирать, с информативными циферблатами и значительным увеличением полезности наших подключенных устройств!

Для получения дополнительной информации об API усложнений, пожалуйста, ознакомьтесь с официальной документацией.

Сокрушительная редакция
(да, ык, ал, ил)




Source: https://smashingmagazine.com

Заключение

Вы ознакомились с статьей — Перенос данных вашего приложения на запястье каждого пользователя с помощью Android Wear

Пожалуйста оцените статью, и напишите комментарий.

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован.

Краткое описание по статье Перенос данных вашего приложения на запястье каждого пользователя с помощью Android Wear

Название: Перенос данных вашего приложения на запястье каждого пользователя с помощью Android Wear . Краткое описание: ⭐ Даниэле Бо . Дата публикации: 01.02.2022 . Автор: Алишер Валеев .

Для чего создан сайт Novosti-Nedeli.ru

Данный сайт посвящен новостям мира и мира технологий . Также тут вы найдете руководства по различным девайсам.

Сколько лет сайту?

Возраст составляет 3 года

Кнопка «Наверх»