Skip to content
Mobile
Skill

/voice-invocations

Launch and activate an Android app from Hey Meta voice invocations and acknowledge each action

BOOST
From plugin
meta-wearables-dat-android
38117 skills
Install
$ npx -y skills add facebook/meta-wearables-dat-android --skill voice-invocations --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/voice-invocations

Context 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

SKILL.md

voice-invocations.SKILL.md
name: voice-invocations
description: Launch and activate an Android app from Hey Meta voice invocations and acknowledge each action

Voice Invocations (Android)

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.

Configure the app

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.

Detect cold and warm launches

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()
}

Start and retain the stream

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 and test

`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.

Availability

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/).

Read more
Ships withmeta-wearables-dat-android

The Meta Wearables Device Access Toolkit enables developers to utilize Meta's AI glasses to build hands-free wearable experiences into their mobile applications.

Get the whole plugin