因此,使用 luna-sends 执行此操作有点棘手,并且在技术上不受支持。
您可能想要使用 MediaCapture 库,可以在设备上找到该库:
/usr/palm/frameworks/enyo/0.10/framework/lib/mediacapture
要将其包含在您的 enyo 应用程序中,请将以下内容放入您的 dependent.js 中:
"$enyo-lib/mediacapture/"
涉及三个主要步骤。
- 初始化组件
- 捕捉图像
- 卸载设备。
这是一个示例:
声明场景中的组件
{
kind: "enyo.MediaCapture", name:"mediaCaptureObj",
onLoaded:"_setUpLoadedState", onInitialized:"_setUpInitializedState",
onImageCaptureStart:"_onImageCaptureStart", onImageCaptureComplete:"_onImageCaptureComplete",
onAutoFocusComplete:"_onAutoFocusComplete", onError:"_handleError",
onElapsedTime:"_onElapsedTime", onVuData:"_onVuDataChange", onDuration:"_onDuration"
}
调用初始化方法:
this.$.mediaCaptureObj.initialize(this.$.ViewPort);
在你的 onInitialized 回调中
使用属性包查找可用设备的数量。通常,描述为“相机/摄像机”、“前置麦克风”和“面向用户的相机”
var keyString;
for(var i = 0; i < this.pb.deviceKeys.length; i++)
{
if(this.pb.deviceKeys[i].description.indexOf("Camera/Camcorder") >= 0)
{
keyString = this.pb.deviceKeys[i].deviceUri;
break;
}
}
if(keyString)
{
var formatObj = {
imageCaptureFormat: this.pb[keyString].supportedImageFormats[0]
};
this.$.mediaCaptureObj.load(keyString, formatObj);
}
拍个照.
var obj = {"exifData":"{\"make\": \"Palm\", \"model\": \"Pre3\", \"datetime\": \"2011:05:19 10:39:18\", \"orientation\": 1, \"geotag\": {}}","quality":90,"flash":"FLASH_ON"};
this.$.mediaCaptureObj.startImageCapture("", obj);
卸载设备:
this.$.mediaCaptureObj.unload();
要使用旧的 JS 框架执行此操作,请参阅:https://developer.palm.com/content/api/reference/javascript-libraries/media-capture.html https://developer.palm.com/content/api/reference/javascript-libraries/media-capture.html
现在,您可以使用 luna-send 执行类似的操作,但同样,我认为它在技术上不受支持。您可能在启动/保持媒体捕获服务等方面遇到问题。BUT,如果你想尝试,你可以这样做:
1. 获取媒体服务器实例--- 这将返回端口实例号
luna-send -a your.app.id -i palm://com.palm.mediad/service/captureV3 '{"args":["subscribe":true]}'
这将返回捕获服务的位置以及端口号,如下所示:
{"returnValue":true, "location":"palm://com.palm.mediad.MediaCaptureV3_7839/"}
由于这是订阅,因此不要终止该请求。只需打开一个新终端即可。
2.打开一个新终端。使用步骤 1 中返回的“位置”作为您的新服务 URI:
luna-send -a your.app.id -i palm://com.palm.mediad.MediaCaptureV3_7839/load '{"args":["video:1", {"videoCaptureFormat":{"bitrate":2000000,"samplerate":44100,"width":640,"height":480,"mimetype":"video/mp4","codecs":"h264,mp4a.40"},"imageCaptureFormat":{"bitrate":0,"samplerate":1700888,"width":640,"height":480,"mimetype":"image/jpeg","codecs":"jpeg"},"deviceUri":"video:1"}]}'
你应该看到:
{"returnValue":true}
如果调用正确完成。您可以安全地按 ctrl+c 退出此通话。
3. 拍照。(您可以按 ctrl+c 退出最后一次调用,然后在此处提供参数)
luna-send -a your.app.id -i palm://com.palm.mediad.MediaCaptureV3_7839/startImageCapture '{"args":["", {"exifData":"{\"orientation\": 1, \"make\": \"HP\", \"model\": \"TouchPad\", \"datetime\": \"2011:09:22 15:34:36\", \"geotag\": {}}","quality":90,"flash":"FLASH_DISABLED","orientation":"faceup"}]}'
再次,您应该看到:
{"returnValue":true}
如果调用正确完成。
您应该听到快门声,图像将显示在“照片”应用程序的照片卷中。