我是一名新手webOS开发人员,我目前正在开发一个应用程序,我需要为某个用户拍照。
我一直在互联网上寻找很多资源和网站,但我找不到解决问题的办法。
我按照这里列出的指示:
How to take a picture using command line on webOS on HP touchpad?
我想说清楚,我不想从命令行拍这张照片。
我尝试了以下几点:
A.包括在我的depends.js中
"$enyo/../lib/mediacapture/"B.在我的场景中
enyo.kind({
name: "MyComponent",
kind: "Pane",
components: [
{
kind: "enyo.MediaCapture",
name: "mediaCapture",
onInitialized: "onImageCaptureInitialized",
onError: "onImageCaptureError",
onImageCaptureComplete: "onImageCaptureComplete"
}
],
...
..
.
});C.在onCreate函数中
create: function () {
this.inherited(arguments);
this.$.mediaCapture.initialize(this.$.ViewPort);
},D.在onInitialized事件中
onImageCaptureInitialized: function () {
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.$.mediaCapture.load(keyString, formatObj);
}
},D.在某个按钮的onclick事件中
takePhotoClickEvent: function (inSender) {
this.$.mediaCapture.startImageCapture("/media/internal/CanalCocina/recipe_photo.jpg",
{
"bitrate":128000,
"samplerate":8000,
"width":480,
"height":320,
"mimetype":"image/jpeg",
"codecs":"jpeg"}
);
},当我在HP TouchPad上运行这个应用程序时,我会在我的控制台中获得下一个日志:
MediaCapture::_initializeMediaServerInstanceSuccess() ...palm://com.palm.mediad.MediaCaptureV3_1814440/,/usr/palm/frameworks/enyo/1.0/framework/lib/mediacapture/helper/MediaCaptureProxyHelper.js:83 20111017-16:52:32.906482信息:MediaCapture:ServiceProxy@-@/usr/palm/frameworks/enyo/1.0/framework/lib/mediacapture/helper/MediaCaptureProxyHelper.js:106 20111017-16:52:32.913991 info: MediaCapture::ServiceProxy inResponse:{“propertyValues”:[{“名称”:“就绪”,“值”:假},{“名称”:“supportedAudioFormats”,“值”:[{“比特率”:128000,“采样率”:8000,“宽度”:0,“高度”:0,“mimetype”:“mimetype”:“音频/vnd.Wave”,“编解码器”:“1”},{“比特率”:256000,“样本”:16000,“宽度”:0,“高度”:0,“mimetype”:“音频/vnd.Wave”,“编解码器”:“1”},{“比特率”:705600,“样本”:44100,“宽度”:0,“高度”:0,“mimetype”:“音频/vnd.Wave”,"codecs":"1"},{“位速率”:128000,"samplerate":8000,“宽度”:0、“高度”:0、“mimetype”:“音频/vnd.Wave”、"codecs":"1"}、{“位速率”:256000、"samplerate":16000、“宽度”:0、“高度”:0、“mimetype”:“音频/vnd.Wave”、"codecs":"1"}、{“位速率”:705600、“采样率”:44100、“宽度”:0、“高度”:0、“mimetype”:“音频/vnd.Wave”,“编解码器”:“1”},{“比特率”:128000,“样本”:128000,“宽度”:0,“高度”:0,“mimetype”:“音频/vnd.Wave”,"codecs":"1"},{“位速率”:256000,“样本”:16000,“宽度”:0,“高度”,“mimetype”:“音频/vnd.Wave”,"codecs":"1"},{“位率”:705600,"sampl“
然而,当应用程序试图加载mediaCapture对象时,我得到:
Uncaught :无法读取未定义的源/CCRecipesStep1View.js:186的属性“deviceKeys”
我知道并理解这个错误是因为应用程序试图访问一个不存在的属性。在这种情况下,具体的一行是:
onImageCaptureInitialized: function () {
var keyString;
for(var i = 0; i < this.pb.deviceKeys.length; i++) <<------------ Here
...
..
.
}文件MediaCapture.js和我遵循的说明谈到了“属性包”,我知道这里是您声明属性的地方,但是我不知道如何获得加载MediaCaptureObject所需的设备密钥。
当按下按钮时,我得到:
:ServiceProxy#
事件-#vuData, 20111017-17:07:35.401836信息: MediaCapture::ServiceProxy
#
#
#
并启动一个无限循环:S
希望你能帮我。这个应用程序非常重要。
谢谢。
发布于 2011-10-22 17:56:18
您看过3.0.4SDK中的示例吗?
它附带了一个MediaCapture示例应用程序,可以拍照。获取deviceUri的方法与您所做的完全不同,初始化方法将格式列表作为参数。
https://stackoverflow.com/questions/7801330
复制相似问题