SDK Android
Vue d’ensemble
Le SDK WAS VPS pour Android fournit des fragments Sceneform et des aides de cycle de vie pour localiser les utilisateurs dans vos cartes VPS sur des appareils ARCore. Le déroulé est identique au style Immersal : prérequis, installation, configuration du manifeste et démarrage du service.
Prérequis
- Android SDK minimum 24 (Android 7.0)
- Appareil compatible ARCore
- Projet utilisant Kotlin (les exemples sont en Kotlin)
Besoin d’une API key ? Obtenez-la sur space.web-ar.studio ou écrivez à support@webar3.com / support@web-ar.studio.
Installer le SDK
-
Vérifiez que Maven Central est configuré :
allprojects {
repositories {
mavenCentral()
// autres dépôts…
}
} -
Ajoutez la dépendance dans le module application :
dependencies {
implementation "com.arstudio:wasvps-sdk:1.0.0"
} -
Synchronisez Gradle.
Configurer le manifeste
Déclarez les capacités ARCore et, si besoin, redéfinissez la version SDK minimale :
<!-- Autoriser WASVPS SDK avec minSdk < 24 -->
<uses-sdk tools:overrideLibrary="com.arstudio.wasvps_sdk, com.google.ar.sceneform.sceneform, com.google.ar.sceneform.ux" />
<!-- Limiter par défaut aux appareils ARCore -->
<uses-feature
android:name="android.hardware.camera.ar"
android:required="true" />
Pour élargir la disponibilité sur Google Play, passez android:required à false et conservez tools:replace="android:required".
Démarrage rapide avec WASVPSArFragment
Intégrez le fragment fourni dans la mise en page de l’activité :
<!-- 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()
}
}
Récupérez le service et démarrez la localisation lorsque vous disposez des Location ID :
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() pour interrompre la localisation (par ex. dans onPause).
Intégration de fragment personnalisée
Si vous gérez votre propre ArFragment ou ArSceneView, créez et pilotez WASVPSService manuellement :
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()
}
}
Ancrer du contenu
Placez vos nodes par rapport à vpsService.worldNode. Les enfants de ce node adopteront automatiquement la pose globale après localisation.
val anchorNode = Node().apply {
setParent(vpsService.worldNode)
localPosition = Vector3(0f, 0f, -1f)
}
Dépannage
- Assurez-vous que Google Play Services for AR est installé et à jour.
- Si la localisation échoue, vérifiez votre API key, les Location ID et la configuration transmise au service.
- Consultez le module
/sampledu dépôt pour un flux complet avec permissions et UI.