适配版本:HarmonyOS 5.0.0 或以上
阅读目标:掌握如何通过手机控制其他设备(如 TV/平板)进行拍照操作,远程触发相机拍摄,回传图片供选择/确认,支持远程保存与清除操作
🧠 一、典型使用场景
场景 | 描述 |
---|---|
手机控制 TV 拍照 | 手机点击“拍照” → TV 摄像头启动 → 自动拍照 |
多人合照协作 | 平板远程控制手机前摄 → 倒计时 + 自动拍照 |
拍完后确认保存或删除 | TV 将照片回传 → 手机选择是否保留/再次拍摄 |
📦 二、指令结构设计(统一拍照指令)
interface CameraCommand {
cmd: 'takePhoto' | 'retake' | 'confirmSave' | 'discard'
fromDeviceId: string
timestamp: number
}
📲 三、手机发起拍照指令
function triggerRemoteShot() {
const cmd: CameraCommand = {
cmd: 'takePhoto',
fromDeviceId: getDeviceId(),
timestamp: Date.now()
}
kvStore.put(`camera_cmd_${cmd.timestamp}`, JSON.stringify(cmd))
}
📷 四、TV 端接收并拍照(使用系统相机能力)
kvStore.on('dataChange', SUBSCRIBE_TYPE_ALL, (change) => {
change.insertEntries.forEach(entry => {
const cmd = JSON.parse(entry.value.value) as CameraCommand
if (cmd.cmd === 'takePhoto') {
startCameraAndCapture()
}
})
})
简易拍照逻辑:
import camera from '@ohos.multimedia.camera'
function startCameraAndCapture() {
const path = `/data/user/photos/photo_${Date.now()}.jpg`
// 初始化 Camera → 拍照 → 保存至 path
captureToFile(path)
// 将照片路径广播至控制端
kvStore.put('camera_result_path', {
path,
deviceId: getDeviceId()
})
}
🖼️ 五、手机接收图片并确认操作
kvStore.on('dataChange', SUBSCRIBE_TYPE_ALL, (change) => {
const res = JSON.parse(change.insertEntries[0].value.value)
const imagePath = `distributed://${res.deviceId}${res.path}`
showPreview(imagePath)
})
UI 提示:
-
✔ 保存
-
✖ 删除
-
🔁 重新拍
🔁 六、保存/重拍/删除指令回传
function confirmSave() {
kvStore.put('camera_cmd_confirm', JSON.stringify({ cmd: 'confirmSave' }))
}
TV 接收确认后:
if (cmd.cmd === 'confirmSave') {
saveToGallery(latestPhotoPath)
}
✅ 七、小结
模块功能 | 实现说明 |
---|---|
远程拍照控制 | 手机发送 takePhoto 指令,TV 自动捕捉并返回图片路径 |
分布式图片回传 | TV 拍照完成后通过分布式路径广播,手机远程预览 |
确认交互反馈机制 | 手机发送二次确认或重拍指令,TV 响应保存/删除/重拍逻辑 |
控制闭环完成 | 控制 → 拍摄 → 回传 → 选择 → 保存,形成完整协作闭环 |
📘 下一篇预告
第22篇|分布式拍照协作(二):相册同步 + 多图回传 + 分页预览与保存机制