SDK Android
Ajoutez AR Clip VPS à une application Android native. Sur les appareils ARCore, le SDK trouve la position de l'utilisateur sur vos cartes VPS. Il est livré avec des fragments Sceneform et des outils pour gérer le cycle de vie.
Avant de commencer
- Android SDK 24 (Android 7.0) ou plus récent
- Un appareil compatible ARCore
- Un projet Kotlin (les exemples sont en Kotlin)
Obtenez-en une sur arclip.design ou écrivez à support@arclip.design.
Installation
-
Vérifiez que le projet récupère les artefacts depuis Maven Central :
allprojects {
repositories {
mavenCentral()
// other repositories...
}
} -
Ajoutez la dépendance au module de votre application :
dependencies {
implementation "com.arstudio:wasvps-sdk:1.0.0"
} -
Synchronisez Gradle.
Configurer le manifeste
Déclarez l'exigence ARCore. Si le minSdk de votre propre application est inférieur à 24, ajoutez
aussi le contournement uses-sdk, sinon le build échoue. Le SDK lui-même a quand même besoin
d'Android 7.0 (API 24) ou plus récent.
<!-- Only if your app's minSdk is below 24 -->
<uses-sdk tools:overrideLibrary="com.arstudio.wasvps_sdk, com.google.ar.sceneform.sceneform, com.google.ar.sceneform.ux" />
<!-- Restrict to ARCore hardware (default). Set required=false to broaden install base. -->
<uses-feature
android:name="android.hardware.camera.ar"
android:required="true" />
Pour que l'application soit proposée à plus d'appareils sur le Play Store, réglez
android:required="false" et ajoutez tools:replace="android:required", pour que votre valeur
remplace celle du SDK :
<uses-feature
android:name="android.hardware.camera.ar"
android:required="false"
tools:replace="android:required" />
Démarrage rapide avec WASVPSArFragment
Ajoutez le fragment fourni à votre layout :
<!-- res/layout/activity_main.xml -->
<androidx.fragment.app.FragmentContainerView
android:id="@+id/vFragmentContainer"
android:name="com.arstudio.wasvps_sdk.ui.WASVPSArFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
supportFragmentManager.beginTransaction()
.replace(R.id.vFragmentContainer, WASVPSArFragment())
.commit()
}
}
Une fois que vous avez vos identifiants de lieu, récupérez le service et lancez la localisation :
val fragment = supportFragmentManager
.findFragmentById(R.id.vFragmentContainer) as WASVPSArFragment
val config = WASVPSConfig.getIndoorConfig(listOf("your-location-id"))
val service = fragment.vpsService
service.setVpsConfig(config)
service.setVpsCallback(object : VpsCallback {
override fun onSuccess() = Unit
override fun onFail() = Unit
override fun onStateChange(state: State) = Unit
override fun onError(error: Throwable) {
Log.e("VPS", "Localization error", error)
}
})
service.startVpsService()
Appelez service.stopVpsService() quand l'expérience AR doit se mettre en pause, par exemple dans
onPause.
Utiliser votre propre fragment
Si vous avez votre propre ArFragment ou ArSceneView, créez et gérez WASVPSService
vous-même :
class CustomArFragment : ArFragment() {
private val vpsService = WASVPSService.newInstance()
override fun onAttach(context: Context) {
super.onAttach(context)
WASVPSSdk.init(context.applicationContext)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
vpsService.bindArSceneView(arSceneView)
vpsService.setVpsConfig(WASVPSConfig.getOutdoorConfig(listOf("location-id")))
}
override fun onResume() {
super.onResume()
vpsService.resume()
vpsService.startVpsService()
}
override fun onPause() {
vpsService.pause()
vpsService.stopVpsService()
super.onPause()
}
override fun onDestroyView() {
vpsService.destroy()
super.onDestroyView()
}
}
Placer du contenu
Ajoutez des nœuds comme enfants de vpsService.worldNode. Dès que le VPS a réussi, chaque enfant
suit la position globale localisée.
val anchorNode = Node().apply {
setParent(vpsService.worldNode)
localPosition = Vector3(0f, 0f, -1f)
}
Dépannage
- Vérifiez que Google Play Services for AR est installé et à jour sur l'appareil de test.
- Si la localisation ne réussit jamais, vérifiez la clé d'API transmise au SDK (via une configuration sécurisée), et vérifiez que vos identifiants de lieu existent.
- Le module
/sampledu dépôt contient un exemple complet, y compris les autorisations d'exécution et l'interface.