Włącz interfejs Geospatial API dla aplikacji na Androida (Kotlin/Java)

Skonfiguruj ustawienia aplikacji, aby umożliwić korzystanie z interfejsu Geospatial API.

Wymagania wstępne

Zanim przejdziesz dalej, upewnij się, że rozumiesz podstawowe zagadnienia związane z rozszerzoną rzeczywistością oraz że wiesz, jak skonfigurować sesję ARCore.

Przykładowa aplikacja i ćwiczenie z programowania

Z tego filmu dowiesz się, jak tworzyć aplikacje, które wyświetlają dane geoprzestrzenne i umiejscawiają treści w rzeczywistych lokalizacjach za pomocą interfejsu Geospatial API.

Możesz też wykonać te same czynności, korzystając z dokumentacji Geospatial Codelab. Aby uruchomić przykładową aplikację utworzoną na potrzeby filmu: przeczytaj krótkie wprowadzenie do ARCore Geospatial.

Zobacz Wprowadzenie do interfejsu Geospatial API informacje o interfejsie Geospatial API.

Jeśli nie masz doświadczenia w programowaniu z ARCore, przeczytaj artykuł Pierwsze kroki. zawiera informacje o wymaganiach dotyczących oprogramowania i sprzętu, wymagań wstępnych oraz inne informacje powiązane z platformami, z których korzystasz.

Upewnij się, że środowisko programistyczne spełnia wymagania pakietu ARCore SDK opisane w artykule Szybki start.

Włącz interfejs ARCore API

Zanim użyjesz w aplikacji systemu pozycjonowania wizualnego (VPS), musisz najpierw włączyć interfejs ARCore API w nowym lub istniejącym projekcie Google Cloud. Ta usługa odpowiada za hostowanie, przechowywanie i rozwiązywanie kotwic geoprzestrzennych.

Preferowana jest autoryzacja bezkluczowa, ale obsługiwana jest też autoryzacja za pomocą klucza API.

Dodaj wymagane biblioteki do aplikacji

Po autoryzowaniu aplikacji do wywoływania interfejsu ARCore API musisz dodać biblioteki, aby włączyć w niej funkcje geoprzestrzenne.

W pliku build.gradle aplikacji skonfiguruj Usługi Google Play, tak aby zawierały kod Google Play. Biblioteka lokalizacji usług.

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)'
}

Włącz funkcje geoprzestrzenne w konfiguracji sesji

Przed utworzeniem sesji zmień w swojej sesji element GeospatialMode. do ENABLED:

Java

Config config = session.getConfig();
config.setGeospatialMode(Config.GeospatialMode.ENABLED);
session.configure(config);

Kotlin

// Enable the Geospatial API.
session.configure(session.config.apply { geospatialMode = Config.GeospatialMode.ENABLED })

Gdy tryb geoprzestrzenny jest ustawiony na ENABLED, aplikacja może uzyskiwać informacje geograficzne z systemu Visual Positioning System (VPS).

Pytaj użytkownika o zgodę na użycie danych na urządzeniu

Aplikacje korzystające z interfejsu ARCore Geospatial API muszą wyświetlać użytkownikowi prośbę o potwierdzenie i zezwolenie na używanie danych z urządzenia. Więcej informacji znajdziesz w wymaganiach dotyczących prywatności użytkowników.

Sprawdź zgodność urządzeń

Nie wszystkie urządzenia, które obsługują ARCore, obsługują również interfejs Geospatial API. opisane w krótkim wprowadzeniu.

Aby sprawdzić, czy urządzenie użytkownika jest zgodne, zadzwoń pod numer Session.checkGeospatialModeSupported(). Jeśli zwróci wartość false, nie próbuj konfigurować sesji (poniżej), ponieważ spowoduje to wyjątek UnsupportedConfigurationException.

Prośba o dostęp do lokalizacji w czasie działania aplikacji

Aplikacja musi prosić o dostęp do lokalizacji w czasie działania.

Aby korzystać z interfejsu ARCore Geospatial API, aplikacja musi zarejestrować te dodatkowe uprawnienia:

  • ACCESS_FINE_LOCATION dokładne określanie lokalizacji użytkownika.

  • ACCESS_COARSE_LOCATION za niedokładne określanie lokalizacji użytkownika oraz wymagania dotyczące prywatności użytkowników. Interfejsu Geospatial API nie można jednak skonfigurować tak, aby działał z grubą lokalizacją, a żądania interfejsu API będą się kończyć niepowodzeniem, gdy użytkownik ustawi to uprawnienie. Więcej informacji znajdziesz poniżej.

  • ACCESS_INTERNET aby skontaktować się z usługą 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>

Na urządzeniach z Androidem w wersji 12 lub nowszej użytkownicy mogą poprosić o dostęp do aplikacji tylko do przybliżonej lokalizacji. Aby spełnić to żądanie, aplikacja musi mieć skonfigurowane uprawnienie ACCESS_COARSE_LOCATION, a także uprawnienie ACCESS_FINE_LOCATION, jak pokazano powyżej. Musisz skonfigurować oba ustawienia dostępu do lokalizacji.

Jednak gdy użytkownicy podają przybliżoną lokalizację, uniemożliwia to interfejsowi Geospatial API uzyskanie wymaganej dokładnej lokalizacji. Usługa geoprzestrzenna będzie nie mogą być skonfigurowane, jeśli aplikacja podaje tylko przybliżoną lokalizację. Twoja aplikacja nie może używać interfejsu Geospatial API z przybliżoną lokalizacją.

Sprawdzanie dostępności danych geoprzestrzennych w bieżącej lokalizacji urządzenia

Ponieważ interfejs Geospatial API do określania pozycji geoprzestrzennej używa kombinacji VPS i GPS, można go używać, jeśli urządzenie jest w stanie określić swoją lokalizację. W obszarach o niskiej dokładności GPS, na przykład w pomieszczeniach wewnątrz i w gęstym środowisku miejskim, interfejs API wykorzystuje zasięg VPS do generowania pozycji o wysokiej dokładności. W typowych warunkach usługa VPS zapewnia dokładność pozycjonowania na poziomie około 5 metrów oraz dokładność obrotu na poziomie 5 stopni. Użyj Session.checkVpsAvailabilityAsync(), aby określić, czy dana lokalizacja ma zasięg VPS.

Interfejsu Geospatial API można też używać na obszarach, które nie mają zasięgu VPS. Na zewnątrz, gdzie jest niewiele przeszkód z góry, lub bez przeszkód, do wygenerowania pozycji z dużą dokładnością wystarczy GPS.

Co dalej?