Włącz AR, aby korzystać z funkcji rzeczywistości rozszerzonej w nowej lub istniejącej aplikacji.
Skonfiguruj aplikację jako AR wymagany lub AR opcjonalny
Aby zaoszczędzić miejsce na poszczególnych urządzeniach, wszystkie funkcje AR są przechowywane w aplikacji Usługi Google Play dla AR, która jest aktualizowana osobno przez Sklep Play. Aplikacje na Androida, które korzystają z funkcji AR, komunikują się z Usługami Google Play dla AR za pomocą pakietu ARCore SDK. Aplikację obsługującą funkcje AR można skonfigurować na 2 sposoby: AR wymagany i AR opcjonalny. To oznaczenie określa, jak aplikacja współpracuje z aplikacją Usługi Google Play dla AR.
Aplikacja AR Required nie może działać bez ARCore. Wymaga to obsługi ARCore na urządzeniu z zainstalowanymi Usługami Google Play dla AR.
- Sklep Google Play udostępnia aplikacje AR Required tylko na urządzeniach obsługujących ARCore.
- Gdy użytkownicy instalują aplikację wymagającą AR, Sklep Google Play automatycznie zainstaluje na ich urządzeniu Usługi Google Play dla AR. Aplikacja musi jednak przeprowadzić dodatkowe kontrole w czasie działania, jeśli Usługi Google Play dla AR są nieaktualne lub zostały ręcznie odinstalowane.
Aplikacja z opcjonalną rzeczywistością rozszerzoną używa ARCore do rozszerzenia dotychczasowych funkcji. Zawiera opcjonalne funkcje AR, które są aktywowane tylko na urządzeniach z obsługą ARCore, na których są zainstalowane Usługi Google Play dla AR.
- Aplikacje AR opcjonalne można instalować i uruchamiać na urządzeniach, które nie obsługują ARCore.
- Gdy użytkownicy instalują aplikację z opcjonalną funkcją AR, Sklep Google Play nie automatycznie nie instaluje na urządzeniu Usług Google Play dla AR.
Wymagany AR | Opcjonalnie: AR | |
---|---|---|
Korzystanie z funkcji AR | Podstawowa funkcjonalność aplikacji wymaga ARCore. | ARCore rozszerza funkcjonalność aplikacji. Aplikacja może działać bez obsługi ARCore. |
Widoczność w Sklepie Play | Twoja aplikacja jest dostępna w Sklepie Play tylko na urządzeniach obsługujących ARCore. | Twoja aplikacja podlega standardowym procedurom publikowania. |
Metoda instalacji Usług Google Play dla AR | Sklep Play instaluje Usługi Google Play dla AR razem z Twoją aplikacją. | Aplikacja używa
ArCoreApk.requestInstall()
do pobrania i zainstalowania ARCore. |
Wymagania dotyczące Androida minSdkVersion |
Android 7.0 (poziom interfejsu API 24) | Android 4.4 (interfejs API na poziomie 19), ale uruchomienie dowolnej funkcji AR wymaga co najmniej Androida 7.0 (interfejs API na poziomie 24) |
Aby sprawdzić obsługę i stan instalacji ARCore, musisz użyć ArCoreApk_checkAvailability() lub ArCoreApk_checkAvailabilityAsync() .
|
||
Aby zainstalować Usługi Google Play dla AR, musisz użyć
ArCoreApk.requestInstall()
|
Aby ustawić wymaganą lub opcjonalną obsługę AR w aplikacji, zaktualizuj plik AndroidManifest.xml
, aby zawierał te wpisy:
Wymagany AR
<uses-permission android:name="android.permission.CAMERA" />
<!-- Limits app visibility in the Google Play Store to ARCore supported devices
(https://developers.google.com/ar/devices). -->
<uses-feature android:name="android.hardware.camera.ar" />
<application …>
…
<!-- "AR Required" app, requires "Google Play Services for AR" (ARCore)
to be installed, as the app does not include any non-AR features. -->
<meta-data android:name="com.google.ar.core" android:value="required" />
</application>
Opcjonalnie: AR
<uses-permission android:name="android.permission.CAMERA" />
<!-- If your app was previously AR Required, don't forget to remove the
`<uses-feature android:name="android.hardware.camera.ar" />` entry, as
this would limit app visibility in the Google Play Store to only
ARCore supported devices. -->
<application …>
…
<!-- "AR Optional" app, contains non-AR features that can be used when
"Google Play Services for AR" (ARCore) is not available. -->
<meta-data android:name="com.google.ar.core" android:value="optional" />
</application>
Następnie zmodyfikuj build.gradle
aplikacji, aby określić minSdkVersion
o wartości co najmniej 24
:
android {
defaultConfig {
…
minSdkVersion 24
}
}
Dodawanie zależności kompilacji
Upewnij się, że plik
build.gradle
projektu zawiera repozytorium Maven firmy Google.allprojects { repositories { google() … } }
Dodaj niestandardowe zadanie do pliku
build.gradle
modułu, aby wyodrębnić dołączone natywne biblioteki z pliku AAR ARCore. Dzięki temu można się do nich odwoływać bezpośrednio w projekcie C lub C++.W katalogu
app/build
zdefiniuj zmienną dla katalogu, do którego mają zostać wyeksportowane biblioteki natywne.Utwórz konfigurację Gradle, która będzie przechowywać dane i zadania wyodrębniania.
/* The ARCore AAR library contains native shared libraries that are extracted before building to a temporary directory. */ def arcore_libpath = "${buildDir}/arcore-native" // Create a configuration to mark which aars to extract .so files from configurations { natives }
Utwórz zadanie kopiowania bibliotek natywnych z pliku AAR i dodaj je do zależności kompilacji.
// Extracts the shared libraries from AARs in the native configuration // so that NDK builds can access these libraries. task extractNativeLibraries() { // Extract every time. outputs.upToDateWhen { false } doFirst { configurations.natives.files.each { f -> copy { from zipTree(f) into arcore_libpath include "jni/**/*" } } } } tasks.whenTaskAdded { task-> if (task.name.contains("external") && !task.name.contains("Clean")) { task.dependsOn(extractNativeLibraries) } }
Skonfiguruj flagi natywnych kompilacji, aby przekazywać lokalizacje do zewnętrznych narzędzi kompilacji.
// From the sample app. externalNativeBuild { cmake { cppFlags "-std=c++11", "-Wall" arguments "-DANDROID_STL=c++_static", "-DARCORE_LIBPATH=${arcore_libpath}/jni", "-DARCORE_INCLUDE=${project.rootDir}/../../libraries/include" } }
Dodaj zależności zarówno dla bibliotek natywnych, jak i Java.
dependencies { ... // Add Java and native dependencies to the ARCore library. implementation 'com.google.ar:core:1.33.0' natives 'com.google.ar:core:1.33.0' ... }
Odwołuj się do bibliotek natywnych w pliku
CMakeLists.txt
.# Import the ARCore library. add_library(arcore SHARED IMPORTED) set_target_properties(arcore PROPERTIES IMPORTED_LOCATION ${ARCORE_LIBPATH}/${ANDROID_ABI}/libarcore_sdk_c.so INTERFACE_INCLUDE_DIRECTORIES ${ARCORE_INCLUDE} )
Wykonywanie kontroli w czasie działania
Aby mieć pewność, że funkcje AR w aplikacji działają płynnie, wykonaj te czynności w czasie działania.
Sprawdzanie, czy ARCore jest obsługiwane
Zarówno aplikacje AR wymagane, jak i aplikacje AR opcjonalne powinny używaćArCoreApk_checkAvailability()
lub ArCoreApk_checkAvailabilityAsync()
, aby określić, czy aktualne urządzenie obsługuje ARCore. Na urządzeniach, które nie obsługują ARCore, aplikacje powinny wyłączać funkcje związane z AR i ukrywać powiązane elementy interfejsu.
Aplikacja NDK na Androida może używać klasy Java ArCoreApk
do sprawdzania zgodności i zarządzania instalacją w natywnym interfejsie ARCore Session API w języku C. W zależności od struktury aplikacji może to być łatwiejsze niż korzystanie z funkcji ArCoreApk_
, ponieważ wymaga to obsługi dużej liczby błędów i interakcji z interfejsem.
void maybeEnableArButton(JNIEnv env, jobject context) {
// Likely called from Activity.onCreate() of an activity with AR buttons.
ArAvailability availability
ArCoreApk_checkAvailability(env, context, &availability);
if (availability == AR_AVAILABILITY_UNKNOWN_CHECKING) {
// Set a timer to call maybeEnableArButton() again after about 200ms.
}
if (availability == AR_AVAILABILITY_SUPPORTED_NOT_INSTALLED ||
availability == AR_AVAILABILITY_SUPPORTED_APK_TOO_OLD ||
availability == AR_AVAILABILITY_SUPPORTED_INSTALLED) {
// Show or enable the AR button.
} else {
// Hide or disable the AR button.
}
}
ArCoreApk_checkAvailability()
lub ArCoreApk_checkAvailabilityAsync()
do sprawdzenia obsługi ARCore zapewni spójne działanie.
ArCoreApk_checkAvailability()
może wysyłać zapytania do zasobów sieciowych, aby określić, czy urządzenie obsługuje ARCore. W tym czasie zwraca wartość AR_AVAILABILITY_UNKNOWN_CHECKING
. Aby zmniejszyć odczuwalny czas oczekiwania i wyświetlania wyskakujących okienek, aplikacje powinny wywołać funkcję ArCoreApk_checkAvailability()
raz na początku cyklu życia, aby zainicjować zapytanie, ignorując zwróconą wartość. Dzięki temu wynik z pamięci podręcznej będzie dostępny natychmiast, gdy wyświetli się element interfejsu AR.
Sprawdzanie, czy Usługi Google Play dla AR są zainstalowane
Zarówno aplikacje z wymaganiem AR, jak i z opcjonalnym AR muszą korzystać z
ArCoreApk.requestInstall()
przed utworzeniem sesji ARCore, aby sprawdzić, czy kompatybilna wersja Usług Google Play dla AR jest (nadal) zainstalowana, oraz czy wszystkie wymagane dane profilu urządzenia ARCore zostały pobrane.
// Tracks if an installation request has already been triggered.
bool install_requested_;
void nativeOnCreate() {
// Do other setup here.
install_requested_ = false;
}
void nativeOnResume(JNIEnv env, jobject activity) {
if (ar_session_ == null) {
bool user_requested_install = !install_requested_;
ArInstallStatus install_status;
// Ensure that Google Play Services for AR and ARCore device profile data are
// installed and up to date.
ArStatus error = ArCoreApk_requestInstall(
env, activity, user_requested_install, &install_status);
if (error != AR_SUCCESS) {
// Inform user of error.
return;
}
switch (install_status) {
case AR_INSTALL_STATUS_INSTALLED:
break;
case AR_INSTALL_STATUS_INSTALL_REQUESTED:
// When this method returns AR_INSTALL_STATUS_INSTALL_REQUESTED:
// 1. This activity will be paused.
// 2. The user is prompted to install or update Google Play
// Services for AR (market://details?id=com.google.ar.core).
// 3. ARCore downloads the latest device profile data.
// 4. This activity is resumed. The next invocation of
// ArCoreApk_requestInstall() will either return
// AR_INSTALL_STATUS_INSTALLED or throw an exception if the
// installation or update did not succeed.
install_requested_ = true;
return;
}
// Request camera permissions.
error = ArSession_create(env, context, &ar_session_);
if (error != AR_SUCCESS) {
// Inform user of error.
return;
}
// Configure the ARCore session.
}
// Normal onResume behavior.
}
Zapewnienie zgodności z wymaganiami dotyczącymi prywatności użytkowników
Aby opublikować aplikację w Sklepie Play, upewnij się, że jest ona zgodna z wymaganiami dotyczącymi prywatności użytkowników ARCore.
Co dalej?
- Dowiedz się, jak skonfigurować sesję ARCore.