Help us improve
Share bugs, ideas, or general feedback.
From mwdat-android
Walks through SDK setup, Gradle integration, AndroidManifest configuration, and first connection to Meta glasses using the Meta Wearables Device Access Toolkit.
npx claudepluginhub facebook/meta-wearables-dat-android --plugin mwdat-androidHow this skill is triggered — by the user, by Claude, or both
Slash command
/mwdat-android:getting-startedThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Set up the Meta Wearables Device Access Toolkit in an Android app.
Guides building an Android DAT app with registration, camera sessions, streaming, and photo capture using Meta Wearables SDK.
Guides through SDK setup, Swift Package Manager integration, Info.plist configuration, and first connection to Meta glasses for iOS apps.
Interactive wizard that analyzes Android/Kotlin codebases, recommends Horizon Platform SDK features, and guides integration for Meta Quest apps with on-device validation via hzdb.
Share bugs, ideas, or general feedback.
Set up the Meta Wearables Device Access Toolkit in an Android app.
read:packages scopeIn settings.gradle.kts:
val localProperties =
Properties().apply {
val localPropertiesPath = rootDir.toPath() / "local.properties"
if (localPropertiesPath.exists()) {
load(localPropertiesPath.inputStream())
}
}
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven {
url = uri("https://maven.pkg.github.com/facebook/meta-wearables-dat-android")
credentials {
username = ""
password = System.getenv("GITHUB_TOKEN") ?: localProperties.getProperty("github_token")
}
}
}
}
In libs.versions.toml:
[versions]
mwdat = "0.7.0"
[libraries]
mwdat-core = { group = "com.meta.wearable", name = "mwdat-core", version.ref = "mwdat" }
mwdat-camera = { group = "com.meta.wearable", name = "mwdat-camera", version.ref = "mwdat" }
mwdat-mockdevice = { group = "com.meta.wearable", name = "mwdat-mockdevice", version.ref = "mwdat" }
In app/build.gradle.kts:
dependencies {
implementation(libs.mwdat.core)
implementation(libs.mwdat.camera)
implementation(libs.mwdat.mockdevice)
}
AndroidManifest.xml<manifest ...>
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.INTERNET" />
<application ...>
<meta-data
android:name="com.meta.wearable.mwdat.APPLICATION_ID"
android:value="0" />
<activity android:name=".MainActivity" ...>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="myexampleapp" />
</intent-filter>
</activity>
</application>
</manifest>
Use 0 for APPLICATION_ID in Developer Mode. Replace myexampleapp with your app's URL scheme.
import com.meta.wearable.dat.core.Wearables
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
Wearables.initialize(this)
.onFailure { error, _ -> error("Failed to initialize DAT: ${error.description}") }
}
}
import com.meta.wearable.dat.core.Wearables
import com.meta.wearable.dat.core.selectors.AutoDeviceSelector
fun connect(activity: Activity) {
Wearables.startRegistration(activity)
}
fun startSession() {
val session = Wearables.createSession(AutoDeviceSelector()).getOrElse { error ->
throw IllegalStateException(error.description)
}
session.start()
}
Observe registration and available devices:
lifecycleScope.launch {
Wearables.registrationState.collect { state ->
// Update registration UI
}
}
lifecycleScope.launch {
Wearables.devices.collect { devices ->
// Update the device list
}
}
import com.meta.wearable.dat.camera.addStream
import com.meta.wearable.dat.camera.types.StreamConfiguration
import com.meta.wearable.dat.camera.types.VideoQuality
val stream = session.addStream(
StreamConfiguration(videoQuality = VideoQuality.MEDIUM, frameRate = 24),
).getOrElse { error ->
throw IllegalStateException(error.description)
}
stream.start().onFailure { error, _ ->
throw IllegalStateException(error.description)
}