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

Posted

技术标签:

【中文标题】PhoneGap Windows8 的自定义插件将调用 c# 代码【英文标题】:Custom Plugin for PhoneGap Windows8 that will call c# code 【发布时间】:2013-04-17 09:30:31 【问题描述】:

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

是否有任何选项可以为 cordova-windows8 开发一个调用 c# 代码的插件? 一个示例应用程序将不胜感激。

谢谢!

【问题讨论】:

【参考方案1】:

是的,当然你可以在电话间隙调用 C# 代码

您需要参考Plugin development指南

计算器示例插件

html 代码: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#代码: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));
        
    

享受 c# 的自定义插件

【讨论】:

我在这里看到了 WPCordovaClassLib 参考。我可以将此引用添加到 windows8 应用程序吗?它不是 Windows Phone 应用程序... 我已经为 W8 手机应用程序进行了配置。我不确定 Windows8 应用程序。但是电话差距support Windows 8 所以你需要检查一下。

以上是关于PhoneGap Windows8 的自定义插件将调用 c# 代码的主要内容,如果未能解决你的问题,请参考以下文章

phonegap 2.9.1 的 IOS Write 插件 [关闭]

如何在 file:/// 协议 (Cordova/Phonegap) 下使用来自 dojo 的自定义构建

PhoneGap BarcodeScanner 插件不起作用

Cordova / Phonegap 设备到设备文件传输

iOS 上的 Phonegap 触发自定义事件

Xamarin 表单:UWP 和 Windows 8.1 中的自定义字体