Інтеграція ARCore в Android-додаток: трекінг, глибина, оклюзія

Інтеграція ARCore в Android-додаток Адаптивність ARCore під різні Android-пристрої — головний виклик при інтеграції. Флагмани демонструють бездоганний трекінг, а бюджетні моделі часто втрачають площини через слабку камеру та вібрації. Неврахування цього призводить до збоїв сесії на реальних прист

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Інтеграція ARCore в Android-додаток: трекінг, глибина, оклюзія
Складний
~3-5 днів

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Інтеграція ARCore в Android-додаток

Адаптивність ARCore під різні Android-пристрої — головний виклик при інтеграції. Флагмани демонструють бездоганний трекінг, а бюджетні моделі часто втрачають площини через слабку камеру та вібрації. Неврахування цього призводить до збоїв сесії на реальних пристроях користувачів. Наш досвід показує, що кожне друге звернення пов'язане з такою проблемою.

ARCore працює на 400+ моделях Android-пристроїв — і це головна складність. На Pixel 7 з тензорним чипом tracking тримається стабільно. На бюджетному Redmi з тією ж версією ARCore — площини не виявляються через слабку камеру та вібрацію від дешевого OIS. Тестувати на одному пристрої й вважати, що працює скрізь — помилка. Наш досвід показує: кожне друге звернення пов'язане з тим, що AR-сесія падає саме на недорогих пристроях через невраховані обмеження.

Чому ARCore вимагає перевірки сумісності на кожному пристрої?

ARCore сертифікований не для всіх Android-пристроїв. Повний список сертифікованих моделей ведеться Google ARCore supported devices. Перед запуском сесії — обов'язкова перевірка:

val availability = ArCoreApk.getInstance().checkAvailability(context) when (availability) { ArCoreApk.Availability.SUPPORTED_INSTALLED -> startArSession() ArCoreApk.Availability.SUPPORTED_NOT_INSTALLED -> promptInstall() ArCoreApk.Availability.UNSUPPORTED_DEVICE_NOT_CAPABLE -> showFallback() else -> { /* SUPPORTED_APK_TOO_OLD, UNKNOWN_ERROR */ } } 

UNSUPPORTED_DEVICE_NOT_CAPABLE — пристрій ніколи не отримає підтримку. Показуємо fallback, не намагаємось встановлювати ARCore.

Архітектура AR-сесії

ARCore в Android-додатку будується навколо об'єкта Session з com.google.ar.core. Інтеграція з рендерингом — через GLSurfaceView (старий шлях) або ArSceneView з Sceneform (deprecated Google, але форк maintained). Для нових проєктів беремо SceneView — активно підтримуваний форк Sceneform з Kotlin coroutines API. Для підключення достатньо рядка в build.gradle: implementation("io.github.sceneview:arsceneview:2.0.3").

val arSceneView = binding.arSceneView arSceneView.onSessionCreated = { session -> session.configure( Config(session).apply { planeFindingMode = Config.PlaneFindingMode.HORIZONTAL_AND_VERTICAL lightEstimationMode = Config.LightEstimationMode.ENVIRONMENTAL_HDR depthMode = Config.DepthMode.AUTOMATIC } ) } 

ENVIRONMENTAL_HDR — ключовий флаг для реалістичного освітлення. ARCore захоплює HDR-кубічну карту оточення і застосовує до PBR-матеріалів. Об'єкт отримує тіні та відбиття з реальної сцени.

Якщо вам потрібна інтеграція ARCore з гарантованою стабільністю — замовте консультацію. Ми проаналізуємо ваш проєкт і запропонуємо оптимальну конфігурацію.

Як Depth API покращує оклюзію в 3 рази?

На пристроях з depth-сенсором (ToF-камера: Pixel 6 Pro, Samsung S21 Ultra) DepthMode.AUTOMATIC вмикає реальну карту глибини. На інших — ARCore генерує depth через ML-модель по одній камері. Точність оклюзії на глибомірі в 3 рази вища, ніж на ML-генерації, але і те, і інше дає прийнятний результат. Оклюзія реальними об'єктами:

arSceneView.onSessionUpdated = { session, frame -> if (session.isDepthModeSupported(Config.DepthMode.AUTOMATIC)) { val depthImage = frame.acquireDepthImage16Bits() // Передаємо в шейдер для per-pixel occlusion depthImage.close() } } 

Не забувати .close() — об'єкти Image з ARCore тримають native memory, витік веде до OutOfMemoryError протягом хвилини активної сесії.

Plane detection і hit test

Розміщення об'єкта по тапу — стандартний кейс:

arSceneView.onGestureListener = object : DefaultARSceneViewGestureListener(arSceneView) { override fun onSingleTapConfirmed(e: MotionEvent): Boolean { val hitResults = arSceneView.frame?.hitTest(e.x, e.y) ?: return false val hitResult = hitResults.firstOrNull { hit -> hit.trackable is Plane && (hit.trackable as Plane).isPoseInPolygon(hit.hitPose) } ?: return false val anchor = hitResult.createAnchor() val node = ModelNode(modelFileLocation = "models/chair.glb") node.anchor = anchor arSceneView.addChild(node) return true } } 

Перевірка isPoseInPolygon важлива — hitTest може повернути точку за краєм виявленої площини, і об'єкт повисне в повітрі.

Augmented Images

AugmentedImageDatabase — для маркерного AR. База компілюється заздалегідь через arcoreimg eval-img --input_image_path=marker.png (оцінює якість зображення, Score ≥ 75 для надійного tracking).

val imageDatabase = AugmentedImageDatabase(session) val bitmap = BitmapFactory.decodeStream(assets.open("marker.png")) imageDatabase.addImage("product-marker", bitmap, 0.10f) // 10 см фізично config.augmentedImageDatabase = imageDatabase 

Зображення з однорідними кольорами або симетричними патернами дають низький score — ARCore не може знайти унікальні feature points. Логотипи з дрібними деталями працюють краще.

Тип пристрою Depth API Оклюзія Приклади моделей
Флагман ToF-сенсор Висока Pixel 6 Pro, Galaxy S21 Ultra
Середній клас ML-генерація Середня Samsung A-серія, Redmi Note
Бюджетний Не підтримується Немає Багато Xiaomi Redmi 9

Тестування на реальних пристроях

Емулятор ARCore не дає реального трекінгу. Обов'язково тестувати на:

  • Флагмані (Pixel, Galaxy S-серія) — еталонна продуктивність
  • Середньому класі (Samsung A-серія, Xiaomi Redmi Note) — реальна аудиторія
  • Пристрої без depth-сенсора — перевірка деградації depth API

Firebase Test Lab підтримує фізичні пристрої з ARCore — можна автоматизувати базові перевірки запуску сесії. Ми протестували на 300+ пристроях за 7 років досвіду — це гарантує стабільність.

Етап інтеграції Термін Складність
Базова (plane detection) 3–5 днів Низька
З Depth API 5–8 днів Середня
З Augmented Images 5–8 днів Середня
Повна (depth+освітлення) 3–5 тижнів Висока

Що входить в роботу

  • Аналіз вимог і вибір відповідного API (plane detection, Augmented Images, Depth API)
  • Інтеграція ARCore з конфігурацією під цільові пристрої
  • Налаштування падіння на непідтримувані пристрої
  • Тестування на 3+ реальних пристроях з різних сегментів
  • Надання вихідного коду та документації
  • Підтримка протягом 30 днів після здачі

Терміни

Базова інтеграція ARCore з plane detection і розміщенням GLB-моделі: 3–5 днів. Augmented Images з базою маркерів та кастомним контентом: 5–8 днів. Повне рішення з depth оклюзією, кастомним освітленням і підтримкою 200+ пристроїв: 3–5 тижнів. Вартість розраховується індивідуально після аналізу вимог.

Додаткові налаштування ARCore Для тонкого налаштування можна задати `Config.updateMode` (BLOCKING або LATEST), `Config.focusMode` (FIXED або AUTO) та інші параметри. Детальніше в SDK.

Оцініть свій проєкт — отримайте консультацію. Ми підберемо оптимальну конфігурацію ARCore під вашу аудиторію. Гарантуємо стабільну роботу AR на пристроях ваших користувачів.