Set up camera sessions, stream video, capture photos, and tune resolution.
The materials indicate an open-source Android camera streaming capability example with no declared secrets or remote endpoints, so overall risk appears low. Its main function is to access a wearable device camera via a session and receive video frames/capture photos, which warrants attention to device-side privacy and any local storage logic.
The materials and objective checks indicate no required secrets or environment variables. No API tokens, account credentials, or other sensitive authentication handling are described, so credential exposure risk is low.
No remote endpoints are declared. The documentation describes establishing a session with a wearable device and receiving video frames via a stream, with no evidence of sending images or user data to internet services.
This is not merely documentation; it is Android capability code that creates sessions, starts/stops streams, and triggers photo capture. Such local code execution and device control are normal for this type of tool, and no red flags suggest system privileges beyond its stated purpose.
The functionality explicitly involves receiving video frames and photo data, and the example shows saving image bytes, meaning it handles potentially sensitive visual data. The materials do not show broad filesystem access or excessive permissions, but storage scope and user notice should be controlled.
The source is an open-source GitHub repository, and it is corroborated by Meta wearables developer documentation, giving it reasonable auditability. Community adoption of about 289 stars is a positive signal. The missing license declaration and unknown maintenance status warrant monitoring but do not alone justify a high-risk rating.
Copy the install command and let the AI configure it · recommended for beginners
Please install the "camera-streaming" skill from askskill: 1. Download https://raw.githubusercontent.com/facebook/meta-wearables-dat-android/main/plugins/mwdat-android/skills/camera-streaming/SKILL.md 2. Save it as ~/.claude/skills/camera-streaming/SKILL.md 3. Reload skills and tell me it's ready
Help me configure the camera-streaming skill to start the default camera session and output live video frames at 1280x720 and 30fps.
A working camera session configuration that starts streaming frames at the requested resolution and frame rate.
Use camera-streaming to capture a photo from the current camera session and save it as a high-quality image file.
A still image captured from the current stream, along with the save result or file path.
Update the current camera-streaming session to 1920x1080 at 60fps and verify whether the device supports it.
An updated streaming configuration result indicating whether the target resolution and frame rate were applied or limited.
Use a Session and attached Stream to receive frames and capture photos.
Wearables.createSession(...)session.addStream(...)import com.meta.wearable.dat.camera.Stream
import com.meta.wearable.dat.camera.addStream
import com.meta.wearable.dat.camera.types.StreamConfiguration
import com.meta.wearable.dat.camera.types.VideoQuality
import com.meta.wearable.dat.core.Wearables
import com.meta.wearable.dat.core.selectors.AutoDeviceSelector
val session = Wearables.createSession(AutoDeviceSelector()).getOrElse { error ->
throw IllegalStateException(error.description)
}
session.start()
val stream: Stream = session.addStream(
StreamConfiguration(
videoQuality = VideoQuality.MEDIUM,
frameRate = 24,
),
).getOrElse { error ->
throw IllegalStateException(error.description)
}
stream.start().getOrElse { error ->
throw IllegalStateException(error.description)
}
| Quality | Size |
|---|---|
VideoQuality.HIGH | 720 x 1280 |
VideoQuality.MEDIUM | 504 x 896 |
VideoQuality.LOW | 360 x 640 |
Valid values: 2, 7, 15, 24, 30 FPS.
Lower resolution and frame rate usually produce better visual quality per frame over Bluetooth.
StreamState transitions: STOPPED -> STARTING -> STARTED -> STREAMING -> STOPPING -> STOPPED -> CLOSED
lifecycleScope.launch {
stream.state.collect { state ->
when (state) {
StreamState.STREAMING -> {
// Frames are flowing
}
StreamState.STOPPED -> {
// Streaming ended
}
StreamState.CLOSED -> {
// Stream fully closed
}
else -> Unit
}
}
}
lifecycleScope.launch {
stream.videoStream.collect { frame ->
updatePreview(frame)
}
}
lifecycleScope.launch {
stream.capturePhoto()
.onSuccess { photoData ->
val imageBytes = photoData.data
savePhoto(imageBytes)
}
.onFailure { error, _ ->
showCaptureError(error.description)
}
}
Stop the stream when you no longer need camera data, then stop the parent session if the device interaction is finished.
stream.stop()
session.stop()
If you want to remove the capability entirely before re-adding it, call session.removeStream().
Set up the Android SDK and connect to Meta glasses for the first time.
Test and validate glasses features without physical hardware using MockDeviceKit.
Build a complete DAT app with sessions, camera streaming, and photo capture.
Manage session and stream state with pause, resume, and device monitoring.
Diagnose common issues, compatibility problems, and session or stream debugging cases.
Helps developers set up Meta AI app registration and device permission flows.
Stream camera video, capture frames or photos, and configure resolution and frame rate.
Capture frames or short clips from RTSP and ONVIF cameras.
Build a complete DAT app with camera streaming and photo capture.
Manage device session states, pause and resume flows, and availability monitoring.
Ingest, analyze, search, edit, and monitor video and audio streams.
Connect to workshop ESP32-CAMs to capture photos, check status, and control flash LEDs.