Планируется поддержка различных типов очков ИИ

Применимые устройства XR
Это руководство поможет вам создать опыт использования этих типов XR-устройств.
Очки ИИ

Различные типы очков с ИИ обладают разными возможностями. Например, хотя все очки с ИИ поддерживают голосовое управление, некоторые из них также оснащены дисплеем, на котором ваше приложение может отображать интерфейсы, созданные с помощью Jetpack Compose Glimmer .

Чтобы обеспечить бесперебойный пользовательский опыт на различных очках с искусственным интеллектом, спланируйте Activity для очков с учётом возможностей различных устройств. Такой подход упрощает разработку, позволяя создать одну Activity, адаптирующую своё поведение, а не несколько, ориентированных на конкретные устройства.

Понимать жизненный цикл проектируемых мероприятий

Действия, создаваемые для очков с искусственным интеллектом, не выполняются непосредственно на устройстве, а проецируются на него с хост-устройства (например, телефона пользователя). Специальные действия, создаваемые для этой цели, называются проецируемыми действиями . Жизненный цикл проецируемых действий основан на стандартном жизненном цикле действий , но также включает ряд ключевых отличий, которые поддерживают возможности различных типов очков с искусственным интеллектом.

Рисунок 1. Ключевые события в жизненном цикле проектируемой деятельности.

Ниже приведен анализ ключевых событий с выносками для взаимодействий, характерных для действий, проецируемых на очки ИИ:

  • onCreate()
    • Вызывается при создании проектируемой активности.
    • Инициализируйте здесь пользовательский интерфейс Jetpack Compose Glimmer и другие компоненты вашего приложения.
  • onStart()
    • Вызывается, когда начинается прогнозируемое действие и пользователь знает о приложении.
  • onResume()
    • Вызывается, когда проецируемая активность снова оказывается в фокусе. Пока активность находится в фокусе, она интерактивна и может использовать сенсорную панель или кнопки.
    • Называется так, когда очки снова надеваются (одеваются) после того, как они были ранее сняты (сняты) с головы.
  • onPause()
    • Вызывается, когда проецируемая активность теряет фокус, но пользователь всё ещё видит ваше приложение. Пока активность не в фокусе, она не взаимодействует с пользователем и прекращает получать входные данные.
  • onStop()
    • Вызывается, когда система считает, что пользователь больше не знает о вашем приложении.
    • Вызывается, когда очки снимаются с головы.
  • onDestroy()
    • Вызывается, когда запланированная активность готова к уничтожению. При этом система освобождает все ресурсы, связанные с активностью.

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

В стандартном Activity состояние жизненного цикла изменяется при выключении экрана устройства, обычно переходя в состояние onPause() или onStop() . В отличие от этого, жизненный цикл проецируемой активности не меняется при включении или выключении дисплея очков ИИ. Это означает, что проецируемая активность продолжает выполняться в состоянии «Запущено» или «Возобновлено» даже при выключенном дисплее, что позволяет аудиовоспроизведению вашего приложения продолжаться без прерываний.

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

Понять, как осведомленность пользователей влияет на вашу прогнозируемую активность

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

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

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

  • Состояние onStart() для проектируемых действий означает, что действие активно.
  • Состояние onResume() означает, что активность интерактивна и может получать ввод с сенсорной панели или получает первичный ввод.

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

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

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

Спроецированный контекст может быть автоматически предоставлен вашему приложению в зависимости от контекста вызывающей активности:

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

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

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

Понимание API, распознающих устройства

Некоторые стандартные API Android изменяют доступ к оборудованию устройства в зависимости от Context вызова. Когда эти API получают проецируемый контекст, они обращаются к оборудованию очков с искусственным интеллектом, а не к оборудованию основного телефона:

  • CameraManager : Доступ к камере на очках.
  • SensorManager : извлекает данные датчиков (например, данные гироскопа или акселерометра) из очков.
  • AudioManager : управляет аудиопотоками, громкостью и маршрутизацией на очках.
  • AudioRecord : записывает звук с помощью микрофона очков.