Android Native

MultiSet VPS SDK Integration Guide for Android Apps

This guide provides comprehensive instructions for integrating MultiSet's Visual Positioning System (VPS) SDK with Android applications using Kotlin and ARCore. The SDK enables centimeter-level accurate spatial localization within predefined maps or map sets, offering real-time 6DOF pose tracking for location-based AR experiences.

Prerequisites

  • Android Studio Arctic Fox (2020.3.1) or newer

  • Minimum SDK: API level 28 (Android 9.0)

  • Target SDK: API level 35 (Android 14)

  • Kotlin 1.8.0+

  • ARCore compatible device

  • Active MultiSet developer account with API credentials

  • Map Code or Map Set Code from the MultiSet platform

Features

  • ✅ Visual Positioning System (VPS) with centimeter-level accuracy

  • ✅ Single map and map set localization support

  • ✅ Real-time pose tracking with 6DOF

  • ✅ AR visualization with 3D gizmo at map origin

  • ✅ Portrait and landscape orientation support

  • ✅ Automatic token management for authentication

  • ✅ Debug logging for development

Usage Example


class MainActivity : AppCompatActivity() {
    private lateinit var viewModel: ARViewModel
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        
        // Initialize ViewModel
        viewModel = ViewModelProvider(this).get(ARViewModel::class.java)
        
        // Setup buttons
        authButton.setOnClickListener {
            viewModel.authenticate()
        }
        
        localizeButton.setOnClickListener {
            viewModel.startLocalization()
        }
        
        // Observe localization results
        viewModel.localizationResult.observe(this) { result ->
            if (result.pose_found) {
                // Update AR visualization
                updateGizmoPosition(result.pose)
            }
        }
    }
}

MultiSet Android Native SDK

Additionally, you can use the Android Native SDK here: https://github.com/MultiSet-AI/multiset-android-sdk

Last updated

Was this helpful?