- PVSM.RU - https://www.pvsm.ru -
Это небольшая история про один из экспериментов нашей компетенции Wearables.
Мы провели его больше года тому назад, поэтому код изрядно устарел, да и AndroidWear-приложением сегодня уже никого не удивишь, однако задумка была очень интересной, и поработать над ней было здорово. За что огромное спасибо авторам идеи: Арсению Печенкину и VP of Engineering Роману Чернышеву, благодаря которым стартовал этот R&D.
Посмотреть код можно на GitHub [1]. А вот небольшая презентация [2].
У
В былые времена признаки и принипы умственного утомления были описаны даже в ГОСТах, например, вот [4].
Если всерьез, для работников умственного труда и для людей, принимающих ответственные решения, адекватный самоконтроль важен, и тест на определение умственного утомления (а значит, и адекватности реакции и решений) нужен. Есть достаточно простые, но эффективные методики для диагностики таких состояний [5].
Зная, чтотолько набирающая популярность платформа AndroidWear, поддерживает не только тач-инпут, но и голосовой ввод, мы решили попробовать реализовать тесты сразу двух типов:
Сразу скажу — голосовой ввод на тот момент различал произвольные слова не так уж хорошо. Это вам не работа с предопределенным набором команд “ok, Google”. Однако при некоторой тренировке добиться заметных различий между фразой, четко сказанной отдохнувшим человеком, и той же фразой, произнесенной в спешке или в состоянии полудремы, удалось весьма наглядно.
Повторюсь: коду уже больше года, и в нем вы не найдете ни Ambient Mode, ни кастомного WatchFace, ни некоторых других новинок, пришедших с обновлениями SDK за этот год.
Но кое-что полезное из проекта мы все же вынесли.
В первую очередь, это работа с android.speech.SpeechRecognizer.
SpeechRecognizer в AndroidWear на момент написания проекта имел два заметных ограничения по сравнению с мобильным Android:
Как показала практика, и ButterKnife, и GreenDao ORM, и многие другие удобные инструменты, облегчающие и ускоряющие разарботку, прекрасно работают в AndroidWear-проекте. Более того, в ходе проекта мы опробовали возможность создавать общие Android-компоненты: CustomView, диалоги и даже Activity, доступные из общей библиотеки для обоих проектов (и mobile, и wear).
Для себя я давно завел правило использовать ORM всегда, когда это возможно, избавляясь от пачки самописных классов с множестом публичных статических констант. И за это время такой подход сэкономил немало времени и показал себя очень хорошо. Скажу лишь, что GreenDao, используемая в проекте, мне не очень понравилась — Sprinkles или DbFlow решают эти же задачи проще и элегантнее. Но это — мое личное мнение, и, если вам интересно посмотреть на живой пример применения GreenDao и кодогенератора, строящего классы ORM для работы проекта, — милости просим в код.
Редактировать шаблоны фраз на часах (у которых нет клавиатуры) не очень удобно, поэтому редактор мы разместили на смартфоне. За отправку шаблонов на часы и результатов обратно на телефон используется GoogleApiClient Wearable.API.
Для обмена данными (DataItems и Messages) создали класс WearableConnector. Все, что он обеспечивает, — единый протокол (включая path для DataMapRequests и вызовов sendMessage).
Синхронизацией темплейтов голосовых заданий и настроек заведуют DataItems. Это данные, которые предполагается хранить неизменными достаточно долго, и механизм синхронизации DataItems обеспечивает оптимизацию обновления этих данных с мимнимальным пейлоадом.
Передача результатов с часов на смартфон реализована с помощью Messages.API — таким образом, как только тест завершен, результат сразу отправляется на смартфон и добавляется к списку результатов, уже сохраненных в базе.
Как мы видии, бывает два типа результатов — Speech test и Shape test.
Отмечу, что Shape test изначально разрабатывался для handheld и уже после был перенесен в виде CustomView в AndroidWear часть проекта. Это лишний раз подтвердило догадку, что реализации многих компонентов очень хорошо переносятся с mobile-платформы на wear.
Результатом эксперимента стало приложение, которое позволит простыми наручными средствами (такими как ваш AndroidWear smartwatch) проверить степень утомления и сохранить некоторые результаты на ваш смартфон. Ну и, конечно, опыт разработки под AndroidWear, которая не только увлекательна, но и достаточно легка и приятна, особенно за счет переносимости и компонентов, и вашего любимого инструментария из обычного Android проекта в проект для AndroidWear.
Первый релиз Languor v1.0.5 [6] доступен на Github.
Бодрости вам, мобильности и неутомимости! И до новых встреч.
Автор: DataArt
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/android/114117
Ссылки в тексте:
[1] на GitHub: https://github.com/DataArt/Languor
[2] небольшая презентация: http://www.slideshare.net/ittalk/languor
[3] мозга: http://www.braintools.ru
[4] вот: http://docs.cntd.ru/document/gost-r-iso-10075-2011
[5] диагностики таких состояний: http://psychojournal.ru/tests/101-test-na-opredelenie-stepeni-ustalosti.html
[6] v1.0.5: https://github.com/DataArt/Languor/releases/tag/v1.0.5
[7] Источник: https://geektimes.ru/post/272074/
Нажмите здесь для печати.