【问题标题】:How to take a picture with MediaCapture in Enyo (webOS)?如何在 Enyo (webOS) 中使用 MediaCapture 拍照?
【发布时间】: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


    【解决方案1】:

    您看过 3.0.4 SDK 中的示例吗?

    它带有一个用于拍照的 MediaCapture 示例应用程序。获取deviceUri的方法和你做的完全不一样,initialize方法获取格式列表作为参数。

    【讨论】:

    • 是的,实际上发布是在 3 或 4 天前。在 webOS 3.0.2 中相机不可用。我会尽早编辑我的问题。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多