Starting Application Development
Welcome to the Maverick AI SDK! Build augmented reality experiences for Maverick AI glasses.
Taking the first steps
The Maverick AI SDK provides standard iOS and Android libraries, enabling you to configure, control, and display information on the Maverick AI smart-glasses display.
In order to start Maverick AI application development, you need to establish a standard iOS or Android development environment:
- Install Xcode or Android Studio
- Add the SDK to your project via Maven or SPM
- Verify you have your API Key
- Continue reading the SDK documentation
- Build and run the Samples
Supported Platforms
| OS | Minimum Version | Notes |
|---|---|---|
| iOS | iOS 16 | iPhone |
| Android | API 30 (Android 11) | Phone, tablet |
Looking for more?
Additional features including Maps, Navigation, Video, Speaker, Eye Tracker, and Smart Watch support are planned for future releases. See the Roadmap.
Feature Support
| Feature | Android | iOS | Simulator |
|---|---|---|---|
| HUD Rendering | Yes | Yes | Yes |
| LOS / AR | Yes | Yes | Partial |
| Camera | Yes | Yes | PC camera (if available) |
| Microphone | Yes | Yes | PC microphone (if available) |
| Inertial Sensors | Yes | Yes | No |
| Display Control | Yes | Yes | Yes |
| OTA | Yes | Yes | No |
Integration Paths
The SDK supports three integration paths:
| Path | Description |
|---|---|
| Compose Multiplatform (KMP) | Share UI and business logic across Android and iOS in a single codebase |
| Native Android | Standard Android project |
| Native iOS | Standard Xcode project |
All Kotlin code samples in this documentation apply to both Compose Multiplatform and Native Android projects. Swift samples show the iOS-specific syntax - see samples.
Getting Started
1) Add the SDK to your project
Follow the platform-specific setup guide:
2) Initialize the SDK
3) Configure your glasses
Once the glasses are connected, add screens and draw content using the UI Kit.
Required Permissions
Android
Add the following to your AndroidManifest.xml:
<!-- Internet (required for API key certificate) -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- BLE permissions (Android 11 and below) -->
<uses-permission android:name="android.permission.BLUETOOTH"
android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"
android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"
android:maxSdkVersion="30" />
<!-- BLE permissions (Android 12+) -->
<uses-permission android:name="android.permission.BLUETOOTH_SCAN"
android:usesPermissionFlags="neverForLocation" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
Note
On Android 12+ (API 31), BLUETOOTH_SCAN and BLUETOOTH_CONNECT are runtime permissions - request them at runtime before scanning or connecting.
iOS
Add the following to your Info.plist:
<key>NSBluetoothAlwaysUsageDescription</key>
<string>This app uses Bluetooth to connect to Maverick AI glasses.</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>This app communicates with Maverick AI glasses via Bluetooth.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Location is used for Bluetooth scanning on some iOS versions.</string>
If your app uses the camera or microphone from the glasses and needs to operate in background:
<key>NSCameraUsageDescription</key>
<string>Camera access for glasses camera features.</string>
<key>NSMicrophoneUsageDescription</key>
<string>Microphone access for glasses audio features.</string>
BLE Background Connectivity
To maintain the BLE connection to the glasses while your app is in the background, additional platform configuration is required.
Android
Declare a foreground service with connectedDevice type. This keeps the BLE connection alive when the user switches apps.
1. Add permissions to AndroidManifest.xml:
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
2. Declare the service:
<service
android:name=".BackgroundService"
android:enabled="true"
android:exported="false"
android:foregroundServiceType="connectedDevice"
android:stopWithTask="false" />
3. Start the foreground service after runtime permissions are granted, and call startForeground() with ServiceInfo.FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE.
Battery optimization
Recommend that users disable battery optimization for your app (Settings > Apps > Battery > Unrestricted). Android may otherwise kill background services to conserve power, causing BLE disconnects.
iOS
Add bluetooth-central to UIBackgroundModes in your Info.plist:
This tells iOS to keep the BLE connection active and deliver data while the app is backgrounded.
Note
Without bluetooth-central in background modes, iOS will disconnect BLE within seconds of the app going to background. See Troubleshooting if you experience unexpected disconnects.
Logging and Termination
The SDK includes built-in logging and should be properly stopped when your app terminates. See SDK Engine Overview for details on logging, resource resolver setup, and termination.
See Also
- Architecture - SDK architecture and service overview
- Platform Setup Overview - Choose your development platform
- Quickstart - Build your first glasses app in minutes