自定义插件PhoneGap Windows8,将调用c#代码



我想开发一个应用程序,将显示传感器数据在windows8和android。我在一些传感器上使用phoneGap,但是,例如,气压计,在phoneGap中没有实现。我想为cordova-windows8开发一个插件。但是在网络上没有关于如何做到这一点的例子。我想调用使用微软的c#函数。用于传感器的codePack API,以便显示气压计数据。ApiCodePack为传感器使用windows 7 API。http://archive.msdn.microsoft.com/WindowsAPICodePack

是否可以为cordova-windows8开发一个可以调用c#代码的插件?如能提供示例应用程序将不胜感激。

谢谢!

当然可以在phone gap中调用c#代码

你需要参考插件开发指南

计算器插件示例

HTML CODE:calculator.html

<html>
  <head>
    <!-- meta name="viewport" content="width=device-width, height=device-height, user-scalable=yes, initial-scale=2.0, maximum-scale=4.0, minimum-scale=1.0" / -->
    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8"/> <!-- ISO-8859-1 -->
    <title>Cordova</title>
    <link rel="stylesheet" href="master.css" type="text/css" media="screen"/>

    <script type="text/javascript" charset="utf-8" src="cordova-current.js"></script>

<script type="text/javascript" charset="utf-8">
    var deviceReady = false;
    /**
    * Function called when page has finished loading.
    */
    function init() {
        document.addEventListener("deviceready", function () {
            deviceReady = true;
            console.log("Device=" + device.platform + " " + device.version);
        }, false);
        window.setTimeout(function () {
            if (!deviceReady) {
                alert("Error: Cordova did not initialize.  Demo will not run correctly.");
            }
        }, 1000);
    }
    function calculateSum() {
        cordova.exec(
            function (res) {
                document.getElementById('res').innerHTML = res;
            },
            function (e) {
                console.log("Error occurred: " + e);
                document.getElementById('res').innerHTML = "Error occurred: " + e;
            },
            "Calculator", "sum",
            { x: document.getElementById('x').value, y: document.getElementById('y').value });
    };
</script>
  </head>
  <body onLoad="init();" id="stage" class="theme">
    <h1>Calculator</h1>
    <div id="info">
        <span class='tb-label'>X</span> <span id="Span1"></span>
        <input type="text" id="x" value="1" style="width:250px;height:20px;"/>
        <br/>
        <span class='tb-label'>Y</span> <span id="Span2"></span>
        <input type="text" id="y" value="2" style="width:250px;height:20px;"/>
        <br/>
        Sum: <span id="res"></span>
    </div>
    <h2>Action</h2>
    <a class="btn large" onclick="calculateSum();">Calculate</a>
    <h2> </h2><a href="index.html" class="backBtn">Back</a>
  </body>
</html>

c# Code:calculator.cs

using System.Runtime.Serialization;
using WPCordovaClassLib.Cordova;
using WPCordovaClassLib.Cordova.Commands;
using WPCordovaClassLib.Cordova.JSON;
namespace Cordova.Extension.Commands
{
    public class Calculator : BaseCommand
    {
        [DataContract]
        public class CalculateParameters
        {
            [DataMember]
            public double x { get; set; }
            [DataMember]
            public double y { get; set; }
        }
        public void sum(string args)
        {
            CalculateParameters calcParam = JsonHelper.Deserialize<CalculateParameters> (args);
            this.DispatchCommandResult(new PluginResult(PluginResult.Status.OK, calcParam.x + calcParam.y));
        }
    }
}

最新更新