audio-streaming
Receive synchronized PCM audio frames through a Camera stream on Android
Launch and activate an Android app from Hey Meta voice invocations and acknowledge each action
$ npx -y skills add facebook/meta-wearables-dat-android --skill voice-invocations --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/voice-invocationsContext preview
The summary Claude sees to decide when to auto-load this skill.
Launch and activate an Android app from Hey Meta voice invocations and acknowledge each action
name: voice-invocations description: Launch and activate an Android app from Hey Meta voice invocations and acknowledge each action
Voice Invocations lets Meta AI launch or foreground an app when the wearer says “Hey Meta, start {app name}.” It is a Wearables-level stream, not a `DeviceSession` capability, and does not require a running device session.
Register the package name, request Voice Invocation approval, and configure the spoken app name in Wearables Developer Center. Do not declare invocation phrases in the manifest. Voice Invocations does not require camera or microphone permission.
Use the SDK validator in both entry points. Do not inspect intent extras yourself.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (isVoiceInvocationsIntent(intent)) startYourExperience()
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
setIntent(intent)
if (isVoiceInvocationsIntent(intent)) startYourExperience()
}Store one app-scoped stream. The factory starts it automatically; there is no separate public `start` call.
stream = Wearables.startVoiceInvocationsStream(AutoDeviceSelector())
invocationJob = appScope.launch {
stream.invocations.collect { invocation ->
when (invocation) {
is LaunchApp -> {
navigateToMainScreen()
invocation.responseHandle.sendSuccess(actionOutput = null)
}
}
}
}Collect `state` and `errors` when the app needs lifecycle or failure updates.
Every delivered invocation must be answered exactly once with `sendSuccess` or `sendFailure`. Both are suspend functions returning whether delivery succeeded.
The stream reports `STARTING`, `STARTED`, and `STOPPED`. Creation and automatic startup do not throw; failures surface through `errors` and state.
`close()` is terminal. Cancel collectors before closing the app-scoped stream when the app no longer listens.
To test without hardware, check `glasses.services.voiceInvocation.hasConnectedApps()` before calling `simulateLaunchAppAction()`. Use `simulateIncompleteAction()` to verify malformed actions surface an error rather than an invocation.
Voice Invocations is experimental. Apps can use it for development and beta testing, but cannot publish it to production release channels yet.
See the [Voice Invocations guide](https://wearables.developer.meta.com/docs/develop/dat/voice-invocations/).
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,…