audio-streaming
Receive synchronized PCM audio frames through a Camera stream on Android
Receive navigation, button, capture, and drag input events from connected glasses on Android
$ npx -y skills add facebook/meta-wearables-dat-android --skill inputs --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/inputsContext preview
The summary Claude sees to decide when to auto-load this skill.
Receive navigation, button, capture, and drag input events from connected glasses on Android
name: inputs description: Receive navigation, button, capture, and drag input events from connected glasses on Android
Use the experimental Inputs capability to receive semantic interactions from glasses. The app must have Inputs enabled for it in Wearables Developer Center. Inputs does not have a `Permission` value to request at runtime.
Call `addInputs` only after `DeviceSessionState.STARTED`. Adding the capability starts it automatically; there is no separate public `start` call.
session.addInputs(
InputsConfiguration(consumeBack = true),
).fold(
onSuccess = { inputs ->
inputEventsJob = lifecycleScope.launch {
inputs.events.collect { event ->
when (event) {
is InputEvent.Nav -> moveFocus(event.direction)
is InputEvent.Select -> activateFocusedItem()
is InputEvent.Back -> dismissCurrentView()
is InputEvent.Button -> handleButton(event.button)
is InputEvent.Capture -> handleCaptureButton(event.pressType)
is InputEvent.Drag -> updateDrag(
event.action,
event.x,
event.y,
event.dx,
event.dy,
)
}
}
}
},
onFailure = { error, _ -> showError(error.description) },
)Retain the event job while Inputs is attached. Collect `state` when the UI needs activation state and `errors` for activation, connection, and communication failures.
The default configuration enables every known source except `UNKNOWN` and consumes Back. Set `consumeBack` to `false` when the system should handle Back.
Each event includes its source and device timestamp in milliseconds. Keep the `when` exhaustive so new behavior is intentional.
`InputsError.PERMISSION_DENIED` means the capability was not approved for the app; it is not fixed with `requestPermission`. Other errors cover activation, connection, and communication failures.
Cancel the collection jobs, then call `session.removeInputs()` and handle its `DatResult` before adding another Inputs capability.
After the app has attached Inputs, inject events through the paired mock glasses with calls such as `glasses.services.input.navDown()`. The service also exposes Select, Back, Button, Capture, and Drag injection. Calls made before Inputs is active, or from a source excluded by the configuration, are dropped.
Inputs is experimental. Apps can use it for development and beta testing, but cannot publish it to production release channels yet.
The Meta Wearables Device Access Toolkit enables developers to utilize Meta's AI glasses to build hands-free wearable experiences into their mobile applications.
Receive synchronized PCM audio frames through a Camera stream on Android
Capture standalone high-quality photos from connected glasses on Android
Session and Stream capability setup, video frames, photo capture, resolution and frame rate configuration
Kotlin patterns, DatResult, session and capability conventions for DAT SDK Android development
Use the Wearables DAT MCP server for live DAT documentation search with `search_dat_docs`, Muse Code, Claude Code, Codex, Cursor,…