2

我是一个新手 webOS 开发人员,我目前正在开发一个需要为某个用户拍照的应用程序。

我一直在互联网上寻找许多资源和网站,但找不到解决问题的方法。

我按照此处列出的说明进行操作:

如何在 HP 触摸板上的 webOS 上使用命令行拍照?

我想明确表示我不想从命令行拍照。

我尝试了以下方法:

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/助手/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, “宽度”:0,“高度”:0,“mimetype”:“音频/vnd.wave”,codecs":"1"},{"bitrate":256000,"samplerate":16000,"width":0,"height":0,"mimetype":"audio/vnd.wave","codecs":" 1"},{"比特率":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,"采样率":44100,"宽度":0,"高度":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.波","编解码器":"1"},{"比特率":705600,"采样波","编解码器":"1"},{"比特率":705600,"采样波","编解码器":"1"},{"比特率":705600,"采样

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

未捕获的类型错误:无法读取未定义的属性“deviceKeys”,来源/CCRecipesStep1View.js:186

我知道并且我理解这个错误是因为应用程序试图访问一个不存在的属性。在这种情况下,特定的行是:

onImageCaptureInitialized: function () {
    var keyString;                              
    for(var i = 0; i < this.pb.deviceKeys.length; i++)    <<------------ Here
    ...
    ..
    .
}

MediaCapture.js 文件和我遵循的说明讨论了“属性包”,我知道这是您声明属性的地方,但是我不知道如何获取加载 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

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

谢谢你。

4

1 回答 1

0

您看过 3.0.4 SDK 中的示例吗?

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

于 2011-10-22T17:56:18.007 回答