Настройте параметры своего приложения так, чтобы оно могло использовать Geospatial API .
Предварительные условия
Прежде чем продолжить, убедитесь, что вы понимаете фундаментальные концепции AR и то, как настроить сеанс ARCore .
Пример приложения и лаборатория кода
В этом видео рассказывается, как создать приложение, которое отображает геопространственные данные и размещает контент в реальных местах с помощью Geospatial API.
Вы также можете выполнить те же действия в документации Geospatial Codelab . Чтобы запустить пример приложения, созданный в видео, см. Краткое руководство ARCore Geospatial .
Дополнительную информацию о Geospatial API см. в разделе «Введение в Geospatial API ».
Если вы новичок в разработке с помощью ARCore, ознакомьтесь с информацией о требованиях к программному и аппаратному обеспечению, предварительных требованиях и другой информации, относящейся к используемым вами платформам, в разделе «Начало работы».
Убедитесь, что ваша среда разработки соответствует требованиям ARCore SDK, как описано в Кратком руководстве .
Включите API ARCore
Прежде чем использовать систему визуального позиционирования (VPS) в своем приложении, вы должны сначала включить API ARCore в новом или существующем проекте Google Cloud. Эта служба отвечает за размещение, хранение и разрешение геопространственных привязок.
Предпочтительна авторизация без ключа, но также поддерживается авторизация по ключу API.
Добавьте необходимые библиотеки в ваше приложение
После авторизации вашего приложения для вызова API ARCore вы должны добавить библиотеки, чтобы включить геопространственные функции в вашем приложении.
В файле build.gradle
вашего приложения настройте службы Google Play , включив в них библиотеку местоположения служб Play.
dependencies {
// Apps must declare play-services-location version >= 16.
// In the following line, substitute `16 (or later)` with the latest version.
implementation 'com.google.android.gms:play-services-location:16 (or later)'
}
Включите геопространственные возможности в конфигурации сеанса.
Перед созданием сеанса измените GeospatialMode
в конфигурации сеанса на ENABLED
:
Ява
Config config = session.getConfig(); config.setGeospatialMode(Config.GeospatialMode.ENABLED); session.configure(config);
Котлин
// Enable the Geospatial API. session.configure(session.config.apply { geospatialMode = Config.GeospatialMode.ENABLED })
Пока для геопространственного режима установлено значение ENABLED
, приложению разрешено получать географическую информацию из системы визуального позиционирования (VPS).
Запросить пользователя разрешить использование данных устройства
Приложения, использующие ARCore Geospatial API, должны предоставлять пользователю запрос на подтверждение и разрешение использования данных со своего устройства. Дополнительную информацию см. в разделе «Требования к конфиденциальности пользователей» .
Проверьте совместимость устройства
Не все устройства, поддерживающие ARCore, также поддерживают Geospatial API, как описано в кратком руководстве .
Чтобы проверить устройство пользователя на совместимость, вызовите Session.checkGeospatialModeSupported()
. Если это возвращает false, не пытайтесь настроить сеанс (ниже), так как при этом будет выдано исключение UnsupportedConfigurationException
.
Запросить у пользователя разрешения на определение местоположения во время выполнения
Ваше приложение должно запрашивать разрешения на определение местоположения во время выполнения .
Чтобы использовать ARCore Geospatial API, вашему приложению необходимо зарегистрировать следующие дополнительные разрешения:
ACCESS_FINE_LOCATION
для точного определения местоположения пользователя.ACCESS_COARSE_LOCATION
для неточного определения местоположения пользователя и соблюдения требований конфиденциальности пользователя. Однако Geospatial API нельзя настроить для работы с приблизительным местоположением, и запросы API не будут выполняться, если пользователь установил это разрешение. Дополнительную информацию см. ниже.ACCESS_INTERNET
для связи со службой ARCore Geospatial API.
<manifest ... >
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
На устройствах под управлением Android 12 или более поздней версии пользователи могут запросить у вашего приложения доступ только к приблизительной информации о местоположении . Чтобы удовлетворить этот запрос, в вашем приложении должно быть настроено разрешение ACCESS_COARSE_LOCATION
вместе с ACCESS_FINE_LOCATION
, как показано выше. Вы должны настроить оба разрешения на определение местоположения .
Однако когда пользователи указывают приблизительное местоположение, это не позволяет Geospatial API получить точное местоположение, которое ему требуется. Геопространственный сервис не позволит настроить себя, если ваше приложение предоставляет ему только приблизительное местоположение. Ваше приложение не может использовать Geospatial API с приблизительным местоположением.
Проверьте доступность геопространственных данных в текущем местоположении устройства.
Поскольку Geospatial API использует комбинацию VPS и GPS для определения геопространственной позы, API можно использовать до тех пор, пока устройство может определить свое местоположение. В районах с низкой точностью GPS, таких как закрытые помещения и плотная городская среда, API будет полагаться на покрытие VPS для создания поз с высокой точностью. Ожидается, что в типичных условиях VPS обеспечит точность позиционирования около 5 метров и точность вращения 5 градусов. Используйте Session.checkVpsAvailabilityAsync()
чтобы определить, имеет ли данное местоположение покрытие VPS.
Geospatial API также можно использовать в регионах, где нет покрытия VPS. На открытом воздухе с небольшим количеством препятствий или без них GPS может быть достаточно для определения позы с высокой точностью.
Что дальше
- Получите геопространственную позу камеры устройства , чтобы определить точное местоположение устройства пользователя в реальном мире.
- Проверьте доступность VPS в указанном месте расположения устройства.