Dowiedz się, jak używać usług zakotwiczonych Cloud we własnych aplikacjach.
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 dopiero zaczynasz korzystać z Cloud Anchors, upewnij się, że wiesz, jak działają kotwice i Cloud Anchor.
Włączanie interfejsu ARCore API
Zanim zaczniesz używać Cloud Anchors w swojej aplikacji, musisz włączyć w niej interfejs ARCore API.
Włącz funkcje Cloud Anchor w konfiguracji sesji
Po włączeniu funkcji Cloud Anchors w swojej aplikacji włącz je w konfiguracji sesji AR aplikacji, aby umożliwić komunikację z interfejsem ARCore API:
// Create a new ARCore session. ArSession* session = NULL; CHECK(ArSession_create(env, context, &session) == AR_SUCCESS); // Create a session config. ArConfig* config = NULL; ArConfig_create(session, &config); ArSession_getConfig(session, config); // Enable Cloud Anchor mode. ArConfig_setCloudAnchorMode(session, config, AR_CLOUD_ANCHOR_MODE_ENABLED); // Configure the session. ArSession_configure(session, config); ArConfig_destroy(config);
Hostowanie kotwicy Cloud
Hosting zaczyna się od wywołania ArSession_hostCloudAnchorAsync()
. ARCore prześle do interfejsu ARCore API dane wizualne, pozycje urządzeń i pozycję kotwicy. Następnie interfejs API przetwarza te informacje, aby utworzyć mapę funkcji 3D, co ostatecznie zwraca na urządzeniu unikalny identyfikator Cloud Anchor dla kotwicy.
Czas życia hostowanej kotwicy możesz też przedłużyć za pomocą interfejsu ARCore Cloud Anchor Management API.
Aby dokończyć hosting Cloud Anchor, Twoja aplikacja powinna wykonać te czynności:
- Zadzwoń pod numer
ArSession_hostCloudAnchorAsync()
. - Poczekaj na wywołanie zwrotne lub do czasu zakończenia sprawdzania sprawdzaj stan przyszły.
- Sprawdzanie stanu wyniku , aby określić, czy operacja się powiodła, lub zinterpretować kod błędu, jeśli operacja się nie udała.
- Udostępnij wynikowy identyfikator Cloud Anchor innym klientom i użyj go do rozpoznania elementu Cloud Anchor z:
ArSession_resolveCloudAnchorAsync()
Sprawdź jakość mapowania punktów obiektu
ArFeatureMapQuality
wskazuje jakość punktów cech zarejestrowanych przez ARCore w ciągu ostatnich kilku sekund przy danej pozycji kamery. Elementy zakotwiczone w chmurze hostowane przy użyciu funkcji o wyższej jakości są zwykle dokładniej rozpoznawane. Użyj narzędzia ArSession_estimateFeatureMapQualityForHosting()
, aby uzyskać oszacowanie jakości mapy cech w przypadku danej pozycji aparatu.
Wartość | Opis |
---|---|
INSUFFICIENT |
Jakość punktów cech zidentyfikowanych na podstawie pozycji w ciągu ostatnich kilku sekund jest niska. Ten stan oznacza, że usługa ARCore prawdopodobnie będzie miała większe trudności z rozwiązywaniem Cloud Anchor. Poproś użytkownika o przesunięcie urządzenia tak, aby punkt zakotwiczenia w chmurze, który chce hostować, był widoczny pod różnymi kątami. |
SUFFICIENT |
Jakość punktów cech zidentyfikowanych w pozycji w ciągu ostatnich kilku sekund jest prawdopodobnie wystarczająca do rozpoznania przez ARCore rozwiązania Cloud Anchor, choć dokładność ustalenia pozycji będzie prawdopodobnie mniejsza. Poproś użytkownika o przesunięcie urządzenia tak, aby punkt zakotwiczenia w chmurze, który chce hostować, był widoczny pod różnymi kątami. |
GOOD |
Jakość punktów cech zidentyfikowanych w pozycji w ciągu ostatnich kilku sekund jest prawdopodobnie wystarczająca, aby ARCore mogła z dużą dokładnością rozpoznać punkt zakotwiczenia w chmurze. |
Rozwiązywanie problemów z hostowaną wcześniej kotwicą
Wywołaj ArSession_resolveCloudAnchorAsync()
, aby rozpoznać hostowaną usługę Cloud Anchor. Interfejs ARCore API okresowo porównuje elementy wizualne sceny z mapą funkcji 3D reklamy zakotwiczonej, aby określić położenie i orientację użytkownika względem reklamy zakotwiczonej. Po znalezieniu dopasowania interfejs API zwraca pozycję hostowanej usługi Cloud Anchor.
Możesz inicjować sekwencje dla wielu elementów Cloud Anchor. Jednocześnie może istnieć maksymalnie 40 operacji Cloud Anchor.
Anulowanie operacji i usuwanie usługi Cloud Anchor
Wywołaj ArFuture_cancel()
, aby anulować oczekującą operację Cloud Anchor.
Wywołaj ArAnchor_detach()
, aby zatrzymać śledzenie i zapomnieć rozwiązaną wcześniej kotwicę Cloud Anchor. Odwołania do reklamy zakotwiczonej należy anulować oddzielnie za pomocą wywołania ArAnchor_release()
.
Sprawdzanie stanu wyniku operacji Cloud Anchor
Użyj ArCloudAnchorState, aby sprawdzić stan wyników operacji hostingu lub rozwiązywania, w tym błędy.
Wartość | Opis |
---|---|
AR_CLOUD_ANCHOR_STATE_ERROR_CLOUD_ID_NOT_FOUND |
Nie udało się rozwiązać problemu, ponieważ interfejs ARCore API nie mógł znaleźć podanego identyfikatora Cloud Anchor. |
AR_CLOUD_ANCHOR_STATE_ERROR_HOSTING_DATASET_PROCESSING_FAILED |
Nie udało się przeprowadzić hostingu, ponieważ serwer nie może przetworzyć zbioru danych w przypadku danej kotwicy. Spróbuj ponownie, gdy urządzenie zbierze więcej danych o środowisku. |
AR_CLOUD_ANCHOR_STATE_ERROR_HOSTING_SERVICE_UNAVAILABLE |
Interfejs ARCore API był nieosiągalny. Możliwych jest kilka przyczyn takiej sytuacji. Urządzenie może być w trybie samolotowym lub nie mieć działającego połączenia z internetem. Możliwe, że upłynął limit czasu żądania wysłanego do serwera i nie otrzymano odpowiedzi. Przyczyną może być nieprawidłowe połączenie sieciowe, niedostępność DNS, problem z zaporą sieciową lub inny problem, który może mieć wpływ na zdolność urządzenia do nawiązania połączenia z interfejsem ARCore API. |
AR_CLOUD_ANCHOR_STATE_ERROR_INTERNAL |
Zadanie hostingu lub rozwiązywania tej kotwicy zakończyło się błędem wewnętrznym. Aplikacja nie powinna próbować naprawić tego błędu. |
AR_CLOUD_ANCHOR_STATE_ERROR_NOT_AUTHORIZED |
Zobacz Rozwiązywanie problemów z autoryzacją w interfejsie ARCore API. |
AR_CLOUD_ANCHOR_STATE_ERROR_RESOLVING_SDK_VERSION_TOO_NEW |
Nie udało się rozwiązać problemu kotwicy Cloud, ponieważ wersja pakietu SDK użyta do rozwiązania kotwicy jest nowsza od wersji użytej do jej hostowania i niezgodna z nią. |
AR_CLOUD_ANCHOR_STATE_ERROR_RESOLVING_SDK_VERSION_TOO_OLD |
Nie udało się rozwiązać problemu kotwicy Cloud, ponieważ wersja pakietu SDK użyta do rozwiązania kotwicy jest starsza i niezgodna z wersją używaną do hostowania tej kotwicy i jest z nią niezgodna. |
AR_CLOUD_ANCHOR_STATE_ERROR_RESOURCE_EXHAUSTED |
Aplikacja wyczerpała limit żądań przypisany do danego projektu Google Cloud. W Google Developers Console musisz poprosić o zwiększenie limitu dla interfejsu ARCore API w projekcie. |
AR_CLOUD_ANCHOR_STATE_SUCCESS |
Zadanie hostingu lub rozwiązywania tej kotwicy zostało ukończone. |
Limity interfejsu API dotyczące hostów i realizacji żądań
Interfejs ARCore API ma następujące limity przepustowości żądań:
Typ limitu | Maksimum | Czas trwania | Dotyczy: |
---|---|---|---|
Liczba reklam zakotwiczonych | bez ograniczeń | Nie dotyczy | projekt |
Żądania hosta kotwicy | 30 | minuta | Adres IP i projekt |
Rozwiązywanie żądań zakotwiczenia | 300 | minuta | Adres IP i projekt |
Sprawdzone metody dbania o wygodę użytkowników
Poleć im, aby wykonali te czynności, by zapewnić wygodę korzystania z aplikacji:
- Zanim spróbujesz umieścić reklamę zakotwiczoną, odczekaj kilka sekund po rozpoczęciu sesji (umieszczając obiekt itp.). Dzięki temu śledzenie ustabilizuje się po pewnym czasie.
- Wybierając lokalizację, w której ma się wyświetlać reklama zakotwiczona, staraj się znaleźć obszar z elementami wizualnymi, które łatwo odróżnić od innych. Aby uzyskać jak najlepszy wynik, unikaj powierzchni odbijających światło oraz bez elementów wizualnych, takich jak puste białe ściany.
Trzymaj kamerę tak, aby znalazł się w centrum zainteresowania, i poruszaj urządzeniem wokół siebie w centrum zainteresowania, aby nanieść na mapę środowisko pod różnymi kątami, zachowując przy tym podobną odległość fizyczną. Pomoże to rejestrować więcej danych wizualnych i ułatwi rozwiązywanie problemów.
Podczas hostowania i rozwiązywania problemów zakotwiczonych Cloud Anchor upewnij się, że w rzeczywistym środowisku jest wystarczające oświetlenie.
Zasady wycofywania
- Aplikacje z pakietem ARCore SDK 1.12.0 lub nowszym podlegają zasadom wycofywania interfejsu Cloud Anchor API.
- Aplikacje utworzone za pomocą pakietu SDK ARCore lub starszego nie mogą hostować ani realizować elementów Cloud Anchor, ponieważ pakiet SDK używa starszego, wycofanego interfejsu ARCore API.
Co dalej?
- Więcej sposobów korzystania z ARCore w aplikacji znajdziesz w dokumentacji referencyjnej Androida NDK.