
Dat Conventions
- 5 installs
- 340 repo stars
- Updated August 3, 2026
- facebook/meta-wearables-dat-android
Reference for Kotlin patterns, DatResult handling, module layout, and session/capability conventions when building Meta Wearables DAT SDK Android apps.
About
Documents DAT SDK Android conventions including Kotlin patterns, DatResult, the four public modules, and Gradle build commands. Android developers use it as the baseline convention reference across a DAT SDK integration.
- Four modules: core, camera, display, mockdevice
- Gradle build/test/install/lint quick reference
Dat Conventions by the numbers
- 5 all-time installs (skills.sh)
- Ranked #828 of 1,039 Mobile Development skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/facebook/meta-wearables-dat-android --skill dat-conventionsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 5 |
|---|---|
| repo stars | ★ 340 |
| Last updated | August 3, 2026 |
| Repository | facebook/meta-wearables-dat-android ↗ |
What it does
Reference for Kotlin patterns, DatResult handling, module layout, and session/capability conventions when building Meta Wearables DAT SDK Android apps.
Files
DAT SDK Conventions (Android)
Quick Reference
| Task | Command |
|---|---|
| Build app | ./gradlew assembleDebug |
| Run tests | ./gradlew test |
| Install app | ./gradlew installDebug |
| Lint app | ./gradlew lint |
Architecture
The SDK is organized into four public modules:
- mwdat-core: Registration, permissions, devices, and session creation
- mwdat-camera: Stream capability, video frames, and photo capture
- mwdat-display: Display capability, display UI components, icons, images, buttons, and video
- mwdat-mockdevice: MockDeviceKit for testing without hardware
Initialization and session setup
Wearables.initialize(context)
val session = Wearables.createSession(AutoDeviceSelector()).getOrElse { error ->
throw IllegalStateException(error.description)
}
session.start()
val stream = session.addStream(StreamConfiguration()).getOrElse { error ->
throw IllegalStateException(error.description)
}
stream.start().getOrElse { error ->
throw IllegalStateException(error.description)
}Kotlin patterns
- Use
DatResult<T, E>for typed success and failure handling - Observe state with
StateFlowandFlow - Create a
Sessionfirst, then attach capabilities such asStreamorDisplay - Keep frame handling off the main thread when doing heavier processing
Error handling
Wearables.checkPermissionStatus(Permission.CAMERA)
.onSuccess { status -> /* handle status */ }
.onFailure { error, _ -> /* handle error */ }Avoid getOrThrow() in user-facing samples. Surface typed errors from DatResult instead.
Naming conventions
| Type | Purpose | Example |
|---|---|---|
Session | Device connection lifecycle | Wearables.createSession(...) |
Stream | Camera capability on a session | session.addStream(...) |
Display | Display capability on a session | session.addDisplay(...) |
*Selector | Device targeting | AutoDeviceSelector |
*Error | Typed failure surface | SessionError, StreamError |
Key types
Wearables— SDK entry pointSession— lifecycle for an interaction with a linked deviceStream— camera capability attached to a sessionDisplay— display capability attached to a sessionStreamConfiguration— video quality and frame rate configurationMockDeviceKit— simulated device environment for testing
Live docs search
If your editor supports remote MCP servers, connect https://mcp.facebook.com/wearables_dat and use search_dat_docs for current DAT setup, session lifecycle, camera streaming, MockDeviceKit, permissions, and exact API symbols.
Use llms.txt when your tool only supports static reference context.
Testing with MockDeviceKit
val mockDeviceKit = MockDeviceKit.getInstance(context)
mockDeviceKit.enable()
val device = mockDeviceKit.pairRaybanMeta()Use MockDeviceKit to drive registration, device availability, streaming media, and permission scenarios without physical hardware.
Common pitfalls
- Do not call SDK APIs before
Wearables.initialize(context) - Do not assume a session implies streaming or display access; capabilities are attached separately
- Do not ignore
DatResultfailures fromcreateSession,start,addStream,addDisplay, orcapturePhoto - Do not reuse terminally stopped sessions