如何在Enyo(webOS)中使用MediaCapture拍照?

时间:2011-10-18 00:55:13

标签: javascript webos enyo

我是一个新手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"
    }
],
...
..
.
});

℃。在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上运行应用程序时,我在控制台中获得了下一个日志:

  

info:MediaCapture :: ServiceProxy =====   MediaCapture :: _ initializeMediaServerInstanceSuccess()   ...掌://com.palm.mediad.MediaCaptureV3_1814440/,   /usr/palm/frameworks/enyo/1.0/framework/lib/mediacapture/helper/MediaCaptureProxyHelper.js:83   [20111017-16:52:32.906482] info:MediaCapture :: ServiceProxy   @@@@@@ ----------- FIRST PROPERTY GRAB ----------- @@@@@@,   /usr/palm/frameworks/enyo/1.0/framework/lib/mediacapture/helper/MediaCaptureProxyHelper.js:106   [20111017-16:52:32.913991] info:MediaCapture :: ServiceProxy   inResponse:   { “propertyValues”:[{ “Name”: “准备好了”, “价值”:假},{ “名”: “supportedAudioFormats”, “值”:[{ “比特率”:128000, “采样率”:8000”宽度 “:0,” 高度 “:0,” MIME类型 “:” 音频/ vnd.wave”, “编解码器”: “1”},{ “比特率”:256000, “采样率”:16000, “宽度”:0 , “高度”:0, “MIME类型”: “音频/ vnd.wave”, “编解码器”: “1”},{ “比特率”:705600, “采样率”:44100, “宽度”:0, “高度” :0, “MIME类型”: “音频/ vnd.wave”, “编解码器”: “1”},{ “比特率”:128000, “采样率”:8000, “宽度”:0, “高度”:0,” mime类型 “:” 音频/ vnd.wave “ ”编解码器“: ”1“},{ ”比特率“:256000, ”采样率“:16000, ”宽度“:0, ”高度“:0, ”MIME类型“:”音频/ vnd.wave “ ”编解码器“: ”1“},{ ”比特率“:705600, ”采样率“:44100, ”宽度“:0, ”高度“:0, ”MIME类型“:” 音频/ VND。波 “ ”编解码器“: ”1“},{ ”比特率“:128000, ”采样率“:8000, ”宽度“:0, ”高度“:0, ”MIME类型“: ”音频/ vnd.wave“,”编解码器 “:” 1 “},{” 比特率 “:256000,” 采样率 “:16000,” 宽度 “:0,” 高度 “:0,” MIME类型 “:” 音频/ vnd.wave “ ”编解码器“:” 1 “},{” 比特率 “:705600,” SAMPL

然而,当应用程序尝试加载mediaCapture对象时,我得到:

  

未捕获的TypeError:无法读取未定义的属性“deviceKeys”,   源极/ CCRecipesStep1View.js:186

我知道并且我理解这个错误是因为App尝试访问不存在的属性。在这 case的具体行是:

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] info:MediaCapture :: ServiceProxy

     #-----------更改属性事件----------- ###### vuData,      

/usr/palm/frameworks/enyo/1.0/framework/lib/mediacapture/helper/MediaCaptureProxyHelper.js:140   [20111017-17:07:35.653586] info:MediaCapture :: ServiceProxy

     #-----------更改属性事件----------- ###### vuData,      

/usr/palm/frameworks/enyo/1.0/framework/lib/mediacapture/helper/MediaCaptureProxyHelper.js:140   [20111017-17:07:35.885940] info:MediaCapture :: ServiceProxy

     #-----------更改属性事件----------- ###### vuData,      

/usr/palm/frameworks/enyo/1.0/framework/lib/mediacapture/helper/MediaCaptureProxyHelper.js:140

开始无限循环:S

我希望你能帮助我。 这个应用非常重要。

谢谢。

1 个答案:

答案 0 :(得分:0)

您是否看过3.0.4 SDK中的示例?

它带有一个MediaCapture示例应用程序,可以拍照。获取deviceUri的方法与您正在进行的操作完全不同,initialize方法将格式列表作为参数。