Интеграция Android Wear OS c мобильным устройством на Android

Задача: создать прототип приложения, которое позволяло бы получать частоту сердцебиения с часов на Wear OS и передавать эти данные на смартфон под управлением Android.

Подготовительные работы:

  1. Создать эмулятор с предустановленными Google Play сервисами
  2. Установить на эмулятор приложение из Google Play Wear OS (и с не официальных источников https://apkpure.com/wear-os-by-google-smartwatch/com.google.android.wearable.app/download)
  3. Создать эмулятор для Wear OS (у меня в примере использовался API 30)
  4. Выполнить сопряжение, используя следующую статью https://developer.android.com/training/wearables/get-started/connect-phone

Результат: будут созданы два приложения, один для часов, другой для смартфона и при этом из package name должен быть одинаковым. А судя из статьи https://stackoverflow.com/questions/48921165/syncing-data-items-between-mobile-device-and-wear ещё и подписи.

Читать далее «Интеграция Android Wear OS c мобильным устройством на Android»

Приложение для просмотра ошибок в Мобильном обходчике

По адресу http://vnext:3000 доступен сервис по просмотру ошибок в мобильных сервиса.

Логин: user

Пароль: user0

Приложение состоит из:

  • Логирование
    • Аудит — действия пользователя на устройстве
    • Ошибки клиента — ошибки возникшие на клиентском устройстве
    • Серверные ошибки — ошибки при синхронизации данных

Читать далее «Приложение для просмотра ошибок в Мобильном обходчике»

Синхронизация

Синхронизация

Синхронизация бывает нескольких типов:

  • Полная или ручная (Full) – передаются на сервер все не переданные данные, очищается хранилище и загружаются все данные с сервера
  • Обновление с учетом даты последней синхронизации (Medium) – передаются на сервер все не переданные данные и загружаются новые данные
  • Сохранение выполненного задания (Lite) – передаются на сервер все не переданные данные
  • Передача геоданных (Geo) – передаются на сервер геоданные на сервер. Может выполнятся параллельно
  • Сохранение информации о пользователе (User) – передается на сервер информация о пользователе и загружается новая. Может выполнятся параллельно
Тип

синхронизации

Выполняется при старте Передача данных Загрузка данных Загрузка с учетом даты пред. синхронизации Параллельное выполнение Очистка данных после загрузки Возможность отменить
Full + + + + + +
Meduim + + +
Lite +
Geo + +
User + + +

 

Особенности:

  • При первом запуске всегда выполняется Full – синхронизация
  • При каждом запуске, но не первом, выполняется Medium-синхронизация
  • После каждого выполнения задания запускается Lite-синхронизация
  • Каждую N-секунд (по умолчанию 60 сек) выполняется Geo-синхронизация
  • После создания аватарки выполняется User-синхронизация
  • Одновременное выполнение Full, Medium, Lite невозможно
  • Full – синхронизация может запускаться вручную независимо от других типов

 

 

 

 

 

 

 

 

 

 

 

Процесс

Синхронизация выполняется только при наличии интернет соединения.

 

 

Выполняется выборка из

локального хранилища

тех записей, которые,

нуждаются в добавлении,

обновлении, удалении

 

 

 

 

 

 

 

Количество передаваемых байт

зависит от типа соединения:

  • wifi,4g,3g – 1 Мбит
  • 2g — 9,6 кбит

 

 

 

 

После удачной передачи данных,

переданный пакет обрабатывается

на сервере, клиент ожидает

результат

 

 

 

Не зависимо от результата

выполнения информация

передается на устройство

 

 

 

 

 

Если в результат обработки

данных обнаруживается,

ошибка, то локальные данные

которые были переданы на

сервер помечаются как

«требующие повторной

передачи»

Утилита manual-package для обработки пакетов

Утилита предназначена для проверки «битых пакетов» синхронизации. Она обладает следующими функциями:

  • определение «битых» пакетов
  • исправление данных

Для установки пакета нужно скачать приложение git по данной ссылке
Далее устанавливаем приложение nodejs (лучше ставить LTS версию, там обычно написано Recommended For Most Users) Читать далее «Утилита manual-package для обработки пакетов»

Сборка мобильного приложения

Сборка мобильного приложения осуществляется под разные регионы. Список регионов нужно уточнить в исходном коде. Для этого перейти в папку resources/usersetting.Настройка приложения под регион.

  • открываем файл resources/config.json. Находим свойство theme и меняем на имя региона
  • далее переходим в файл resources/userseting/имя региона/config.json. В данном файле хранятся свойства которые были переопределены. Установить параметр debug=false
  • перейти в файл app.json. В свойстве requires установить пакет региона (если он есть, но если нет, то нужно убрать все пакеты, которые начинаются с ext_)
  • выполняем команду sencha app build native testing
  • после завершения команды на рабочем столе должна появиться *.apk

Автоматическая сборка.

В корне приложения должен находиться файл build.js. Он написан под nodejs. Команда для запуска выглядит следующим образом

node cmd build имя_региона

Если нужно собрать приложения для конечного заказчика, то требуется дополнительно указать параметр production

node cmd build имя_региона production

Внимание!!! При сборке приложения под Казань требуется поставить crosswalk. Для других регионов данный плагин должен быть удален

Сборка с crosswalk

crosswalk — это дополнительный плагин для работы мобильного приложения в android’e, где версия браузера «старая» (нет поддержки css3)

Переходим в каталог cordova

cd cordova

cordova plugin add cordova-plugin-crosswalk-webview

Далее возвращаемся обратно в каталог с приложением и запускаем
node cmd build [имя региона]

Примечание: Главное запомнить, что при сборке для региона, где crosswalk не требуется нужно удалить данный плагин
cd cordova

cordova plugin remove cordova-plugin-crosswalk-webview

Настройки

Список настроек для мобильного приложения

  • theme:string — наименование региона для сборки
  • debug:boolean — режим отладки
  • auth:any — настройки авторизации
    • enable:boolean — включена ли авторизация
    • autoAuth:any — автовход (применяется для тестирования, при сборке будет принудительно сброшен)
      • enable:boolean — включить автовход
      • login:string — логин
      • password:string — пароль
  • defaultDateTimeFormat:string — формат даты по умолчанию
  • APP_ID:number — идентификатор приложения (применяется для отладки)
  • multiUsers:boolean — позволяет использовать устройство несколькими пользователями
  • testIMEI:string — указывается идентификатор устройства для тестирования
  • autoSyncDetect:number — автоматическая синхронизация устройства через определенное время
  • syncDataByLastSyncDate:boolean — применять механизм синхронизации по последней дате
  • N_DefaultLatitude:number — координаты по умолчанию
  • N_DefaultLongitude:number — координаты по умолчанию
  • upgradeHourInterval :number- интервал проверки обновлений в часах
  • N_ValidDistance:number — коэффициент для определения дистанции до задания
  • N_DistanceRate:number — коэффициент для определения дистанции до задания
  • N_DistanceRound:number — коэффициент для настройки определения дистанции до задания
  • N_GeoInterval:number — интервал определения геокординат
  • useGeoInterval:boolean — использование механизма геокординат
  • singlePhotoForS_Person:boolean — позволяет использовать одно изображение для физ. лиц
  • serverDateTimeShow:boolean — показывать дату с корректировкой по серверу
  • offlineCount:number — количество потерь соединений с интернетом для перехода в offline
  • documentCheckModule:boolean — включить модуль проверки документов
  • geoCheckModule:boolean — включить механизм определения дистанции до задания
  • fileUploadMode:string — режим загрузки изображений
  • rdpConnect:boolean — позволяет просматривать данные с устройства
  • socket:boolean — включен механизм реального времени
  • modeoptions:string — режим подключения к сети
  • cmd:boolean — включить механизм командной строки
  • minBatteryPower:boolean — включить механизм проверки минимального заряда
  • transports:string[] — способ передачи данных для socket
  • chat:boolean — включить механизм чата
  • yandexHiddenMode:boolean — скрыть карту yandex
  • checkModuleBlank :boolean- модуль проверки бланков
  • upgradeAlternative:boolean — применять альтернативный способ обновления приложения. Применяется для внутренней сети
  • blockSize:number — размер блока передаваемого клиентом при ручном режиме
  • blockSizeSet:string — режим определения блока для передачи на сервер
  • offlineOnly:boolean — приложение всегда запускается в режиме offline
  • personOnly:boolean — только для физических лиц
  • baseColor:string — базовый цвет
  • textColor:string — цвет текста
  • imagecompress: boolean — сжимать изображения на клиенте. По умолчанию параметр true

Работа с командной строкой

Журнал изменений (check list)

node cmd checklist [команда]

Список команд:

add [описание] [тема]? [версия]? — добавление записи в check list

Пример: node cmd checklist «первая версия» * 1.69.2 или node cmd checklist «первая версия»

remove [версия] — удаление версии

get [версия]? — возвращается список версий или указанная запись

Пример: node cmd checklist get 1.69.2 или node cmd get

clear — очистка списка

Сохранение версии на сервере

node cmd checkversion — сохраняет текущию версию на сервере для дальнейшей обработки при ошибке