【发布时间】:2011-10-18 00:55:13
【问题描述】:
我是一个新手 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::ServiceProxy ===== 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] 信息:MediaCapture::ServiceProxy 回应: {"propertyValues":[{"name":"ready","value":false},{"name":"supportedAudioFormats","value":[{"bitrate":128000,"samplerate":8000," width":0,"height":0,"mimetype":"audio/vnd.wave","codecs":"1"},{"bitrate":256000,"samplerate":16000,"width":0 ,"height":0,"mimetype":"audio/vnd.wave","codecs":"1"},{"bitrate":705600,"samplerate":44100,"width":0,"height" :0,"mimetype":"audio/vnd.wave","codecs":"1"},{"bitrate":128000,"samplerate":8000,"width":0,"height":0," mimetype":"audio/vnd.wave","codecs":"1"},{"bitrate":256000,"samplerate":16000,"width":0,"height":0,"mimetype":" audio/vnd.wave","codecs":"1"},{"bitrate":705600,"samplerate":44100,"width":0,"height":0,"mimetype":"audio/vnd. wave","codecs":"1"},{"bitrate":128000,"samplerate":8000,"width":0,"height":0,"mimetype":"audio/vnd.wave"," codecs":"1"},{"bitrate":256000,"samplerate":16000,"width":0,"height":0,"mimetype":"audio/vnd.wave","codecs":" 1"},{"比特率":705600,"采样率
但是,当应用尝试加载我得到的 mediaCapture 对象时:
未捕获的类型错误:无法读取未定义的属性“deviceKeys”, 来源/CCRecipesStep1View.js:186
我知道并且理解此错误是因为应用程序尝试访问不存在的属性。在这个 如果特定的行是:
onImageCaptureInitialized: function () {
var keyString;
for(var i = 0; i < this.pb.deviceKeys.length; i++) <<------------ Here
...
..
.
}
文件 MediaCapture.js 和我遵循的说明谈论 "Property Bag" ,我知道这是您声明属性的地方,但我不知道如何 获取我需要加载 MediaCaptureObject 的设备密钥。
当按钮被按下时,我得到:
MediaCapture::ServiceProxy #######----------- 更改属性事件 -----------######vuData,/usr/palm/frameworks/enyo/1.0/framework/lib/mediacapture/helper/MediaCaptureProxyHelper.js:140 [20111017-17:07:35.401836] 信息:MediaCapture::ServiceProxy
#----------- 更改属性事件 -----------######vuData ,/usr/palm/frameworks/enyo/1.0/framework/lib/mediacapture/helper/MediaCaptureProxyHelper.js:140 [20111017-17:07:35.653586] 信息:MediaCapture::ServiceProxy
#----------- 更改属性事件 -----------######vuData ,/usr/palm/frameworks/enyo/1.0/framework/lib/mediacapture/helper/MediaCaptureProxyHelper.js:140 [20111017-17:07:35.885940] 信息:MediaCapture::ServiceProxy
#----------- 更改属性事件 -----------######vuData ,/usr/palm/frameworks/enyo/1.0/framework/lib/mediacapture/helper/MediaCaptureProxyHelper.js:140
然后开始一个无限循环:S
我希望你能帮助我。 这个应用非常重要。
谢谢。
【问题讨论】:
标签: javascript webos enyo