使用 MockDeviceKit 在无实体眼镜硬件时进行功能联调与测试验证
该技能材料显示其为开源的 Android 本地测试库/提示性文档,用于模拟 Meta 眼镜设备行为,未声明需要密钥或远程连接。基于现有材料,整体风险较低;主要注意其会在应用测试环境中模拟设备、权限与本地媒体输入,属于开发测试场景的常规能力。
材料明确注明无需密钥或环境变量,README 也未出现 API token、账号授权或凭证上传流程;未见明显凭证泄露或滥用面。
客观检查项与材料均显示无远程端点,功能描述集中于本地模拟设备、相机与权限行为;未见将用户数据外发到第三方服务的证据。
这是面向 Android 集成测试的模拟库/文档,材料未显示其会额外下载并执行外部代码,也未声明超出测试框架常规范围的系统执行能力。README 中的 ffmpeg 仅为示例转换命令,不构成该技能自身执行代码的证据。
材料表明其可接收本地 videoUri/imageUri 作为模拟相机输入,并在 Android 测试环境中操控注册状态、权限结果和设备状态;这意味着会接触应用测试数据与本地媒体资源,但未见超出声明用途的过度数据访问描述。
来源为 GitHub 开源仓库,且具有一定社区采用度(289 star),可审计性较好;虽许可证未声明、维护状态未知,存在一定供应链不确定性,但目前未见闭源外传、可疑安装脚本或明显误导迹象。
复制安装指令,让 AI 自动完成配置 · 推荐新手
请帮我安装 askskill 上的 "mockdevice-testing" 技能: 1. 下载 https://raw.githubusercontent.com/facebook/meta-wearables-dat-android/main/plugins/mwdat-android/skills/mockdevice-testing/SKILL.md 2. 保存为 ~/.claude/skills/mockdevice-testing/SKILL.md 3. 装好后重载技能,告诉我可以用了
请使用 MockDeviceKit 设计一套无需实体眼镜硬件的测试方案,覆盖设备连接、传感器输入、显示反馈和异常断连场景,并给出执行步骤与验证要点。
一套可执行的模拟测试方案,包含测试场景、步骤、预期结果与异常验证要点。
基于 MockDeviceKit,帮我生成自动化测试脚本思路,用于模拟眼镜设备的启动、配对、数据流输入和错误恢复流程,并说明如何集成到 CI。
自动化测试脚本框架建议,以及接入持续集成流程的实施说明。
我在使用 MockDeviceKit 模拟眼镜硬件时遇到状态不同步和事件延迟问题,请给出系统化排查清单,按环境配置、接口调用、事件队列和日志分析分类说明。
一份结构化排障清单,帮助快速定位模拟测试中的配置或逻辑问题。
Use MockDeviceKit to test DAT SDK integrations without physical Meta glasses.
MockDeviceKit simulates Meta glasses behavior for development and testing. It provides:
MockDeviceKit — Entry point for creating simulated devicesMockRaybanMeta — Simulated Ray-Ban Meta glassesMockCameraKit — Simulated camera with configurable video feed and photo captureAdd mwdat-mockdevice to your Gradle dependencies:
dependencies {
implementation(libs.mwdat.mockdevice)
}
import com.meta.wearable.dat.mockdevice.MockDeviceKit
import com.meta.wearable.dat.mockdevice.api.MockDeviceKitConfig
val mockDeviceKit = MockDeviceKit.getInstance(context)
// Attach fake registration and connectivity (auto-initializes Wearables if needed).
// By default, Wearables.registrationState transitions to Registered.
mockDeviceKit.enable()
// Or start in unregistered state to test registration flows:
// mockDeviceKit.enable(MockDeviceKitConfig(initiallyRegistered = false))
val device = mockDeviceKit.pairRaybanMeta()
You can check mockDeviceKit.isEnabled to query whether the mock environment is active.
// Simulate glasses lifecycle
device.powerOn()
device.unfold()
device.don() // Simulate wearing the glasses
// Later...
device.doff() // Simulate removing
device.fold()
device.powerOff()
MockDeviceKit provides permissions to control permission behavior without the Meta AI app.
By default, RequestPermissionContract returns Granted. Use set() to control checkPermissionStatus() and setRequestResult() to control request outcomes.
val mockDeviceKit = MockDeviceKit.getInstance(context)
// Simulate denied camera permission status
mockDeviceKit.permissions.set(Permission.CAMERA, PermissionStatus.Denied)
// Simulate denied request result (user tapping "deny")
mockDeviceKit.permissions.setRequestResult(Permission.CAMERA, PermissionStatus.Denied)
val camera = device.services.camera
camera.setCameraFeed(videoUri)
val camera = device.services.camera
camera.setCapturedImage(imageUri)
Note: Android doesn't transcode video automatically. Mock video files must be in h.265 format. Use FFmpeg to convert:
ffmpeg -hwaccel videotoolbox -i input.mp4 -c:v hevc_videotoolbox -c:a aac_at -tag:v hvc1 -vf "scale=540:960" output.mov
Create a reusable test base class:
import android.content.Context
import androidx.test.ext.junit.rules.ActivityScenarioRule
import androidx.test.platform.app.InstrumentationRegistry
import com.meta.wearable.dat.mockdevice.MockDeviceKit
import com.meta.wearable.dat.mockdevice.api.MockDeviceKitInterface
import org.junit.After
import org.junit.Before
import org.junit.Rule
open class MockDeviceKitTestCase<T : Any>(
private val activityClass: Class<T>
) {
@get:Rule
val scenarioRule = ActivityScenarioRule(activityClass)
protected lateinit var mockDeviceKit: MockDeviceKitInterface
protected lateinit var targetContext: Context
@Before
open fun setUp() {
val instrumentation = InstrumentationRegistry.getInstrumentation()
targetContext = instrumentation.targetContext
mockDeviceKit = MockDeviceKit.getInstance(targetContext)
grantRuntimePermissions()
}
@After
open fun tearDown() {
mockDeviceKit.disable()
}
private fun grantRuntimePermissions() {
val packageName = targetContext.packageName
val shell = InstrumentationRegistry.getInstrumentation().uiAutomation
shell.executeShellCommand("pm grant $packageName android.permission.BLUETOOTH_CONNECT")
shell.executeShellCommand("pm grant $packageName android.permission.CAMERA")
}
}
…
帮助用户配置摄像头会话与视频流,并完成拍照及分辨率帧率设置
指导你构建含会话创建、相机串流与拍照功能的完整 DAT 应用
帮助开发者管理会话与流状态,并处理暂停恢复及设备可用性监控
帮助排查常见故障、版本兼容与会话流诊断问题,提升开发调试效率
帮助开发者完成 Meta AI 应用注册与设备权限接入流程配置。
帮助开发可视化界面,完成显示设备选择、控件配置与多媒体播放集成。
帮助开发者完成 Meta 眼镜 SDK 安装配置并建立首次连接。
帮助开发者完成 Meta 眼镜安卓 SDK 接入与首次设备连接
让 AI 通过多种工具操作 iOS 模拟器,执行移动应用测试与交互验证。
帮助 Swift 开发者用协议依赖注入编写可测试代码并高效构建 Mock。
用于模拟和代理 HTTP/HTTPS 依赖服务,支持联调、测试与流量排查。
为本地开发与测试提供可预测响应的轻量级 MCP 模拟服务器