Android Kotlin Ошибка несоответствия типа API ARCore GeoSpatial: Земля? но Земля ожидается

Я пытаюсь создать приложение Geospatial AR с помощью Android ARCore и Maps for Android SDK.

Однако, когда я пытаюсь запустить приложение, оно выдает ошибку: «Несоответствие типов: предполагаемый тип — Земля? Но ожидалась Земля».

Эта ошибка возникает только в строке кода «activity.view.updateStatusText(earth, earth.cameraGeospatialPose)» внутри файла HelloGeoRenderer.kt.

Однако, когда я комментирую приведенную выше строку кода, код работает нормально, карта появляется под экраном приложения, как и ожидалось, но якорь AR не появляется.

Может ли кто-нибудь помочь мне определить проблему?

Заранее спасибо!

    // Obtain Geospatial information and display it on the map.
    val earth = session.earth
    if (earth?.trackingState == TrackingState.TRACKING) {
      // The Earth object may be used here.
      val cameraGeospatialPose = earth.cameraGeospatialPose
      
      activity.view.mapView?.updateMapPosition(
        latitude = cameraGeospatialPose.latitude,
        longitude = cameraGeospatialPose.longitude,
        heading = cameraGeospatialPose.heading
      )
    }

    activity.view.updateStatusText(earth, earth.cameraGeospatialPose)


Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а...
Калькулятор CGPA 12 для семестра
Калькулятор CGPA 12 для семестра
Чтобы запустить этот код и рассчитать CGPA, необходимо сохранить код как HTML-файл, а затем открыть его в веб-браузере. Для этого выполните следующие...
ONLBest Online HTML CSS JAVASCRIPT Training In INDIA 2023
ONLBest Online HTML CSS JAVASCRIPT Training In INDIA 2023
О тренинге HTML JavaScript :HTML (язык гипертекстовой разметки) и CSS (каскадные таблицы стилей) - две основные технологии для создания веб-страниц....
Как собрать/развернуть часть вашего приложения Angular
Как собрать/развернуть часть вашего приложения Angular
Вам когда-нибудь требовалось собрать/развернуть только часть вашего приложения Angular или, возможно, скрыть некоторые маршруты в определенных средах?
Запуск PHP на IIS без использования программы установки веб-платформы
Запуск PHP на IIS без использования программы установки веб-платформы
Установщик веб-платформы, предлагаемый компанией Microsoft, перестанет работать 31 декабря 2022 года. Его закрытие привело к тому, что мы не можем...
Оптимизация React Context шаг за шагом в 4 примерах
Оптимизация React Context шаг за шагом в 4 примерах
При использовании компонентов React в сочетании с Context вы можете оптимизировать рендеринг, обернув ваш компонент React в React.memo сразу после...
0
0
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Перед получением var earth необходимо настроить сеанс на использование GeospatialMode.ENABLED. Поскольку можно вернуть null, когда функция Geospatial не включена, тип возвращаемого значения — Earth?, допускающий значение NULL, вместо Earth, что может вызвать ошибку несоответствия типов.

Чтобы настроить сеанс, вы можете написать:

session.configure(
    config.apply {
        geospatialMode = Config.GeospatialMode.ENABLED
    }
)

Перед настройкой такой конфигурации важно проверить, совместимо ли устройство с Geospatial API с помощью функции:

if (session.isGeospatialModeSupported(Config.GeospatialMode.ENABLED)) {...}

Другие вопросы по теме

Похожие вопросы

Как правильно обрабатывать загрузку инициалов в качестве заполнителей в Jetpack Compose
Как загрузить изображение из ресурсов в Jetpack Compose
Проблемы с регистрацией фотографий в программировании для Android
Получить поле из LocalDate, которое имеет более одного события
Список элементов Android RecyclerView не изменяется должным образом после изменения настроек и снова переходит к фрагменту
Я создал нативное приложение, которое отлично работает в режиме отладки, но в выпуске APK появляется экран банка.
Приложение React Native для Android отлично работает в режиме отладки, но когда мы выпускаем apk, оно создает более старую версию приложения.
Потери входных данных при переходе между входными страницами формы
Приложение Cordova Ionic — push-уведомления не работают на Android 12 и Android 13 — Cordova-android 11.0
Есть ли какой-либо способ или пакет, который может периодически запускать фоновые задачи каждую минуту в трепетании