Skip to content

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:

  1. Install Xcode or Android Studio
  2. Add the SDK to your project via Maven or SPM
  3. Verify you have your API Key
  4. Continue reading the SDK documentation
  5. 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

// In your Activity or Application
Evs.init(applicationContext)
Evs.shared.doInit()

3) Configure your glasses

Evs.showUI(M2ShowUIOption.DefaultConfigure)
Evs.shared.showUI(option: M2ShowUIOption.companion.DefaultConfigure)

Once the glasses are connected, add screens and draw content using the UI Kit.

Required Permissions

Android

Add the following to your AndroidManifest.xml:

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:

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:

Info.plist
<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:

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:

AndroidManifest.xml
<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:

Info.plist
<key>UIBackgroundModes</key>
<array>
    <string>bluetooth-central</string>
</array>

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