Как написать приложение для часов

Apple Watch завоевали любовь пользователей и стали не просто аксессуаром, а полезным и удобным девайсом. Функциональное дополнение к смартфону, которое сокращает время использования телефона и упрощает доступ к функциям.

“Умные” часы соединяются с iPhone, чтобы показывать уведомления, отвечать на звонки, отправлять сообщения. Apple Watch ценятся за свою пользу, ненавязчивость и мобильность, так как часами человек пользуется на ходу.

Часы стали самостоятельным устройством и вопрос разработки для них отдельных приложений актуализировался. Обычно часы зависят от приложений, которые установлены на связанном iPhone. Можно ли разработать независимое приложение для Apple Watch и как это сделать — попробуем разобраться.

Как работают Apple Watch?

Приложения watchOS встроены в приложения iOS. То есть, когда вы устанавливаете приложение iOS на iPhone, содержащее внутри приложение для watchOS, оно автоматически передается на часы по Bluetooth (если в этот момент устройства подключены друг к другу).

Сами часы работают на операционной системе watchOS. Она основана на iOS и имеет много схожих функций.

Чтобы разработчики могли строить собственные решения для часов, существует WatchKit. WatchKit — это фреймворк, который предоставляет инфраструктуру для создания приложений watchOS.

Само приложение состоит из двух частей: WatchKit app (приложение) и WatchKit extension (расширение). Первое загружается в сами часы и содержит экраны и статические ресурсы. Задача WatchKit app определить, что пользователь взаимодействовал с элементами интерфейса и передать запрос в WatchKit extension, который работает на связанном iPhone. Расширение отвечает за реализацию логики работы в приложении и обновляет данные для WatchKit app.

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

Рассмотрим работу и взаимодействие WatchKit приложения и расширения подробнее.

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

Расширения — отдельные бинарные файлы, являются частью пакета приложения для iOS, своего рода родительского приложения. После того как iOS приложение, в котором содержится расширение WatchKit, установлено на iPhone, оно становится доступно с устройства часов. Когда пользователь запустит приложение на часах, WatchKit запустит соответствующее расширение на подключенном iPhone и начнет процесс инициализации приложения.

Зависимость двух устройств друг от друга создает ограничения. Поэтому с выпуском новых версий систем и устройств Apple представили независимые приложения для часов.

Независимые приложения для часов

Начиная с 2019 года Apple позволили создавать независимые приложения для часов.

Сегодня разработчики создают приложения только для Apple Watch без сопутствующего приложения для iOS. Готовый продукт публикуется в App Store для часов.

При создании проекта в Xcode теперь доступно две опции: Watch App и Watch App for iOS App — fully independent или dependent приложение для часов.

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

Часы можно использовать как ключи (для машины, для дома), при этом вам не нужно брать с собой телефон. Утренние пробежки и занятия спортом тоже могут стать более мобильными: измерение пульса, ритма и даже музыкальный плеер будут доступны на кисти руки. Помимо таких вещей как будильник, заметки и прочих полезных вещей для организации, на Apple Watch можно даже поиграть в игры. Например, сыграть партию в шахматы в ожидании назначенной встречи.

Создание приложений watchOS на no-code

Приложения для большинства устройств Applе создаются на языке Swift с использованием фреймворка SwiftUI. SwiftUI — набор инструментов для создания интерфейса приложения. Фреймворк относится к декларативному программированию, которое значительно упрощает разработку. Отличие декларативного программирования в том, что при таком подходе не нужно составлять детальный алгоритм, описывающий как получить желаемый результат. Достаточно объяснить то, каким мы хотим видеть пользовательский интерфейс.

Именно так работает SwiftUI, при использовании которого указывается, что должно получиться в результате, а не то “как” это должно произойти. SwiftUI уже причисляют к low-code технологиям за минимум кода.

Более того, если вы пишете код на SwiftUI для приложения, без глобальных изменений он заработает на любом из устройств Apple: часах, iPhone, даже TV.

Если переносить разработку на no-code платформу, такую как AppMaster, она становится еще проще. AppMaster уже использует Swift для разработки iOS приложений.

Вы можете работать с платформой по трем сценариям:

  • создать полностью независимое приложение для Apple Watch и опубликовать его в App Store;
  • конвертировать приложение iOS и создать для него зависимое приложение для часов;
  • создать пару приложений: для iOS и watchOS.

No-code инструмент предоставляет доступ к гибкому drag & drop дизайнеру, позволяя быстро собрать экраны приложения без написания кода. По такому же принципу строится работа с логикой. Здесь вы используете отдельные блоки, из которых собираете бизнес-процессы.

На самом деле AppMaster делает работу за вас: генерирует исходный код вашего приложения, следуя направлению, которое вы задаете в бизнес-процессах. Даже базу данных можно собрать, используя все те же блоки.

Все основано на drag & drop технологии, что в разы оптимизирует процесс разработки.

С чем могут возникнуть сложности в разработке приложений для часов?

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

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

Отвечая на наш вопрос “можно ли создать приложение для watchOS на no-code платформе”, мы говорим — да. No-code упростит разработку, но есть ограничения по части дизайна, которые можно обойти, подключив дизайн-билдер.

Стоит ли создавать приложения для часов

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

А с такими инструментами, как AppMaster, создание приложений превратится в простой процесс, но с отличным результатом.

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

Создаём новый проект. Главное отличие — отметьте флажком оба пункта Phone and Tablet и Wear.

Далее вам предложат выбрать шаблон активности для телефона/планшета — Add an activity to Mobile. Этот шаг вам знаком по обычным приложениям. Выбираем Blank Activity и определяем названия активности, меню и т.д.

Затем появится новое окно, не встречавшееся ранее — Add an activity to Wear. Выбираем вариант Blank Wear Activity.

Add an activity to Wear

В следующем окне выберите имя для активности. Чтобы не путаться, я предпочёл изменить имя по умолчанию на WearMainActivity.

WearMainActivity

Кнопка Finish завершает работу мастера.

Среда разработки создаст два модуля mobile и wear. Считайте, что у вас два отдельных проекта. У каждого модуля свои настройки, ресурсы, пакеты.

Эмуляторы телефона/планшета и часов должны быть запущены.

Проверим работу проекта. Сначала запустим модуль mobile. Когда будете нажимать на зелёный треугольник, то обращайте внимание на выпадающий список слева. Там должно быть слово mobile. Также можно использовать меню Run и выбирать пункт Run….

mobile module

Дождитесь запуска приложения на эмуляторе устройства. Появится обычное приложение «Hello World!».

Теперь запустим модуль wear. Выберем данный модуль из выпадающего списка и опять нажимаем на кнопку Run.

Приложение «Hello Round World!» должно загрузиться на эмуляторе часов (если запущен эмулятор для круглых часов). Естественно, мы не можем оставить программу в таком виде. В модуле wear ищем файл res/values/strings.xml и редактируем его.


<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">WearableApp</string>
    <string name="hello_round">Hello Kitty (Round)!</string>
    <string name="hello_square">Hello Kitty (Square)!</string>

</resources>

Совсем другое дело!

Hello Round World!

Пора сделать перерыв и погладить кота.

Реклама

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

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

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

1. Умные часы

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

Большинство умных часов, начинали использоваться «в связке» со смартфоном. Однако все меняется очень быстро. В настоящее время доступны несколько автономных умных часов, которым не нужно сопряжение со смартфоном. Последние нововведения в значительной степени улучшили и усовершенствовали взаимодействие с пользователем и пользовательский опыт (UX).

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

1.1 Android Wear

Android Wear — одна из ведущих платформ созданная для умных часов и других носимых устройств. Ее последняя версия, Android Wear 2.0, устранила многие проблемы предыдущих версий и поставляется с некоторыми действительно классными функциями. Умные часы, работающие на этой платформе, теперь могут работать как автономные устройства, а это значит, что им больше не нужно сопряжение со смартфоном. Пользовательский интерфейс (UI) стал более утонченным, удобочитаемым и простым в навигации, чем когда-либо прежде. Они также оснащены полноценной QWERTY-клавиатурой, так что пользователь может печатать на самом устройстве. Самая крутая штука в том, что они могут напрямую получить доступ к магазину Google Play, не сопрягаясь со смартфоном для подключения.

Стало понятно, что Android Wear предлагает отличные возможности для разработчиков. Вы можете начать разрабатывать либо циферблаты, либо другие приложения Android Wear. Вы можете экспериментировать с широким спектром поддерживаемых датчиков, включая Bluetooth, WiFi, LTE, GPS, NFC и датчиком пульса. Android Wear 2.0 теперь поддерживает сторонние методы ввода. Поэтому, если вы подумываете о разработке инновационной легкой клавиатуры для часов, это может быть подходящее время для этого.

1.2 Apple Watch

Последняя модель Apple Watch Series 3, имеет два варианта. Только один вариант имеет опциональную сотовую связь LTE, но оба они оснащены встроенным GPS. При этом один из них может работать в автономном режиме, оба оптимизированы для использования вместе со смартфоном. Вы могли бы придумать какие-нибудь странные и инновационные идеи для приложений, чтобы использовать встроенный GPS, LTE-соединение, высотомер и Siri, голосовой помощник.

Apple также недавно выпустила watchOS 4, последнюю версию своей операционной системы. Они исправили некоторые ошибки и проблемы, особенно связанные с подключением к LTE. Вам не нужно много волноваться о привязке его к внешнему миру и больше сосредоточиться на бизнесе разработки приложений.

1.3 Samsung Gear S Series

Хотя Tizen не так популярен, как Android или iOS среди пользователей смартфонов, это действительно известное имя в секторе смарт-часов. Умные часы Samsung Gear, работающие на Tizen OS, занимают вторую по величине долю рынка в этом секторе.

При разработке приложений вы должны учитывать уникальные функции часов. Эти функции включают в себя: распознавание речи, GPS, покупки в приложении и специальный (UI) элемент пользовательского интерфейса под названием Widget, который обеспечивает легкий доступ к часто используемым задачам. Самая последняя версия — Gear S3, также может использоваться как автономное устройство. Вам просто нужно использовать для разработки Tizen Studio, чтобы сделать вашу идею приложения реальностью.

2. Фитнес-трекеры и трекеры активности

Некоторые вендоры создали носимые устройства, которые удовлетворяют конкретные потребности определенных рыночных ниш, вместо того, чтобы пытаться создавать миниатюрные смартфоны. Один из таких нишевых рынков состоит из атлетов, спортсменов и любителей приключений на открытом воздухе.

Носимые устройства для этого сектора не пытаются заменить смартфоны своих пользователей. Вместо этого они с большей вероятностью заменят обычные наручные часы. Эти устройства предоставляют более точную обратную связь для занимающихся спортом пользователей. Большинство устройств имеют урезанную версию ОС и аппаратных функций, чтобы пользователи могли сосредоточиться на своей специализированной работе. Это позволяет значительно улучшить время автономной работы батареи.

2.1 Fitbit

Fitbit — это трекер активности, который одновременно работает как часы. Он сопрягается со смартфоном для предоставления исчерпывающих отчетов об эффективности тренировок пользователя. Пользователи могут устанавливать ежедневные цели, такие как количество сжигаемых калорий, а затем просматривать их прогресс в течение определенного периода времени. Разработка приложений для Fitbit очень проста, если у вас есть опыт работы с JavaScript, CSS и SVG. Fitbit OS — это интеллектуальная часть программного обеспечения, которая делает этот фитнес-трекер очень интересным и простым в использовании.

Fitbit Studio — это официальная среда IDE для Fitbit OS, которую вы можете использовать для разработки приложений и циферблатов. Если вы хотите распространять свои приложения, можете сделать это, загрузив их в галерею приложений.

2.2 Garmin

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

Вы можете использовать SDK для подключения к Connect IQ SDK от Garmin и выбрать из серии API, например таких, как Health API, Connect API и нескольких других для разработки приложений.

2.3 Samsung Gear Fit

В то время как Gear S — это полноценные умные часы, Gear Fit относится ближе к рынку фитнес-трекеров. Вы можете использовать те же инструменты, которые использовались для Gear S, это единственное, что вам нужно знать об этой уникальной роли фитнес-трекера.

3. Умные очки

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

Эти умные очки могут использоваться в различных ситуациях, от обычных потребительских приложений до высокотехнологичных и промышленных задач. Отличным примером является ремонт оборудования. Фактически, техник мог бы видеть оборудование через умные очки и приложение дополненной реальности (AR). Которое обеспечило бы хорошую помощь, идентифицируя всё к чему прикасается техник и отображая информацию накладывая ее на объекты реального мира.

3.1 Epson Moverio

Компания Epson была пионером в этом секторе, и вот ее последние модели Moverio версии: Moverio BT-300, BT-350 и BT-2000 Pro. Хотя они не поддерживают мобильную передачу данных, вы можете использовать встроенный Wi-Fi или Bluetooth для подключения к любому поддерживаемому устройству.

Умные очки от Epson используют операционную систему Android и укомплектованы рядом датчиков: GPS, геомагнитный датчик, акселерометр, гироскоп и датчик освещенности. Теперь вы тоже можете стать разработчиком AR приложений, зарегистрировавшись на их веб-сайте. Вы можете использовать Moverio SDK, а также оптимизированные инструменты для создания приложений.

3.2 Daqri

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

3.3 Sony SmartEyeglass

Умные очки Sony SmartEyeglass в первую очередь нацелены на разработчиков, которые хотят экспериментировать с новейшими приложениями дополненной реальности (AR). Очки оснащены встроенной камерой, микрофоном, акселерометром, гироскопом, компасом и сенсором освещённости. На их бинокулярных сквозных объективах появляется слой монохромного зеленого текста, предоставляющий пользователю информацию.

Для работы эти очки должны быть сопряжены со смартфоном. Sony также выпустила SDK, что позволяет разработчикам экспериментировать с некоторыми замечательными идеями приложений.

3.4 Vuzix

Компания Vuzix предлагает широкий ассортимент носимых устройств, включая умные очки, умные солнцезащитные очки и видео очки. Они могут обслуживать как обычных потребителей, так и специалистов, и могут охватывать широкий спектр приложений, таких как промышленные, медицинские, розничные, удаленные службы поддержки и многое другое. Не забудьте зарегистрироваться на веб-сайте разработчика и начните разработку загрузив SDK.

4. Шлемы виртуальной реальности (VR-шлемы) 

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

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

Современные шлемы виртуальной реальности (VR) оснащены множеством датчиков, которые связанны с пространственными, магнитными, оптическими и тепловыми данными среды пользователя. Они способны предоставить владельцу одевшему их — вид реального мира, виртуального мира или сочетания их обоих. Это делает шлемы действительно мощными устройствами, которые могут оказать большое влияние на всех.

Вот некоторые из самых популярных шлемов виртуальной реальности (VR).

4.1 HTC Vive

VR-шлем Vive от компании HTC поставляется с полным набором аксессуаров, которые помогают создавать реалистичные VR пространства, называемые игровыми зонами. Пользователям необходимо настроить шлем вместе с аксессуарами и определить игровые зоны перед их использованием. Если вы хотите публиковать приложения VR, просто зарегистрируйтесь как разработчик в магазине приложений Vive, который называется Viveport и начните создавать новые миры с помощью Viveport SDK. SDK поддерживает несколько операционных систем ОС и игровых движков, поэтому вы можете выбрать наиболее подходящую вам версию. Вы можете публиковать свои VR-игры в популярном магазине приложений SteamVR.

4.2 Oculus Rift

Еще одна ведущая платформа в области VR — Oculus. Предлагает отличное взаимодействие с пользователем и VR опыт. Средства разработки SDK также доступны в нескольких пакетах, включая платформу Platform SDK и утилиты для игрового движка Unity. Популярный игровой движок Unreal также предлагает встроенную поддержку для разработки приложений для Oculus.

4.3 Samsung Gear VR

Samsung Gear VR не является автономным VR-шлемом, только устройством которое поддерживает совместимость со смартфонами, предлагающими VR опыт. Компания Samsung выпустила его в сотрудничестве с Oculus, и он поддерживает флагманские телефоны Samsung. Устройство выступает в качестве контроллера, обеспечивая оптику, а также механизмы отслеживания головы и т. д. Оно подключается к смартфону через USB и должно быть откалибровано перед использованием. Хотя настройка среды разработки может занять некоторое время — это того стоит, чтобы стать разработчиком одной из новейших технологий которая доступна сегодня.

4.4 Google Daydream View

Шлем Daydream View похож на Gear VR, но он покрыт тканью и весит намного меньше, чем устройство Samsung. Недавно компания Google начала сотрудничать с Lenovo в создании автономного VR-шлема, но это еще не все. Тем временем Google предлагает четыре SDK для разработчиков, чтобы у них была возможность выбрать между Android, Unity, Unreal или iOS в качестве основной платформы разработки.

4.5 Sony PlayStation VR

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

4.6 Windows Mixed Reality

В то время как большинство других VR-шлемов полагаются на внешние датчики для отслеживания движения, в шлемах смешанной реальности Windows Mixed Reality все датчики встроенные. Поэтому нет необходимости создавать пространства в качестве игровых зон (как в случае с HTC Vive), но это означает, что возможности отслеживания относительно ограничены.

Есть несколько производителей, которые изготавливают шлемы смешанной реальности Windows Mixed Reality. Среди них — Lenovo, HP, Samsung, Acer и Dell. На веб-сайте разработчика Microsoft HoloLens есть множество статей и других ресурсов, которые помогут вам приступить к работе.

4.7 Google Cardboard

Это самый низкотехнологичный элемент из всего ультра хай-тек списка: попытка Google привнести опыт использования VR в массы по очень низкой цене. Устройство Google Cardboard фактически изготовлено из картона и держит смартфон и пластиковые линзы для предоставления возможности получить VR-опыт. Компания Google также опубликовала полный комплект для изготовления самостоятельно, чтобы разработчики могли начать создавать все с нуля. Единственное, что им нужно купить — это смартфон и линзы.

5. Смарт кольца

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

5.1 Talon

Умные кольца Talon могут подключаться к различным устройствам от смартфонов до планшетов и смарт-телевизоров. Кроме того, они также могут использоваться в качестве пульта дистанционного управления для включения или выключения интеллектуального освещения. Совершенно новый мир открывается, когда вы думаете о приложениях, которые могут быть созданы. Вы можете управлять другими устройствами или усовершенствовать пользовательский опыт (UX) использования этих приложений. Просто зарегистрируйтесь в качестве Talon разработчика и запросите доступ к SDK. И вы очень скоро начнете создавать удивительные, футуристические приложения.

5.2 NFC Ring

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

Вывод

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

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

У нас также есть видео курсы, которые покажут вам, как создать приложение для носимых устройств от начала до конца для популярных платформ Android Wear или Apple watchOS.

В этом уроке мы разберем, как создать проект для часов. Для этого вам понадобится Tizen Studio. Описание установки среды разработки смотрите во 2-м уроке.

Создание приложения из списка шаблонов

Откройте Tizen Studio, выберите папку, в которую будут сохраняться ваши проекты. При первом запуске среда настроена на Web перспективу. В этом уроке мы расскажем, как создать нативное приложение, поэтому переключитесь на Native perspective.

./wp-content/uploads/lesson-n/007/nw_007_01_en.mp4

Создать новый проект можно используя шаблон или загрузив онлайн пример. Создайте шаблон. Выберите File → New → Tizen Project или кликните на иконку Create new project в Package Explorer.

./wp-content/uploads/lesson-n/007/nw_007_02_en.mp4

В окне New Tizen Project выберите Template. Выберите профиль Wearable версия — v2.3.1. Тип приложения — Native Application.

./wp-content/uploads/lesson-n/007/nw_007_03_en.mp4

В очередной раз нажав кнопку Next, перед вами появится список доступных шаблонов. Создайте пустой шаблон UI приложения с файлом разметки EDC. Для этого выберите Basic UI, укажите имя проекта и название пакета. Имя пакета (Package id) должно быть уникальным. С его помощью ваше приложение будет идентифицировано на Samsung Galaxy Apps. Нажмите Finish.

./wp-content/uploads/lesson-n/007/nw_007_04_en.mp4

Таким образом, вы создали шаблон ui-приложения с базовым графическим интерфейсом для носимого устройства.

Основные настройки приложения

После того как мастер проектов создал шаблон, перед вами появится Tizen Manifest, в котором вы можете выполнить дальнейшую настройку приложения и просмотреть общую информацию о нем. Манифест открывается с помощью Tizen Manifest Editor. Пройдемся по вкладкам.

nw_007_05_en

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

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

Важно:

Если вы использовали какую-нибудь фичу, но не указали ее в своем манифесте — вы не сможете поместить свое приложение в магазине, то же самое касается ситуации, когда вы объявили фичу, но не используете ее в приложении.

nw_007_06_en

Privileges: список используемых вашим приложением разрешений. К примеру, если приложение работает с сетью, необходимо добавить соответствующее разрешение. В описании каждой функции Tizen SDK есть список привилегий, необходимых для ее использования.

Localization: локализация имени, описания и иконки приложения.

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

Во вкладке Source можно посмотреть код манифеста, как он есть, в виде xml файла.

Структура проекта

Рассмотрим структуру проекта. Сейчас в вашем workspace в дереве проектов, по умолчанию, находится один проект — ваш шаблон. Откройте его.

nw_007_07_en

Папка inc — для заголовочных файлов, папка src — для исходников, а в папке res хранятся ресурсы приложения: картинки, макеты и прочее. Во время выполнения программы эта папка имеет режим доступа: только для чтения. В папке lib находятся сторонние библиотеки. В папку shared, с read-write доступом, можно поместить ресурсы, которые будут доступны для других приложений.

Запуск приложения

Теперь соберите ваш проект. Для этого правой кнопкой мыши на проекте вызовите контекстное меню, выберите Build Project или используйте горячую клавишу — F10. Еще один способ вызвать сборку приложения — это выбрать во вкладке Project → Build Project. Также вы можете настроить ваш проект на автоматическую сборку Project → Build Automatically (проект будет собираться после каждого сохранения). Следующий шаг, запустите приложение на устройстве Run As → 1 Tizen Native Project, Ctrl + F11, Run → Run. Запуск приложения, если настроен автоматический режим, инициирует его сборку. Как создать эмулятор или подключиться к устройству, смотрите в уроке 3 и уроке 4.

После успешного запуска вы увидите свое первое приложение.

nw_007_08_en

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

Разработка мобильных приложений, Разработка под Android, Разработка для интернета вещей, Блог компании MobileUp


Рекомендация: подборка платных и бесплатных курсов Smm — https://katalog-kursov.ru/

18 марта Google переименовала операционную систему для носимой электроники Android Wear и начала распространять её под именем Wear OS, чтобы привлечь новую аудиторию. Компания опубликовала новые дизайн-гайдлайны и обновила документацию. Когда я начал разработку приложения для часов, не нашел ни одной русскоязычной публикации на эту тему. Поэтому хочу поделиться своим опытом и рассказать подробнее про Wear OS, из чего она состоит и как с ней работать. Всех небезразличных к мобильным технологиям прошу под кат.

Начиная с версии Android Wear 2.0, система научилась работать с «Standalone Apps» – полностью независимыми wearable-приложениями. Пользователь может установить их с нативного Google Play прямо на часы. Wear OS – это практически независимая система, которая всё ещё продолжает работать в рамках инфраструктуры Google Services, дополняя её, но не привязываясь к ней.

Android, но не очень

Как бы Google ни позиционировала Wear OS, платформа основана на Android со всеми его особенностями, прелестями и недостатками. Поэтому, если вы уже знакомы с Android-разработкой, то сложностей с Wear OS возникнуть не должно. Wear OS почти не отличается от своего «старшего брата», за исключением отсутствия некоторых пакетов:

  • android.webkit
  • android.print
  • android.app.backup
  • android.appwidget
  • android.hardware.usb

Да, браузер на часах мы в ближайшее время не сможем увидеть из-за отсутствия Webkit. Но серфить на часах будет всё равно неудобно. У нас по-прежнему есть великий и ужасный Android Framework с Support Library и Google Services. Структурных и архитектурных отличий тоже будет мало.

Структура приложения

Предположим, мы решили сделать wearable-приложение. Открыли Android Studio, нажали «New project» и поставили галочку напротив «Wear». Мы сразу обнаружим, что в пакете нашего приложения появилось два модуля: wear и mobile.

Упрощенная оригинальная схема

Собираться эти два модуля будут в два разных .apk файла. Но они должны иметь одно название пакета, и при публикации должны быть подписаны одним релизным сертификатом. Это нужно только для того, чтобы приложения могли друг с другом взаимодействовать через Google Services. Мы к этому вернемся чуть позже. В принципе, ничто не мешает нам собрать приложение только на Wear OS, откинув мобильную платформу в сторону.

Clean architecture?

А почему бы и нет? Это такое же Android-приложение, поэтому архитектурные подходы для него могут быть схожие с Android.

Упрощенная оригинальная схема

Я использовал такой же стек технологий, который мы используем в Android-приложениях:

  • Kotlin
  • Clean architecture
  • RxPM (как презентационный паттерн)
  • Koin (для реализации DI)
  • RxJava (просто дело вкуса)

У нас два модуля в проекте, и модели данных, скорее всего, будут одинаковые для обеих платформ. Поэтому часть логики и моделей можно вынести в ещё один модуль «common». Затем подключить его к mobile и wearable пакетам, чтобы не дублировать код.

UI

Одна из главных особенностей Android-разработки – обилие девайсов разного размера и с разным разрешением экрана. В Wear OS, ещё и разная форма экрана: круглый, квадратный и круглый с обрезанным краем.
Если мы попробуем сверстать какой-либо лейаут и отобразить его на разных экранах, скорее всего, увидим примерно такой вот кошмар:

поехавшая верстка

Во второй версии системы Google любезно решила часть UI-проблем, включив в Support wearable library новые адаптивные view-компоненты. Пробежимся по самым любопытным из них.

BoxInsetLayout

BoxInsetLayout – это FrameLayout, который умеет адаптировать дочерние элементы под круглый дисплей. Он помещает их в прямоугольную область, вписанную в окружность экрана. Для квадратных дисплеев подобные преобразования, само собой, игнорируются.

BoxInsetLayout

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

Правильная верстка

Выглядит лучше, не правда ли?

WearableRecyclerView

Списки – удобный паттерн, который активно используется в мобильном (и не только) UX. Wear-интерфейсы исключением не стали. Но из-за закругления углов дисплея верхние View у списка могут обрезаться. WearableRecyclerView помогает исправить такие недоразумения.
Например, есть параметр isEdgeItemsCenteringEnabled, который позволяет задать компоновку элементов по изгибу экрана и расширять центральный элемент, делает список более удобным для чтения на маленьком экране.
Есть WearableLinearLayoutManager, который позволяет прокручивать список механическим колесиком на часах и доскроливать крайние элементы до середины экрана, что очень удобно на круглых интерфейсах.

Wearable RecyclerView

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

Рисовать данные на экране – весело, но эти данные нужно откуда-то получать. В случае мобильного клиента, мы чаще используем REST API поверх привычных всем сетевых протоколов (HTTP/TCP). В Wear OS подобный подход тоже допустим, но Google его не рекомендует.
В носимой электронике большую роль играет энергоэффективность. А активное интернет-соединение будет быстро сажать батарею, и могут регулярно происходить разрывы связи. Ещё носимые устройства предполагают активную синхронизацию, которую тоже нужно реализовывать.
Все эти проблемы за нас любезно решает механизм обмена данными в Google Services под названием «Data Layer». Классы для работы с ним нашли свое место в пакете com.google.android.gms.wearable.

Data Layer

Data Layer помогает синхронизировать данные между всеми носимыми устройствами, привязанными к одному Google аккаунта пользователя. Он выбирает наиболее оптимальный маршрут для обмена данными (bluetooth, network) и реализует стабильную передачу. Это гарантирует, что сообщение дойдет до нужного девайса.

Data Layer

Data Layer состоит из пяти основных элементов:

  • Data Items
  • Assets
  • Messages
  • Channels
  • Capabilities

Data Item

Data Item – компонент, который предназначен для синхронизации небольших объемов данных между устройствами в wearable-инфраструктуре. Работать с ними можно через Data Client. Вся синхронизация реализуется через Google сервисы.

DataItem состоит из трёх частей:

  • payload – это полезная нагрузка в 100kb, представленная в виде ByteArray. Это выглядит немного абстрактно, поэтому сами Google рекомендуют класть туда какую-нибудь key-value структуру вроде Bundle или Map<String, Any>.
  • patch – это путь-идентификатор, по которому мы можем опознать наш DataItem. Дело в том, что Data Client хранит все DataItem’ы в линейной структуре, что подходит не для всех кейсов. Если нам надо отразить какую-то иерархию данных, то придется делать это самостоятельно, различая объекты по URI.
  • Assets – это отдельная структура, которая в самом DataItem’е не хранится, но он может иметь ссылку на нее. О ней поговорим позже.

Давайте попробуем создать и сохранить DataItem. Для этого воспользуемся PutDataRequest, которому передадим все нужные параметры. Затем PutDataRequest скормим DataClient’у в метод putDataItem().

Для удобства есть DataMapItem, в котором уже решена проблема сериализации. С его помощью мы можем работать с данными, как с Bundle-объектом, в который можно сохранять примитивы.

val dataClient = Wearable.getDataClient(context)
val dataRequest = PutDataMapRequest.create(PATCH_COFFEE).apply {
   dataMap.putString(KEY_COFFEE_SPECIEES, "Arabica")
   dataMap.putString(KEY_COFFEE_TYPE, "Latte")
   dataMap.putInt(KEY_COFFEE_SPOONS_OF_SUGAR, 2)
}
val putDataRequest = dataRequest.asPutDataRequest()
dataClient.putDataItem(putDataRequest)

Теперь наш DataItem хранится в DataClient’е, и мы можем получить к нему доступ со всех Wearable-девайсов.
Теперь мы можем забрать у DataClient список всех Item’ов, найти тот, который нас интересует, и распарсить его:

dataClient.dataItems.addOnSuccessListener { dataItems ->
   dataItems.forEach { item ->
       if (item.uri.path == PATCH_COFFEE) {
           val mapItem = DataMapItem.fromDataItem(item)
           val coffee = Coffee(
                   mapItem.dataMap.getString(KEY_COFFEE_SPECIES),
                   mapItem.dataMap.getString(KEY_COFFEE_TYPE),
                   mapItem.dataMap.getInt(KEY_COFFEE_SPOONS_OF_SUGAR)
           )
           coffeeReceived(coffee)
       }
   }
}

Assets

А теперь давайте представим, что нам внезапно потребовалось отправить на часы фотографию, аудио или еще какой-то файл. DataItem с такой нагрузкой не справится, потому как предназначен для быстрой синхронизации, а вот Asset может. Механизм синхронизации ассетов предназначен для сохранения файлов размером более 100kb в wearable-инфраструктуре и плотно связан с DataClient’ом.
Как упоминалось ранее, DataItem может иметь ссылку на Asset, но сами данные сохраняются отдельно. Возможен сценарий, когда Item сохранился быстрее Asset, а файл всё еще продолжает загружаться.

Создать Asset можно с помощью Asset.createFrom[Uri/Bytes/Ref/Fd], после чего передать его в DataItem:

val dataClient = Wearable.getDataClient(context)
val dataRequest = PutDataMapRequest.create(PATCH_COFFEE).apply {
   dataMap.putString(KEY_COFFEE_SPECIES, "Arabica")
   dataMap.putString(KEY_COFFEE_TYPE, "Latte")
   dataMap.putInt(KEY_COFFEE_SPOONS_OF_SUGAR, 2)
   // Добавляем фото
   val asset = Asset.createFromUri(Uri.parse(COFFEE_PHOTO_PATCH))
   dataMap.putAsset(KEY_COFFEE_PHOTO, asset)
}
val putDataRequest = dataRequest.asPutDataRequest()
dataClient.putDataItem(putDataRequest)

Чтобы загрузить Asset на другой стороне, нужно открыть inputStream, получить сам массив байт, а затем представить его в нужной нам форме:

dataClient.dataItems.addOnSuccessListener { dataItems ->
   dataItems.forEach { item ->
       if (item.uri.path == PATCH_COFFEE) {
           val mapItem = DataMapItem.fromDataItem(item)
           val asset = mapItem.dataMap.getAsset(KEY_COFFEE_PHOTO)
           val coffee = Coffee(
                   mapItem.dataMap.getString(KEY_COFFEE_SPECIES),
                   mapItem.dataMap.getString(KEY_COFFEE_TYPE),
                   mapItem.dataMap.getInt(KEY_COFFEE_SPOONS_OF_SUGAR),
                   // Сохраняем файл из Asset
                   saveFileFromAsset(asset, COFFEE_PHOTO_PATCH)
           )
           coffeeReceived(coffee)
       }
   }
}

private fun saveFileFromAsset(asset: Asset, name: String): String {
   val imageFile = File(context.filesDir, name)
   if (!imageFile.exists()) {
       Tasks.await(dataClient.getFdForAsset(asset)).inputStream.use { inputStream ->
           val bitmap = BitmapFactory.decodeStream(inputStream)
           bitmap.compress(Bitmap.CompressFormat.JPEG, 100, imageFile.outputStream())
       }
   }
   return imageFile.absolutePath
}

Capabilities

Сеть носимых девайсов может быть гораздо шире, чем два устройства, соединенные по Bluetooth, и включать в себя десятки девайсов. Представим ситуацию, когда нужно отправить сообщение не на все устройства, а на какие-то конкретные часы. Нужен способ для идентификации устройств в этой сети. Способ есть – это механизм Capabilities. Смысл его очень прост – любой девайс-участник сети с помощью CapabilitiesClient может узнать, какое множество узлов поддерживает ту или иную функцию, и отправить сообщение именно на один из этих узлов.
Для того чтобы добавить Capabilities в наше wearable-приложение, нужно создать файл res/values/wear.xml и записать туда массив строк, которые и будут обозначать наши Capabilities. Звучит довольно просто. На практике тоже ничего сложного:

wear.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string-array name="android_wear_capabilities">
       <item>capability_coffee</item>
   </string-array>
</resources>

На стороне другого устройства:

fun getCoffeeNodes(capabilityReceiver: (nodes: Set<Node>) -> Unit) {
   val capabilityClient = Wearable.getCapabilityClient(context)
   capabilityClient
       .getCapability(CAPABILITY_COFFEE, CapabilityClient.FILTER_REACHABLE)
       .addOnSuccessListener { nodes ->
           capabilityReceiver.invoke(nodes.nodes)
       }
}

Если у вас, как и у меня, развился Rx головного мозга, то от себя порекомендую расширение для объекта Task. Этот объект довольно часто фигурирует во фреймворках от Google (в т.ч. Firebase):

fun <T : Any?> Task<T>.toSingle(fromCompleteListener: Boolean = true): Single<T> {
   return Single.create<T> { emitter ->
       if (fromCompleteListener) {
           addOnCompleteListener {
               if (it.exception != null) {
                   emitter.onError(it.exception!!)
               } else {
                   emitter.onSuccess(it.result)
               }
           }
       } else {
           addOnSuccessListener { emitter.onSuccess(it) }
           addOnFailureListener { emitter.onError(it) }
       }
   }
}

Тогда цепочка для получения Nodes будет выглядеть красивее:

override fun getCoffeeNodes(): Single<Set<Node>> =
    Wearable.getCapabilityClient(context)
        .getCapability(CAPABILITY_COFFEE, CapabilityClient.FILTER_REACHABLE)
        .toSingle()
        .map { it.nodes }

Messages

Все предыдущие компоненты Data Layer предполагали кэширование данных. Message помогает отправлять сообщения без синхронизации в формате «отправили и заб(ы|и)ли». Причем отправить сообщение можно только на конкретный узел или на конкретное множество узлов, которые предварительно необходимо получить через CapabilitiesClient:

fun sendMessage(message: ByteArray, node: Node) {
   val messageClient = Wearable.getMessageClient(context)
   messageClient.sendMessage(node.id, PATCH_COFFEE_MESSAGE, message)
       .addOnSuccessListener {
           // Success :)
       }
       .addOnFailureListener {
           // Error :(
       }
}

Потенциальный получатель сообщения, в свою очередь, должен подписаться на получение сообщений, и найти нужное по его URI:

val messageClient = Wearable.getMessageClient(context)
messageClient.addListener { messageEvent ->
   if (messageEvent.path == PATCH_COFFEE_MESSAGE) {
       // TODO: coffee processing
   }
}

Channels

Каналы служат для передачи потоковых данных в режиме реального времени без кэширования. Например, если нам нужно отправить голосовое сообщение с часов на телефон, то каналы будут очень удобным инструментом. Клиент для каналов можно получить через Wearable.getChannelClient(), и дальше открыть входной или выходной поток данных (один канал может работать в обе стороны).

Google активно развивает Data Layer, и вполне вероятно, что через полгода эти клиенты снова куда-то «переедут», или их API снова поменяется.
Разумеется, Data Layer – не единственный способ общения с внешним миром, никто не запретит нам по-старинке открыть tcp-socket и разрядить устройство пользователя.

В заключение

Это был всего лишь краткий обзор актульных технических возможностей платформы. Wear OS быстро развивается. Устройств становится больше, и возможно, скоро это будут не только часы. Support Wearable Library тоже не стоит на месте и меняется вместе с платформой, радуя нас новыми UI-компонентами и чудесами синхронизации.
Как и у любой другой системы, тут есть свои тонкости и интересные моменты, о которых можно говорить долго. Многие детали остались раскрыты не полностью, поэтому пишите в комментариях, о чем хочется поговорить подробнее, и мы расскажем об этом в следующей статье. Делитесь своим опытом wearable-разработки в комментариях.

Автор Майкл Крамп

С тех пор, как 18 марта 2014 года Google представила Google Wear в качестве предварительного просмотра для разработчиков, в магазине Google Play произошел взрыв приложений для износа. Все, от новых циферблатов, которые превращают ваши часы в Rolex за 10 тысяч долларов, до приложений, которые помогут вам поймать такси или поезд, не вытащив свой телефон. Даже крупные бренды, такие как Delta, ставят на часы свои посадочные талоны.

Со всеми новыми часовыми партнерами, такими как Samsung, LG и Motorola, у нас есть много устройств, и, что более важно, мы начинаем привлекать пользователей для разработки приложений. В этом руководстве мы рассмотрим создание нашего первого приложения Google Wear, чтобы помочь вам в этом.

Наше приложение Google Wear

Приложение, которое мы собираемся создать сегодня, представляет собой калькулятор чаевых с изюминкой. Вместо того, чтобы вручную вводить сумму счета на крошечном экране, мы будем использовать распознавание речи для ввода целого числа. Он умножит целое число на 15 процентов (стандартный совет) и отобразит общую сумму счета на ваших часах. Мы сможем сделать все это с помощью следующей команды: «ОК, Google Open Wearable Tip». После запуска приложения мы просто скажем целое число (например, 20).

Хватай биты

Чтобы следовать этому руководству, убедитесь, что вы используете последнюю стабильную версию  Android Studio . На момент написания статьи я использовал 1.1.0. Также убедитесь, что вы установили платформу Android 5.0.1 SDK и образ системы Android Wear (на случай, если у вас нет часов), как показано ниже:

sdkmanager

После того, как все установлено, вы готовы создать свое первое приложение для ношения!

Начиная

Мы начнем с того, что запустим новый проект и дадим ему имя, а затем выберем форм-факторы «Телефон и планшет» и «Износ», как показано ниже. Обратите внимание, что для приложения «Телефон и планшет» вы можете выбрать более низкий уровень API, например 9, в то время как в приложении «Износ» вы должны использовать API 20 (KitKat 4.4) и выше. У меня есть часы Moto 360 для тестирования, которые были обновлены до 5.0.1, поэтому в этом руководстве мы будем использовать API 21.

targetdevices

Прежде чем двигаться дальше, следует отметить, что вам не нужно создавать приложение для телефона и планшета для создания приложения Android Wear. Это не похоже на iOS, где для создания приложения Apple Watch необходимо приложение для телефона. Другими словами, приложение Android Wear будет упаковано в файл APK, который будет развернут на самих часах. Ниже приведен снимок экрана с моими часами Moto 360, на котором установлено приложение.

appscreenshot

Идите вперед, закончите шаблон и добавьте пустые действия, пока ваш проект не будет загружен. Вы заметите, что он разбивает проекты на две папки:

  1. mobile — наше приложение для телефона и планшета
  2. одежда — наше приложение для часов

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

wearappstructure

Обратите особое внимание на следующие четыре файла:

  1. MainActivity.java — это код, который запускается при первой загрузке и где мы будем добавлять наш код.
  2. rect_activity_main.xml — это наш пользовательский интерфейс для часов, которые используют экран Rectangle (например, часы LG).
  3. round_activity_main.xml — это наш пользовательский интерфейс для часов, которые используют круглый экран. (как мото 360)
  4. strings.xml — где мы будем хранить наши строковые значения, чтобы упростить локализацию нашего приложения.

Создание нашего интерфейса

Давайте начнем с создания нашего пользовательского интерфейса для Round Watch, так как вскоре мы опробуем его на Moto 360. Нажмите на, round_activity_main.xml и вы заметите, что у него уже есть  TextView виджет, который отображает текст «Hello Round World».

Переключите предварительный просмотр устройства на «Wear Round», перетащите  Small Buttonвиджет и дайте ему текст «Another?». onClick Отцентрируйте его на экране и установите  имя метода (на панели свойств) в onClickMe. Теперь он должен выглядеть следующим образом:

roundwatchbutton

Сделайте то же самое для rect_activity_main.xml и просмотрите его на устройстве «Wear Square».

Для простоты приложения мы будем повторно использовать виджет TextView для отображения общей суммы счета. Кнопка с надписью «Другой?» позволит конечному пользователю рассчитать еще один совет, используя распознавание речи.

Написание логики

Перейдите к  MainActivity.java файлу и добавьте следующие операторы импорта, которые мы скоро будем использовать.

import android.content.Intent;
import android.speech.RecognizerIntent;
import java.util.List;
import java.text.NumberFormat;

Мы объявим две переменные внутри  MainActivity класса. Это будет для   класса Speech Recognizer, предоставляемого Google, и суммы чаевых в процентах.

private static final int SPEECH_RECOGNIZER_REQUEST_CODE = 0;
private float tipPercent = .15f;

Добавьте следующий метод, который создает функцию,  Intent которая запускает распознаватель речи.

private void startSpeechRecognition() {
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,      RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    startActivityForResult(intent, SPEECH_RECOGNIZER_REQUEST_CODE);
}

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

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == SPEECH_RECOGNIZER_REQUEST_CODE) {
        if (resultCode == RESULT_OK) {
            List<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

            String recognizedText = results.get(0);
            //Try to extract the total bill amount in a whole number

            try {
                float billAmount = Float.parseFloat(recognizedText);
                // calculate tip and total
                float tipAmount = billAmount * tipPercent;
                float totalAmount = billAmount + tipAmount;

                // Display the tip on the watch
                NumberFormat currency = NumberFormat.getCurrencyInstance();
                mTextView.setText(currency.format(totalAmount));
            }
            catch(NumberFormatException ex) {
                mTextView.setText("Enter a whole number!");
            }
        }
    }
    super.onActivityResult(requestCode, resultCode, data);
}

Самое последнее, что нужно сделать, — это вызвать  startSpeechRecognitionметод в последней строке нашего  OnCreate метода и подключить его к кнопке, которую мы создали ранее.

public void onClickMe(View view){
    startSpeechRecognition();
}

Тестирование нашего приложения

С UI и кодом на месте, вы, вероятно, хотите запустить приложение. У вас есть несколько вариантов. Вы можете создать AVD (Android Virtual Device) для Android Wear, как показано ниже, но он не уловит ваш голос через микрофон компьютера.

avdwear

Он автоматически добавит поддержку вашей клавиатуры при создании AVD. Это позволит вам набрать номер, как показано ниже.

demoavd1

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

Развертывание на нашем устройстве

В зависимости от того, какие у вас часы, вы можете иметь или не иметь USB-соединение. В моем случае я тестирую на Moto 360, который позволяет только отладку по Bluetooth. К счастью, это легко установить с помощью документации  , предоставляемой Google.

Я бы сказал, что единственный сложный шаг — найти, где находится Android Debug Bridge на Mac, и добавить его к себе  .bash_profile для дальнейшего использования. На коробке с Windows это, похоже, не проблема.

Вот простой способ исправить это на Mac:

  1. Открыть терминал на Mac
  2. cd ~$ (чтобы попасть в мой домашний каталог)
  3. open -e .bash_profile (добавить путь к adb)
  4. Добавить:
  5. export PATH=$PATH:/Users/crump/Library/Android/sdk/platform-tools/

    Обязательно измените имя пользователя (например, «crump» в моем случае) на свое. Сохраните файл.

  6. echo $PATH
    должен вернуть:
  7. /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/crump/Library/Android/sdk/platform-tools/
  8. adb version должен вернуть что-то вроде следующего: «Android Debug Bridge версия 1.0.32»

Как только это произойдет, и, если вы выполнили действия, описанные в документации, при нажатии кнопки запуска вы должны подключить следующее устройство:

runningdevice

Выберите часы и убедитесь, что в совместимом поле указано «Да». Дайте несколько минут, чтобы скомпилировать и загрузить APK на ваши часы. Вы должны увидеть экран «Говорите сейчас» и сможете указать целое число.

Вот короткое видео, которое я сделал, показывая его в действии:

Исходный код этого приложения можно найти  здесь . Идите вперед и раскройте репо и попробуйте добавить дополнительные функции. У меня есть несколько идей:

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

Заворачивать

Сегодня мы узнали, как написать приложение, которое работает на вашем запястье. Благодаря недавним улучшениям в Google Wear с Lollipop это поможет вам в создании более носимых приложений.

Если вы хотите пойти дальше, ознакомьтесь с дополнительными ресурсами ниже:

  • Блог разработчика Google  — блог от Google, который охватывает все их технологии, включая носимые.

  • Google Wear Site  — это целевая страница для носимых устройств Android. Это должно стать отправной точкой для разработки приложения Android Wear.

  • Носимый блог Android Central  — сторонний блог, в котором содержатся советы и рекомендации, позволяющие максимально эффективно использовать устройство Android Wear.

  • Telerik UI для Android  — Родные элементы управления для Android, которые включают в себя различные графики, календарь, ListView и многое другое.

Умные часы (smartwatch) — компьютеризированные наручные часы, работающие в паре со смартфоном или обладающие самостоятельной функциональностью. Все современные умные часы так или иначе поддерживают работу с приложениями, но какие стоит выбрать для разработки? Мы предлагаем вам небольшой обзор четырех платформ, для которых вы можете разрабатывать приложения. Каждая со своими плюсами и минусами, каждая перспективна и потенциально может стать лидером рынка. Выбор за вами.

Apple Watch

Разработка для Apple Watch

Потенциально самые успешные часы, но пока в продажу не вышли. Ожидаются весной 2015 года, однако выход может быть отложен. Разработка под Apple Watch ведется в рамках единой парадигмы iOS-разработки, теми же инструментами, что и у «больших» приложений, так что проблем в переходе на часы быть не должно. Спрос на приложения ожидается большой, и выход на рынок в числе первых должен окупить все затраты на разработку.

Android Wear

Разработка для Android Wear

Потенциально самая массовая платформа, которая (пока) наследует многие проблемы начального Android. Разработка, как и в случае Apple Watch, идет в рамках общей Android-разработки и также проблем вызвать не должна. Основной вопрос платформы — создание конкурентоспособных и функциональных устройств. Выходя на Android Wear с приложениями, вы получите самую большую аудиторию, но вопрос работы с ней традиционно для Android будет заключаться в ее монетизации.

Pebble

Разработка для Pebble

На настоящий момент самая отлаженная и популярная платформа, решившая большую часть технологических проблем, но, по всей видимости, теряющая свои позиции. Монетизация приложений не очевидна. Разработка приложений для платформы актуальна, но если вы начинаете с нуля, то имеет смысл присмотреться к Android Wear или Apple Watch.

Samsung Gear

Разработка для Samsung Gear

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

Резюме

Если вы Android- или iOS-разработчик, присмотритесь к соответствующим платформам. Выпуск приложения для них будет стоить минимальных усилий, а результат в самом начале развития этих систем можно получить относительно большой. Если вы смотрите в сторону интернета вещей или просто HTML5 разработки – ваш выбор Tizen.

Понравилась статья? Поделить с друзьями:
  • Как написать приложение для вконтакте
  • Как написать приложение для андроид на python
  • Как написать приложение для андроид на java
  • Как написать приложение для linux
  • Как написать приложение для iphone на windows