原文:Cordova WP8 插件开发

  前面博客中介绍了Cordova WP8平台上的安装部署,Cordova扩展可以利用WP8本地代码扩展WebApp的功能,调用本地能力需要开发相应的插件,下面以闪光灯作为实例来描述创建一个WP8插件的详细步骤,对于闪光灯实现打开和关闭两个接口函数。

  

1.  创建插件类

  创建闪光灯插件类FlashLight需继承BaseCommand,通常我们会在工程目录下创建Plugins目录用于存放插件类。即在Plugins目录下创建FlashLight.cs文件。

  编写FlashLight.cs文件,添加如下代码:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.Phone.Media.Capture;
using WPCordovaClassLib.Cordova;
using WPCordovaClassLib.Cordova.Commands; namespace TestCordova.Plugins
{
class FlashLight : BaseCommand
{
/// <summary>
/// 闪光灯实例
/// </summary>
protected static AudioVideoCaptureDevice Device { get; set; } /// <summary>
/// 打开闪光灯
/// </summary>
/// <returns></returns>
public async Task trunOn(string options)
{
var sensorLocation = CameraSensorLocation.Back; try
{
if (Device == null)
{
//取得 AudioViceoCaptureDevice
Device = await AudioVideoCaptureDevice.OpenAsync(sensorLocation, AudioVideoCaptureDevice.GetAvailableCaptureResolutions(sensorLocation).First());
} // 打开闪光灯
var supportedCameraModes = AudioVideoCaptureDevice.GetSupportedPropertyValues(sensorLocation, KnownCameraAudioVideoProperties.VideoTorchMode);
if (supportedCameraModes.ToList().Contains((UInt32)VideoTorchMode.On))
{
Device.SetProperty(KnownCameraAudioVideoProperties.VideoTorchMode, VideoTorchMode.On); // 设定亮度为最大
Device.SetProperty(KnownCameraAudioVideoProperties.VideoTorchPower, AudioVideoCaptureDevice.GetSupportedPropertyRange(sensorLocation, KnownCameraAudioVideoProperties.VideoTorchPower).Max);
} //返回状态
DispatchCommandResult(new PluginResult(PluginResult.Status.OK, "{data: \"ok\"}"));
}
catch (Exception ex)
{
// 无法控制闪光灯,返回错误状态
DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
}
} /// <summary>
/// 关闭闪光灯
/// </summary>
public void trunOff(string options)
{
var sensorLocation = CameraSensorLocation.Back; try
{
var supportedCameraModes = AudioVideoCaptureDevice
.GetSupportedPropertyValues(sensorLocation, KnownCameraAudioVideoProperties.VideoTorchMode);
// 关闭闪光灯
if (Device != null && supportedCameraModes.ToList().Contains((UInt32)VideoTorchMode.Off))
{
Device.SetProperty(KnownCameraAudioVideoProperties.VideoTorchMode, VideoTorchMode.Off);
} //返回状态
DispatchCommandResult(new PluginResult(PluginResult.Status.OK, "{data: \"ok\"}"));
}
catch (Exception ex)
{
// 无法控制闪光灯,返回错误状态
System.Diagnostics.Debug.WriteLine(ex);
DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
}
}
}
}

FlashLight

  由于调用闪光灯需要打开硬件的部分能力,所以需要配置WMAppManifest.xml文件勾选ID_CAP_ISV_CAMERA和ID_CAP_MICROPHONE。

2.  配置config.xml

  打开config.xml文件在widget元素内加入配置:

   <feature name="FlashLight">
<param name="wp-package" value="FlashLight" />
</feature>

  说明:以上配置是基于FlashLight类的命名空间为Cordova.Extension.Commands,如果将命名空间修改为其他,例如:TestCordova.Plugins,那么上述配置需修改为:

   <feature name="FlashLight">
<param name="wp-package" value="TestCordova.Plugins.FlashLight" />
</feature>

3.  编写js代码

  打开index.html,编写js代码如下:

    <script type="text/javascript">
app.initialize(); function trunOn() {
cordova.exec(
function (data) {
//调用C#代码成功的回调函数
alert("Sucess:" + data);
},
function (data) {
//调用C#代码失败的回调函数
alert("Fail" + data);
}
, "FlashLight", "trunOn", ["input string"]);
} function trunOff() {
cordova.exec(
function (data) {
//调用C#代码成功的回调函数
alert("Sucess:" + data);
},
function (data) {
//调用C#代码失败的回调函数
alert("Fail" + data);
}
, "FlashLight", "trunOff", ["input string"]);
}
</script>

  添加两个button按钮,代码如下:

    <div class="app">
<h1>Apache Cordova</h1>
<div id="deviceready" class="blink">
<p class="event listening">Connecting to Device</p>
<p class="event received">Device is Ready</p>
</div>
<div>
<button type="button" value="打开" style="width: 100px; height: 50px; color: black; font-size: larger;" onclick="trunOn()">打开</button>
<button type="button" value="关闭" style="width: 100px; height: 50px; color: black; font-size: larger;" onclick="trunOff()">关闭</button>
</div>
</div>

4.  运行

  编译并运行wp8工程,界面显示效果如下图:

Cordova WP8 插件开发的更多相关文章

  1. Cordova WP8 平台安装部署

    原文:Cordova WP8 平台安装部署 Cordova是一个开放源码移动开发框架. 它允许您使用标准的 web 技术如 HTML5. CSS3 和 JavaScript 进行跨平台开发,避免每个移 ...

  2. Cordova自定义插件开发

    Cordova自定义插件开发 一.创建Cordova项目 在创建项目前请确保安装Cordova Cordova环境配置:https://www.w3cschool.cn/cordova/cordova ...

  3. cordova自定义插件开发流程

    cordova自定义插件开发:1.cordova安装:npm install -g cordova2.plugman安装:npm install -g plugman3.cordova创建工程:cor ...

  4. Cordova插件开发

    我在网上找了很多关于Cordova插件开发的例子,都不是我想要的,我只想要,怎么调用这个生成出来的js,最终得到了最为直接又简单的方法,希望给能帮助到大家! document.addEventList ...

  5. ionic2 自定义cordova插件开发以及使用 (Android)

    如何写一个cordova 用于ionic2项目中呢,在搜索了一番之后,千篇一律,我都怀疑那些文章是不是全部都是复制来复制去的,而且都不是很详细.我自己也捣鼓了一下午,踩了很多坑.所以特此写这下这篇,记 ...

  6. cordova 插件开发

    从事基于cordova开发混合APP也快一年了,一直没有自己"亲自操刀"写一个插件,因为网上插件太丰富了,可耻了. 今天完整的记录一次插件开发. cordova环境6.4.0 第一 ...

  7. cordova插件开发注意事项

    1. 编写插件,先创建好cordova项目之后,在项目里开发调试好在去创建插件目录 如何在cordova项目里创建呢,在android文件夹下面的res/xml/config.xml里去加入插件 例如 ...

  8. cordova插件开发-1

    这是初级编,实现了js调用Android代码 首先需要编写java代码: public class AppUpdate extends CordovaPlugin { @Override public ...

  9. cordova(安卓)(腾讯信鸽注册绑定与反绑定) 插件开发

    腾讯信鸽快速开发指南 http://developer.xg.qq.com/index.php/Android_SDK%E5%BF%AB%E9%80%9F%E6%8C%87%E5%8D%97 本文参考 ...

随机推荐

  1. 学习 easyui 之二:jQuery 的 ready 函数和 easyloader 的加载回调函数

    Ready 事件不一定 ready 使用 easyloader 的时候,必须要注意到脚本的加载时机问题,easyloader 会异步加载模块,所以,你使用的模块不一定已经加载了.比如下面的代码. &l ...

  2. 一个css和js结合的下拉菜单,支持主流浏览器

    首先声明: 本人尽管在web前端岗位干了好多年,但无奈岗位对技术要求不高.html,css用的比較多,JavaScript自己原创的非常少,基本都是copy改动,所以自己真正动手写时,发现基础非常不坚 ...

  3. margin 还能够被缩回

    <p><strong>话:</strong>的肥沃和收获而被估价的.才干也是土地,只是它生产的不是粮食,而是真理.假设仅仅能滋生瞑想和幻想的话,即使再大的才干也仅仅 ...

  4. Windows Server 架设VPN要点

    PPTP 为给客户端连接的VPN用户帐户设置“允许拨入”属性. VPN服务端与客户端都无需安装任何证书. L2TP/IPSEC VPN服务器与客户端分别需要在自己的“本地计算机帐户>个人”(而非 ...

  5. java + memcached安装

    一:安装 (临时获取上手windows实验) 1.下载memcached.exe , 上F:\memcached\ 下 2.在CMD在输入 "F:\memcached\memcached.e ...

  6. Debug with Eclipse

    In this post we are going to see how to develop applications using Eclipse and Portofino 4. The trad ...

  7. iOS开展-Xcode技巧总结(持续更新)

    1. <LLDB调试命令初探> 2. <Xcode LLDB Debug教程> 3. <iOS开发准备篇-(5)Xcode调试技巧_1> 4. <iOS开发准 ...

  8. DIY.NETORM帧——技术储备(1)Attribute

    1.他是什么 ? 首先.我们当然Attribute它是一类,以下是一msdn文档对它的描写叙述:          公共语言执行时同意你加入类似keyword的描写叙述声明,叫做attributes, ...

  9. HTML&lt;!DOCTYPE&gt; 宣示

    在html页面,下面这行代码到底有什么用呢? <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" & ...

  10. Iphone CodeSign error: no provisioning profile at path 错

    今天在退房手续,变化了profile,当再次进行整理编译项目时.就出现了这个问题,在xCode 6 开发环境下出现了, 出现这个错误提示Code Sign error: Provisioning pr ...