OpenClaw Android Node 相機指令完整攻略|V2514 實測(拍照、錄影、相簿)
OpenClaw Android Node 相機指令完整攻略(V2514 實測)
測試日期:2026-04-19
測試節點:V2514(Vivo V2514, Android 16, SDK 36)
OpenClaw 版本:來源編譯(Java 25, Android SDK 34/36, Gradle 9.3.1)
📋 V2514 可用相機清單
openclaw nodes invoke --node "V2514" --command camera.list
一、camera.list — 查詢相機清單
指令:
openclaw nodes invoke --node "V2514" --command camera.list
用途: 列出節點所有可用的相機裝置。
回傳格式:
{
"ok": true,
"payload": {
"devices": [
{ "id": "0", "name": "Back Camera", "position": "back", "deviceType": "builtIn" },
{ "id": "1", "name": "Front Camera", "position": "front", "deviceType": "builtIn" }
]
}
}
二、camera.snap — 拍照
指令格式:
openclaw nodes invoke --node "V2514" --command camera.snap --params '{...}'
參數說明
⚠️ 重要發現:參數組合的正確用法(V2514 限定)
經過完整測試發現,V2514 上 camera.list 回傳的 id 和 CameraX 內部 deviceId 並非同一個系統。正確參數組合如下:
測試結果總覽
完整範例
# 前相機拍照(預設)
openclaw nodes invoke --node "V2514" --command camera.snap --params '{}'
# 前相機(明確指定)
openclaw nodes invoke --node "V2514" --command camera.snap --params '{"facing": "front"}'
# 後相機拍照(正確寫法)
openclaw nodes invoke --node "V2514" --command camera.snap --params '{"deviceId": "0", "facing": "back"}'
# 高品質後相機照片
openclaw nodes invoke --node "V2514" --command camera.snap --params '{"deviceId": "0", "facing": "back", "quality": 0.99}'
# 前相機大圖
openclaw nodes invoke --node "V2514" --command camera.snap --params '{"facing": "front", "maxWidth": 2000}'
三、camera.clip — 錄影
指令格式:
openclaw nodes invoke --node "V2514" --command camera.clip --params '{...}'
參數說明
⚠️ 後相機錄影的正確參數
和 camera.snap 一樣,必須同時指定 deviceId: "0" 和 facing: "back" 才能正確使用後相機。
測試結果總覽
完整範例
# 前相機錄影(預設 3 秒)
openclaw nodes invoke --node "V2514" --command camera.clip --params '{}'
# 前相機錄影 5 秒
openclaw nodes invoke --node "V2514" --command camera.clip --params '{"durationMs": 5000}'
# 前相機錄影(明確指定)
openclaw nodes invoke --node "V2514" --command camera.clip --params '{"facing": "front", "durationMs": 5000}'
# 後相機錄影 3 秒(正確寫法)
openclaw nodes invoke --node "V2514" --command camera.clip --params '{"deviceId": "0", "facing": "back", "durationMs": 3000}'
# 後相機錄影 5 秒
openclaw nodes invoke --node "V2514" --command camera.clip --params '{"deviceId": "0", "facing": "back", "durationMs": 5000}'
# 前相機靜音錄影
openclaw nodes invoke --node "V2514" --command camera.clip --params '{"facing": "front", "includeAudio": false}'
四、photos.latest — 取相簿最新照片
指令格式:
openclaw nodes invoke --node "V2514" --command photos.latest --params '{...}'
參數說明
⚠️ 注意:photos.latest 是讀取系統相簿中的照片,不是即時拍攝。
測試結果總覽
完整範例
# 取得相簿最後 1 張照片(原尺寸)
openclaw nodes invoke --node "V2514" --command photos.latest --params '{}'
# 取得相簿最後 3 張照片
openclaw nodes invoke --node "V2514" --command photos.latest --params '{"limit": 3}'
# 取得最後 5 張照片,限制寬度 800px
openclaw nodes invoke --node "V2514" --command photos.latest --params '{"limit": 5, "maxWidth": 800}'
# 高品質取得
openclaw nodes invoke --node "V2514" --command photos.latest --params '{"limit": 1, "quality": 0.95}'
五、疑難排解 Q&A
Q: camera.list 回傳 id "0" 是後相機,但用 deviceId: "0" 拍出來是前相機?
A: 這是 V2514(Vivo Android 16)上的已知行為。camera.list 的 id 和 CameraX 內部的 deviceId 是不同的 ID 系統。
解決方法: 後相機必須同時指定 deviceId: "0" 和 facing: "back":
{"deviceId": "0", "facing": "back"}
Q: camera.snap 和 camera.clip 沒有回應?
A: 檢查以下幾點:
- 權限設定:在 Gateway 設定中將
camera.snap和camera.clip加入允許清單:
openclaw configure
# 或直接編輯 ~/.openclaw/openclaw.json
- App 內設定:確認 OpenClaw App 內「Camera」開關已開啟
- Android 權限:確認相機權限已授權
Q: 照片出來是反的或旋轉 90 度?
A: 這是 V2514 前鏡頭的已知現象,輸出寬高比為 1600x2133(筆直拍攝)。後鏡頭輸出為 1600x1200。
Q: 參數 cameraId 可以用嗎?
A: 不行。經查詢原始碼,正確參數名稱是 deviceId(並非 cameraId)。
六、指令速查表
camera.snap(拍照)
camera.clip(錄影)
photos.latest(相簿)
七、技術背景(源碼分析)
根據 /Users/bbb/openclaw-src/apps/android/app/src/main/java/ai/openclaw/app/node/ 目錄下的原始碼:
InvokeCommandRegistry.kt:定義了3個 camera 指令(camera.list、camera.snap、camera.clip)和1個 photos 指令(photos.latest)CameraCaptureManager.kt:核心 CameraX 實作,負責解析參數與相機選擇parseDeviceId()(line 317):讀取deviceId參數parseFacing()(line 299):讀取facing參數("front"或"back")resolveCameraSelector()(lines 329-341):當deviceId為空時使用facing參數選擇相機;當deviceId有值時則用 CameraX 內部 ID 過濾PhotosHandler.kt:處理photos.latest指令,透過CameraDataSource存取系統相簿
關鍵發現: 當 deviceId 有值時,facing 參數會被忽略。這導致了 V2514 上需要兩者同時指定才能正確選擇後相機的特殊行為。
文章更新:2026-04-19
留言
張貼留言
歡迎留下您的心靈足跡👍