Cordova WP8 插件开发
原文:Cordova WP8 插件开发

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

  

1.  创建插件类

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

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

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 using Windows.Phone.Media.Capture;
 7 using WPCordovaClassLib.Cordova;
 8 using WPCordovaClassLib.Cordova.Commands;
 9
10 namespace TestCordova.Plugins
11 {
12     class FlashLight : BaseCommand
13     {
14         /// <summary>
15         /// 闪光灯实例
16         /// </summary>
17         protected static AudioVideoCaptureDevice Device { get; set; }
18
19         /// <summary>
20         /// 打开闪光灯
21         /// </summary>
22         /// <returns></returns>
23         public async Task trunOn(string options)
24         {
25             var sensorLocation = CameraSensorLocation.Back;
26
27             try
28             {
29                 if (Device == null)
30                 {
31                     //取得 AudioViceoCaptureDevice
32                     Device = await AudioVideoCaptureDevice.OpenAsync(sensorLocation, AudioVideoCaptureDevice.GetAvailableCaptureResolutions(sensorLocation).First());
33                 }
34
35                 // 打开闪光灯
36                 var supportedCameraModes = AudioVideoCaptureDevice.GetSupportedPropertyValues(sensorLocation, KnownCameraAudioVideoProperties.VideoTorchMode);
37                 if (supportedCameraModes.ToList().Contains((UInt32)VideoTorchMode.On))
38                 {
39                     Device.SetProperty(KnownCameraAudioVideoProperties.VideoTorchMode, VideoTorchMode.On);
40
41                     // 设定亮度为最大
42                     Device.SetProperty(KnownCameraAudioVideoProperties.VideoTorchPower, AudioVideoCaptureDevice.GetSupportedPropertyRange(sensorLocation, KnownCameraAudioVideoProperties.VideoTorchPower).Max);
43                 }
44
45                 //返回状态
46                 DispatchCommandResult(new PluginResult(PluginResult.Status.OK, "{data: \"ok\"}"));
47             }
48             catch (Exception ex)
49             {
50                 // 无法控制闪光灯,返回错误状态
51                 DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
52             }
53         }
54
55         /// <summary>
56         /// 关闭闪光灯
57         /// </summary>
58         public void trunOff(string options)
59         {
60             var sensorLocation = CameraSensorLocation.Back;
61
62             try
63             {
64                 var supportedCameraModes = AudioVideoCaptureDevice
65                     .GetSupportedPropertyValues(sensorLocation, KnownCameraAudioVideoProperties.VideoTorchMode);
66                 // 关闭闪光灯
67                 if (Device != null && supportedCameraModes.ToList().Contains((UInt32)VideoTorchMode.Off))
68                 {
69                     Device.SetProperty(KnownCameraAudioVideoProperties.VideoTorchMode, VideoTorchMode.Off);
70                 }
71
72                 //返回状态
73                 DispatchCommandResult(new PluginResult(PluginResult.Status.OK, "{data: \"ok\"}"));
74             }
75             catch (Exception ex)
76             {
77                 // 无法控制闪光灯,返回错误状态
78                 System.Diagnostics.Debug.WriteLine(ex);
79                 DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
80             }
81         }
82     }
83 }

FlashLight

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

2.  配置config.xml

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

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

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

1   <feature name="FlashLight">
2     <param name="wp-package" value="TestCordova.Plugins.FlashLight" />
3   </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工程,界面显示效果如下图:

posted on 2014-03-19 00:03 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/3610373.html

Cordova WP8 插件开发相关推荐

  1. cordova 插件开发

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

  2. Cordova进阶:插件开发

    前言 我本来没想这么快进入这一块的,但是Cordova居然没有跳转原生的方法,还把js桥断了,这也就算了,还没有官方插件,于是想来想去只有自己写个插件了,也方便以后调用.但是我才刚入门,不会写,所以记 ...

  3. Cordova 开发之安卓插件开发(二)

    前面的一篇文章讲了开发安卓的插件,但是是在已经添加好的平台中进行的开发,还不算是插件,仅仅只是相当于一个安卓程序,汗,这才是仅仅第一步啊,不过这个第一步也是得有点安卓基础的人才能搞得明白,其实是有点像 ...

  4. cordova插件开发

    Cordova开发自定义插件 Android cordova插件 plugin.xml 添加jar包依赖的两种方法 比如supportv4的包 转载于:https://www.cnblogs.com/ ...

  5. Android 平台下Cordova 调用Activity插件开发

    首先建立一个包名为package com.JiajiaCy.CallActivity; package com.JajaCy.CallActivity;import org.apache.cordov ...

  6. 新建cordova应用,插件开发教程系列(总目录)

    以下几篇是连续的教程,代码也是连续的,包括如下章节: 新建cordova应用 https://www.cnblogs.com/cannel/p/11074359.html 使用cordova把h5应用 ...

  7. cordova 安装ssl证书_cordova环境配置(android)

    打开命令行安装全局cordova  npm install -g cordova   (这里不要使用cnpm,会导致安装不全,有很多坑) 创建项目  create hello cd hello 安装j ...

  8. cordova + vue cli构建跨平台应用

    一.开发环境搭建 node.js 二.cordova 主要用于将开发好的网页打包成APP,支持的平台有:Android.IOS.Blackberry 10.OS X.Ubuntu.Windows.WP ...

  9. Android移动APP开发笔记——最新版Cordova 5.3.1(PhoneGap)搭建开发环境

    引言 简单介绍一下Cordova的来历,Cordova的前身叫PhoneGap,自被Adobe收购后交由Apache管理,并将其核心功能开源改名为Cordova.它能让你使用HTML5轻松调用本地AP ...

最新文章

  1. Blueprint代码详细分析-Android10.0编译系统(七)
  2. mysql8.0日期类型_MySQL8.0中的日期类数据及其函数
  3. python 不同模块之间的引用错误问题
  4. 室内装修隐蔽工程验收知识拓展_装修之前先看知贤,『装修微课堂』室内装修隐蔽工程详解,装修小白防坑避雷手册!...
  5. 【渝粤题库】陕西师范大学200041 文学概论 作业
  6. pandas中计算两列相乘
  7. centos查看文件修改历史_Linux环境下查看历史操作命令及清除方法
  8. on where having总结
  9. 34个漂亮的应用程序后台管理界面设计(系列三)
  10. SPSS Ver24.0安装包及详细步骤【SPSS 077期】
  11. ai怎么做盒子效果图_仅需5步!手把手教你如何用AI绘制3D效果形象
  12. 昆山java自行车,剁手清单:剁手的路上总会有几个“毒友”加持
  13. Python常见方法(5)-dictionary的可更改性和创建、增删元素、拼接和由list生成dictionary详解
  14. 试题 算法训练 P0704
  15. 金融计算机在线使用,金融计算器使用实例.ppt
  16. [loj6388] 「THUPC2018」赛艇 / Citing
  17. foxmail远程主机强迫关闭了一个现有的连接
  18. 根据出生年月日算出实际的月龄
  19. Android应用耗电问题排查
  20. guanyongyu2

热门文章

  1. 域名系统(DNS)概述
  2. 康托展开与逆康托展开(bzoj 3301: [USACO2011 Feb] Cow Line)
  3. string类型的数字字符串直接转换成int型方法
  4. js排序算法详解-选择排序
  5. jQuery Mobile中图标icon样式大全ui-icon-*
  6. zedboard上呼吸灯的实现(第二版)
  7. 拓扑量子计算机 超导 光,科学家发现新型拓扑超导材料 有望推动实现拓扑量子计算...
  8. 高一计算机word的试题,高一年级信息技术期末考试复习题
  9. golang 定义一个空切片_Golang slice切片操作之切片的追加、删除、插入等
  10. Codeforces Round #529 (Div. 3) D. Circular Dance