Native App


Native App — это Android-приложение с графическим интерфейсом, к которому вы можете подключить голосовое управление. Это могут быть видеоигры, фитнес-тренировки, приложения для запуска видео и аудио, и т. д. Native App доступен на устройствах SberBox, SberBox Top и SberPortal.

Пример Native App — смартап «Чудо книжки»

Создание Native App

Шаг 1 — разработка

Native App — это смартап с собственным фронтендом и бэкендом. Фронтенд в Native App — это Android-приложение в формате apk. Его можно подготовить в любой среде разработки для Android, например, в Android Studio или Unity. Подробнее о загрузке apk-файла см. в разделе Загрузка apk-файла.

Бэкенд в Native App — это голосовой сценарий к Android-приложению. Сценарий можно создать с помощью любого инструмента SmartMarket. Связать фронтенд и бэкенд можно через Android-библиотеку, которую необходимо подключить в проект.


Шаг 2 — тестирование

Запустите тестовый Native App с поддержкой основных библиотек и голосового сценария. Вы можете использовать его в качестве примера для реализации своего смартапа. Также вы можете подключить ADB для тестирования смартапа на физических устройствах.


Шаг 3 — модерация

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


Шаг 4 — публикация

После модерации ваш смартап готов к публикации. Для публикации нажмите кнопку Опубликовать в настройках SmartMarket Studio, и ваш смартап появится в течение 5-10 минут в каталоге приложений SmartMarket.

Особенности разработки

Требования к Native App

При разработке Native App необходимо учитывать:

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

Загрузка apk-файла

Самый простой способ выпустить Native App — портировать уже готовое Android-приложение. Для этого:

  1. Перейдите в SmartMarket Studio и нажмите кнопку Создать смартап.
  2. Выберите тип Native App и инструмент, в котором вы реализуете голосовой сценарий (опционально).
  3. Перейдите в настройки смартапа и загрузите apk-файл в разделе Основные настройки. Размер файла не должен превышать 100 Мб.

После загрузки начнется проверка apk-файла на установленный лимит, вирусы, целостность архива и т. п. Если файл пройдет проверку, созданный смартап перейдет в статус «Черновик». Это значит, что смартап готов к использованию, но он не будет поддерживать работу с виртуальными ассистентами. Для этого необходимо дополнительно разработать голосовой сценарий.

Подпись apk-файла

Каждый apk-файл должен иметь подпись. Вы можете сгенерировать подпись с помощью любой среды для Android разработки, например, в Android Studio. Не используйте для генерации подписи debug.

После первой загрузки apk-файла не меняйте его подпись — любое обновление должно происходить только с ней. При подмене или утере подписи смартап больше не сможет обновиться.

Подключение ADB

ADB (Android Debug Bridge) — инструмент для отладки смартапа на базе операционной системы Android. Позволяет добавлять тестовые устройства и запускать на них Native App на стадии разработки.

Для подключения ADB:

  1. Перейдите в SmartMarket Studio в раздел Мои устройства.
  2. Добавьте тестовое устройство. Для этого укажите его идентификатор и тип.
  3. Выберите устройство из списка и нажмите кнопку Подключить ADB. ADB приходит на устройство в течение 1 минуты (для устройств с OS StarOS версии 1.71 и выше).

После подключения вы сможете тестировать Native App на своих устройствах в одной Wi-Fi сети.

Отображение на устройстве

Установленный Native App отображается в лончере — это интерфейс устройства, где пользователь может выбрать и запустить установленное приложение.

Чтобы Native App отобразился в лончере, необходимо поддержать в проекте следующие Android-атрибуты:

  • android:bannerатрибут для загрузки иконки смартапа.
  • Category_Leanback_Launcherфильтр для установки специальной категории, которая отвечает за запуск смартапа из лончера.

Если не поддержать эти атрибуты, Native App не отобразится на устройстве, и пользователи не смогут его запустить.

Резервное копирование

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

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

Резервное копирование настраивается через Android-протокол. Если вы поддержали этот протокол в своем смартапе, то все пользовательские данные будут автоматически сохранены в облачном хранилище SberDevices. Размер сохраняемых данных — не более 25 Мб. Если протокол не был поддержан, то при автоматической выгрузке смартапа все данные будут утеряны.

Обновление смартапа

Для обновления смартапа перейдите в версию «Черновик» и загрузите новый apk-файл в свой проект. При загрузке нового файла код версии versionCode должен отличаться и быть выше версии кода, указанной в предыдущем apk-файле.

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

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

Голосовое управление

Чтобы у вашего Native App появилось голосовое управление, вам нужно дополнительно разработать и подключить голосовой сценарий. Для этого вы можете использовать бесплатные инструменты SmartMarket Studio.

Например, вы можете выбрать среду разработки SmartApp Code и написать свой сценарий на JavaScript, или же подключить библиотеку SmartApp Framework и разработать сценарий на Python.

При подключении голосового сценария через SmartApp Code убедитесь, что в настройках вашего смартапа выбрана опция Отправлять команду /start на запуск голосом. Иначе смартап не запустится.

Ограничения

У Native App есть несколько ограничений, из-за которых вам будут недоступны следующие возможности:

  • получение доступа к микрофону (ограничение только для SberBox);
  • получение доступа к персональным данным пользователей (например, к геолокации).

Технические характеристики

SberBox SberPortal SberBox Top
Android OS 9.0 (AOSP) 9.0 (AOSP) 9.0 (AOSP)
SoC Amlogic S905Y2 Amlogic A311D Amlogic A311D
CPU Quad Cortex-A53, armeabi-v7a,armeabi Quad CoreCortex-A73 + Dual-Core-A53 Quad CoreCortex-A73 + Dual-Core-A53
GPU ARM Mali-G31 MP2, OpenGL ES 3.2 ARM Mali-G52 MP6 ARM Mali-G52 MP6
RAM 2GB DDR4 2GB DDR4 2GB DDR4
DPI 160 160 160
Диск 8 GB 16 GB 16 GB
Разрешение 1920×1080 1280×800 1920×1080
Экран Подключается к телевизору по HDMI-интерфейсу Экран встроенный сенсорный. Соотношение сторон 16:10 Подключается к телевизору по HDMI-интерфейсу
Управление •Пульт
•Геймпад
•Голос
•Виртуальный пульт
•Геймпад
•Голос
•Сенсорный экран
•Определение позы
•Жесты
•Пульт
•Геймпад
•Голос
•Жесты
•Поза

Дополнительные сервисы

SmartMarket предлагает open source библиотеки, которые можно подключить к Native App. Эти библиотеки дают следующие возможности:

Дополнительно вы можете подключить следующие Android-библиотеки:

Связь ассистента со сценарием

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

Вы можете подключить библиотеку, объявив в своем проекте gradle или maven зависимость.

Распознавание жестов и позы

Используйте библиотеку cv-api, чтобы распознавать позы и жесты со встроенных на устройствах камер. Библиотека работает на устройствах SberPortal и SberBox Top.

Библиотека распознает:

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

Вы можете подключить библиотеку, объявив в своем проекте gradle или maven зависимость.

Состояние смартапа

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

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

Вы можете подключить библиотеку, объявив в своем проекте gradle или maven зависимость.

Состояние камеры и микрофона

Для получения текущего состояния микрофона и камеры устройства используйте библиотеку mic-camera-state. Примеры состояний: жесты недоступны, ассистент не слышит пользователя, камера выключена и прочее. Библиотека работает на устройствах SberPortal и SberBox Top.

Вы можете подключить библиотеку, объявив в своем проекте gradle или maven зависимость.

Получение доступа к камере

Для получения изображения с камеры устройства вы можете использовать встроенные механизмы Android. Для этого изучите документацию Android Camera2 API.

При использовании камеры через этот протокол необходимо:

  • запрашивать у пользователя разрешение на получение доступа;
  • обрабатывать callback с ошибками. Например, на устройстве SberPortal есть крышка, которая закрывает доступ к камере. Если в этот момент смартап попытается использовать камеру устройства, то появится ошибка, которую необходимо правильно обработать.

Полноэкранный режим

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

// включение полноэкранного режима
val currentFlags = decorView.systemUiVisibility 
decorView.systemUiVisibility = currentFlags 
or View.SYSTEM_UI_FLAG_IMMERSIVE
// отключение полноэкранного режима
val currentFlags = decorView.systemUiVisibility 
decorView.systemUiVisibility = currentFlags 
and View.SYSTEM_UI_FLAG_IMMERSIVE.inv()

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

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней