Skonfiguruj ustawienia aplikacji, aby umożliwić korzystanie z interfejsu Geospatial API.
Wymagania wstępne
Upewnij się, że znasz podstawowe pojęcia związane z AR. i dowiedz się, jak skonfigurować sesję ARCore, zanim przejdziesz dalej.
Jeśli chcesz uruchomić przykładową aplikację prezentującą opisane funkcje obejrzyj Krótkie wprowadzenie do ARCore Geospatial na Androida dla Javy. Przykładowa aplikacja z krótkiego wprowadzenia jest napisana w Javie. Przykładowy kod w tym dokumencie dotyczą tych samych funkcji opisanych w języku C.
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 Twoje środowisko programistyczne spełnia wymagania pakietu ARCore SDK: opisane w krótkim wprowadzeniu do środowiska Java.
Włączanie interfejsu ARCore API
Przed użyciem systemu pozycjonowania wizualnego (VPS) w aplikacji 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 bez klucza, ale jest też obsługiwana autoryzacja klucza interfejsu API.
Dodaj wymagane biblioteki do aplikacji
Po autoryzowaniu aplikacji do wywoływania interfejsu ARCore API musisz dodać biblioteki do włączyć w aplikacji 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
:
// Create a session config. ArConfig* ar_config = NULL; ArConfig_create(ar_session, &ar_config); // Enable the Geospatial API. ArConfig_setGeospatialMode(ar_session, ar_config, AR_GEOSPATIAL_MODE_ENABLED); CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS); // Release config resources. ArConfig_destroy(ar_config);
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 używające ARCore Geospatial API muszą wyświetlić użytkownikowi przyjmuje do wiadomości i zezwala na korzystanie z danych ze swojego urządzenia. Zobacz Wymagania dotyczące prywatności. i informacjami o nich.
Sprawdź zgodność urządzeń
Nie wszystkie urządzenia obsługujące ARCore obsługują również interfejs Geospatial API, opisane w krótkim wprowadzeniu dla Javy.
Aby sprawdzić zgodność urządzenia użytkownika, wywołaj
ArSession_isGeospatialModeSupported()
Jeśli ta opcja zwraca wartość false (fałsz), nie próbuj konfigurować sesji (poniżej), tak jak robi to
więc spowoduje to, że ArStatus
zgłosi
AR_ERROR_UNSUPPORTED_CONFIGURATION
Poproś użytkownika o dostęp do lokalizacji podczas działania
Aplikacja musi prosić o dostęp do lokalizacji w czasie działania.
Aby można było używać 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. Nie można jednak skonfigurować interfejsu Geospatial API do pracy z przybliżoną lokalizacją, a żądania API zakończą się niepowodzeniem, jeśli 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 12 lub nowszym
o które mogą prosić użytkownicy
do których aplikacja ma dostęp tylko
przybliżona lokalizacja
i informacjami o nich. Aby uwzględnić to żądanie, aplikacja musi mieć
ACCESS_COARSE_LOCATION
skonfigurowane uprawnienia wraz z
ACCESS_FINE_LOCATION
,
jak pokazano powyżej. Musisz
skonfigurować oba ustawienia dostępu do lokalizacji.
Jeśli jednak użytkownicy podają przybliżoną lokalizację, uniemożliwia to korzystanie z danych geoprzestrzennych interfejsu API w celu uzyskania 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ą.
Sprawdź dostępność 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 VPS może zapewniać dokładność pozycjonowania do około 5 metrów i dokładność obrotu do 5 stopni. Użyj ArSession_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?
- Uzyskaj pozycję geoprzestrzenną kamery urządzenia, aby określić dokładną lokalizację urządzenia użytkownika w świecie rzeczywistym.
- Sprawdź dostępność VPS w podanej lokalizacji urządzenia.