meta_wearables_dat

Flutter plugin for Meta’s Wearables Device Access Toolkit (DAT).

Provides access to registration, device state, camera streaming, and photo capture from Meta AI glasses.

⚠️ Android only
This plugin currently supports Android only. iOS is currently not yet supported.


Features

  • Initialize Wearables SDK
  • Registration / unregistration via Meta AI app
  • Observe registration state and available devices
  • Request Wearables camera permission
  • Start / stop camera streaming
  • Receive live video frames in Flutter
  • Capture and share photos from an active stream

Requirements

Platform

  • Android 10+
  • Flutter v3.3+
  • GitHub account (for Meta SDK access)

Meta AI / Glasses

  • Ray-Ban Meta (Gen 1 or 2) or Oakley Meta HSTN
  • Meta AI app v247+
  • Glasses firmware v20+
  • Developer Mode enabled on glasses

Enable Developer Mode

  • Open Meta AI app
  • Go to Settings → App Info
  • Tap App version five times
  • Select the toggle to enable Developer Mode.
  • Click Enable to confirm.

Installation

dependencies:
  meta_wearables_dat: ^0.1.2

Android Setup

Permissions

Add to AndroidManifest.xml:

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.INTERNET" />

Wearables Application ID

Inside <application>:

<meta-data
    android:name="com.meta.wearable.mwdat.APPLICATION_ID"
    android:value="0" />

FileProvider (for photo sharing)

Inside <application>:

<provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="${applicationId}.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths" />
</provider>

Create:

android/app/src/main/res/xml/file_paths.xml

<?xml version="1.0" encoding="utf-8"?>
<paths>
    <cache-path name="cache" path="." />
</paths>

Gradle repositories (required)

Add these repositories in android/settings.gradle.kts:

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
    val localProperties =
        java.util.Properties().apply {
            val p = rootDir.resolve("local.properties")
            if (p.exists()) load(p.inputStream())
        }

    repositories {
        google()
        mavenCentral()

        maven { url = uri("https://storage.googleapis.com/download.flutter.io") }

        // Meta Wearables DAT (GitHub Packages)
        maven {
            url = uri("https://maven.pkg.github.com/facebook/meta-wearables-dat-android")
            credentials {
                username = "x-access-token"
                password =
                    System.getenv("GITHUB_TOKEN")
                        ?: localProperties.getProperty("github_token")
            }
        }
    }
}

Important: remove any repositories { ... } blocks from android/build.gradle(.kts) so these settings are used.


Meta SDK Dependency (GitHub Packages)

The Meta Wearables SDK is hosted on GitHub Packages.

Create a GitHub token

  • Token type: Personal access token (classic)
  • Required scope: read:packages

Instructions:
https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classic


Provide the token

Option A – environment variable

export GITHUB_TOKEN=your_token_here

Option B – local.properties (recommended)

github_token=your_token_here

Minimum SDK Version

This plug requires Android 10 (API 29) or higher.

In android/app/build.gradle.kts:

android {
    defaultConfig {
        minSdk = 29
    }
}

Usage

Initialize

await Wearables.instance.initialize();

Registration

await Wearables.instance.startRegistration();
await Wearables.instance.startUnregistration();
Wearables.instance.registrationStateStream.listen((state) {
  print(state.state);
});

Camera Permission

final status = await Wearables.instance.checkCameraPermission();
if (status != 'Granted') {
  await Wearables.instance.requestCameraPermission();
}

Streaming

await Wearables.instance.startStream(
  videoQuality: 'MEDIUM',
  frameRate: 24,
);

Wearables.instance.videoFramesStream.listen((bytes) {
  // JPEG frames (Uint8List)
});
await Wearables.instance.stopStream();

Example

A complete example app is included.

cd example
flutter run

Platform Support

Platform Supported
Android
iOS

License

This project is licensed under the BSD 3-Clause License.
See the LICENSE file for details.

Meta Wearables Device Access Toolkit is subject to Meta’s own terms.