Build display-enabled interfaces with device selection, UI components, and media playback.
Copy the install command and let the AI configure it · recommended for beginners
Please install the "display-access" skill from askskill: 1. Download https://raw.githubusercontent.com/facebook/meta-wearables-dat-android/main/plugins/mwdat-android/skills/display-access/SKILL.md 2. Save it as ~/.claude/skills/display-access/SKILL.md 3. Reload skills and tell me it's ready
Create an interface configuration plan for a meeting room display: choose an appropriate display device, define a top title bar, three information cards, and bottom action buttons, and explain the layout and interactions.
A display interface plan with device recommendations, UI structure, component descriptions, and interaction logic.
Use a UI DSL to describe an information dashboard page that includes icons, buttons, an image area, and a video player, optimized for landscape display.
A UI DSL definition that clearly specifies component hierarchy, properties, and layout for page construction.
Design a multimedia playback page for a retail display, including a brand image carousel, promotional video playback, a back button, and status icons, and explain the playback control logic.
A multimedia page design spec covering visual components, media area arrangement, and playback control flow.
Use mwdat-display to render content on Meta Ray-Ban Display glasses.
Use this skill with getting-started and permissions-registration when creating a full app. A Display app still needs SDK initialization, app registration, Android permissions, and DAT manifest metadata before it can create a session.
In libs.versions.toml:
[libraries]
mwdat-display = { group = "com.meta.wearable", name = "mwdat-display", version.ref = "mwdat" }
In app/build.gradle.kts:
dependencies {
implementation(libs.mwdat.core)
implementation(libs.mwdat.display)
}
Display apps need the same core DAT setup as other apps plus DAM enabled:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.INTERNET" />
<application ...>
<meta-data
android:name="com.meta.wearable.mwdat.APPLICATION_ID"
android:value="${mwdat_application_id}" />
<meta-data
android:name="com.meta.wearable.mwdat.CLIENT_TOKEN"
android:value="${mwdat_client_token}" />
<meta-data
android:name="com.meta.wearable.mwdat.DAM_ENABLED"
android:value="true" />
</application>
Set mwdat_application_id and mwdat_client_token from Gradle manifest placeholders or local.properties, as in the DisplayAccess sample. Developer Mode builds can use the developer registration flow, but production builds need real Wearables Developer Center credentials.
Request the runtime permissions before initializing DAT, then call Wearables.initialize(context) once and start observing SDK state. Start registration with Wearables.startRegistration(activity), collect Wearables.registrationState, collect Wearables.registrationErrorStream, and wait for RegistrationState.REGISTERED before creating a display session. Use Wearables.startUnregistration(activity) when the user disconnects the app.
Display content only works on connected, compatible devices whose type supports display. Use the public device filter when you want automatic selection:
import com.meta.wearable.dat.core.Wearables
import com.meta.wearable.dat.core.selectors.AutoDeviceSelector
val selector = AutoDeviceSelector(filter = { device -> device.isDisplayCapable() })
val sessionResult = Wearables.createSession(selector)
Use SpecificDeviceSelector(selectedDeviceId) instead when your UI lets the user pick a specific DeviceIdentifier from Wearables.devices.
For device picker UI, mirror the DisplayAccess sample: collect Wearables.devices, start a metadata collection for each device ID from Wearables.devicesMetadata[id], remove metadata for devices that disappear, and show device name, device.deviceType.description, device.linkState, device.compatibility, and device.isDisplayCapable(). Keep selection disabled unless the device is LinkState.CONNECTED and display-capable, and surface DeviceCompatibility.DEVICE_UPDATE_REQUIRED with an openFirmwareUpdate action.
import com.meta.wearable.dat.core.types.Device
import com.meta.wearable.dat.core.types.DeviceIdentifier
import com.meta.wearable.dat.core.types.LinkState
import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.update
private val metadataJobs = mutableMapOf<DeviceIdentifier, Job>()
private val devicesMetadata = MutableStateFlow<Map<DeviceIdentifier, Device>>(emptyMap())
lifecycleScope.launch {
Wearables.devices.collect { deviceIds ->
(metadataJobs.keys - deviceIds).forEach { removedId ->
metadataJobs.remove(removedId)?.cancel()
devicesMetadata.update { current -> current - removedId }
}
deviceIds.forEach { id ->
metadataJobs.getOrPut(id) {
…
Set up camera sessions, stream video, capture photos, and tune resolution.
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.
Learn Kotlin conventions, result handling, and session patterns for DAT SDK Android.
Control Mac monitors with AI for brightness, inputs, presets, and sync.
Create, modify, debug, and preview PanelUI components in IWSDK apps.
Push structured content to mobile display boards with real-time panel routing.
Extract quantified design DNA from references and generate matching UI.
Automate desktop apps with screen capture, mouse keyboard control, and accessibility targeting.
Let AI see your desktop and automate tasks with mouse and keyboard control.