phonegap webos 3.0+

时间:2012-01-31 22:42:09

标签: node.js cordova webos

我有一个phonegap iOS应用程序,我移植到触摸板上的webos应用程序工作得很好,除了我使用的一个iOS插件。它基本上将画布数据保存到照片卷。根据我对webos的理解,我需要创建一个node.js服务并将数据写入缓冲区,最后写入文件系统,论坛中有一个例子。但是我无法弄清楚的是如何通过我的phonegap应用调用所有这些。我相信我需要在index.html文件中包含以下内容。

    <script src="/opt/PalmSDK/Current/share/framework/enyo/1.0/framework/enyo.js" type="text/javascript"></script>

and something like
    enyo.create({kind: "Main"}).renderInto(document.body);    

我的猜测我还必须在js文件中包含所有“种类”数据。但是我如何从我的应用程序的js文件中执行一小步以与创建的服务进行通信。我查看了phonegap 1.0.js文件,发现他们正在以这种方式调用服务。

            this.service = navigator.service.Request('palm://com.palm.applicationManager', {
    method: 'launch',
    parameters: {
    id: 'com.palm.app.camera',
    params: {
            appId: 'com.palm.app.camera',
            name: 'capture',
            sublaunch: true,
            filename: filename
        }
    },
    onSuccess: successCallback,
    onFailure: errorCallback
}); 

但是我也注意到它似乎都是mojo,我正在做的是enyo,所以是的,我很困惑的那一刻......

似乎在webos中调用服务应该很容易,比如这里是一串图像数据,并从我现有的phonegap应用程序写入文件系统。而且不必在enyo做任何事情。有没有像这样的webos插件的样本或知道在哪里指点我?

谢谢蒂姆

* *更新

我现在已经创建了一个节点服务,如下所定义,我认为这有效,我正在尝试调用该服务,但它没有达到它。测试应用程序在我的触摸板上运行,但当我按下按钮保存图像时,我没有进入服务。我试着按照phonegap0.0.1.js文件中对相机所做的操作,这是我的服务的副本,我如何定义它以及我如何调用它。任何想法我做错了什么。

services.json =

"id": "com.tim.pgmojo1.service",
"description": "FileIO Service",
"services": [
  {
"name": "com.tim.pgmojo1.service",
"description": "FileIO Service",
"commands": [
    {
      "name": "writefile",
      "assistant": "WriteFileAssistant",
      "public": true
    }]
  }]
}

* * 服务代码
    var libraries = MojoLoader.require({name:“foundations”,version:“1.0”});     var fs = IMPORTS.require(“fs”);     var sys = require('sys');

var WriteFileAssistant = function() {}

WriteFileAssistant.prototype.run = function(future) {
 var mypath = this.controller.args.thepath;
 var mydata = this.controller.args.thedata;
 console.log("in write file");
 console.log("path=" + thepath);
 console.log("image data=" + thedata);

 var data = content.replace(/^data:image\/\w+;base64,/, "");
 var buf = new Buffer(data, 'base64');
 fs.writeFile('/media/internal/downloads/timimage.png', buf);
}

我打电话给服务* *

this.service = navigator.service.Request('palm://com.tim.pgmojo.service',{         方法:'writefile',         参数:{

            thepath: '/media/internal/downloads/timimage.png',
            thedata: canvasData
    },
    onSuccess: mySuccess,
    onFailure: myFailure
}); 

目前我的index.html文件中有这个,因为它仅用于测试..

2 个答案:

答案 0 :(得分:0)

Mojo仍然包含在TouchPad中。您可以使用与PhoneGap相同的服务调用功能。

答案 1 :(得分:0)

在Enyo中,对enyo.PalmService类型处理对设备上服务的访问。您可以查看包含node.js服务的应用示例,以及如何在https://github.com/palm/txjs-fortunecookie

对此服务进行调用