audio-streaming
Receive synchronized PCM audio frames through a Camera stream on Android
Capture standalone high-quality photos from connected glasses on Android
$ npx -y skills add facebook/meta-wearables-dat-android --skill camera-capture --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/camera-captureContext preview
The summary Claude sees to decide when to auto-load this skill.
Capture standalone high-quality photos from connected glasses on Android
name: camera-capture description: Capture standalone high-quality photos from connected glasses on Android
Camera Capture is the experimental standalone high-quality photo path exposed by `camera.photo`. It is different from `stream.capturePhoto()`, which takes a photo while video streaming remains active.
The app needs Camera approval in Wearables Developer Center and `Permission.CAMERA`. Add Camera only after `DeviceSessionState.STARTED`. Stream and standalone Photo compete for camera hardware, so stop an active Stream before accessing Photo.
Accessing `camera.photo` lazily creates and starts the standalone Photo child. Collect its flows and wait for `PhotoState.STARTED` before enabling capture.
val photo = camera.photo
photoStateJob = lifecycleScope.launch {
photo.state.collect { state ->
photoButtonEnabled = state == PhotoState.STARTED
}
}
photoDataJob = lifecycleScope.launch {
photo.photoStream.collect { capture ->
save(capture.imageData, capture.metadata)
}
}
progressJob = lifecycleScope.launch {
photo.transferProgressStream.collect { progress -> updateProgress(progress) }
}
errorJob = lifecycleScope.launch {
photo.errors.collect { error -> showError(error.description) }
}After Photo reaches `PhotoState.STARTED`, call `photo.capturePhoto(resolution = PhotoResolution.FULL, quality = PhotoQuality.HIGH)` with the desired resolution and quality. Capture is asynchronous; data arrives through `photoStream`. Collect `transferProgressStream` for progress and `errors` for failures.
Handle not-ready, capture, setup, disconnect, busy, service, permission, and device-health errors from `errors`. After delivery, stop Photo, cancel its collectors, and stop Camera.
Photo is terminal after `stop()`, and accessing `camera.photo` again returns the same stopped instance. To capture again, remove the current Camera from the session, add a new Camera, and access Photo from that new instance. Stopping Camera or the parent session also cascades cleanup.
Configure the next image with `glasses.services.cameraCapture.setCapturedPhoto(imageUri)` or use `simulateCaptureFailure()` for a one-shot failure.
Standalone Camera Capture 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
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,…
Common issues, Developer Mode, version compatibility, and session and stream diagnosis
Display capability setup, display-capable device selection, UI DSL, icons, buttons, images, and video playback