我是新手webOS开发人员,目前
开发一个我需要拍照的应用程序
某个用户。
我一直在寻找许多资源和网站
互联网,但我找不到解决方案。
我按照此处列出的说明进行操作:
How to take a picture using command line on webOS on HP touchpad?
我想说明一下,我不想从命令行拍摄照片。
我尝试了以下方法:
答:包括在我的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
inResponse:
{“ 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”:“音频/vnd.wave”,“编解码器”:“ 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”,“编解码器”:“ 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“,”编解码器“:” 1“},{” bitrate“:256000,” samplerate“:16000,” width“:0,” height“:0,” mimetype“:” audio / vnd.wave“,” codecs“:” 1“},{” bitrate“:705600,” sampl
但是,当应用程序尝试加载mediaCapture对象时,我得到:
Uncaught TypeError:无法读取未定义的属性“ 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
我希望你能帮助我。
这个程序很重要。
谢谢。
最佳答案
您是否看过3.0.4 SDK中的示例?
它带有一个MediaCapture示例应用程序,可以拍照。获取deviceUri
的方法与您执行的操作完全不同,initialize方法将格式列表作为参数。