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工程,界面显示效果如下图:

时间: 2024-08-03 00:05:20

Cordova WP8 插件开发的相关文章

Cordova WP8 平台安装部署

原文:Cordova WP8 平台安装部署 Cordova是一个开放源码移动开发框架. 它允许您使用标准的 web 技术如 HTML5. CSS3 和 JavaScript 进行跨平台开发,避免每个移动平台的本机开发语言. 应用程序在有针对性的对每个平台的包装内执行,并依靠符合标准的 API 绑定访问每个设备的摄像头.麦克风.传感器. 数据和网络状态. Cordova官方网址:http://cordova.apache.org/,目前最新版本是3.4.0,文档说明:http://cordova.

cordova plugin 插件开发

问题描述 cordova plugin 插件开发 我写了一个cordova 项目 现在如何把它封装成插件,刚接触我cordova

Cordova Windows Phone 8插件开发概述

前面博客中介绍了Cordova WP8平台上的安装部署,Cordova扩展可以利用WP8本地代码扩展WebApp的功能,调用本地能力需要开发相应的插件,下面以闪光灯作为实例来描述创建一个WP8插件的详细步骤,对于闪光灯实现打开和关闭两个接口函数. 1.  创建插件类 创建闪光灯插件类FlashLight需继承BaseCommand,通常我们会在工程目录下创建Plugins目录用于存放插件类.即在Plugins目录下创建FlashLight.cs文件. 编写FlashLight.cs文件,添加如下

app-基于cordova开发的Android-APP项目自动升级插件开发

问题描述 基于cordova开发的Android-APP项目自动升级插件开发 本人现在正在用cordova开发android App项目,但是在发布新版本时的版本如何升级 上纠结中,cordova提供了下载的插件,但是貌似没有提供自动运行apk文件进行安装, 求哪位大神帮忙解决下,本人刚学习cordova开发APP希望说的简单易懂点!谢谢! 解决方案 搜狐快站,可以直接在pc页面设计APP了,试试看. 解决方案二: http://download.csdn.net/detail/u0122239

Cordova Windows Phone 8平台的安装部署

Cordova是一个开放源码移动开发框架. 它允许您使用标准的 web 技术如 HTML5. CSS3 和 JavaScript 进行跨平台开发,避免每个移动平台的本机开发语言. 应用程序在有针对性的对每个平台的包装内执行,并依靠符合标准的 API 绑定访问每个设备的摄像头.麦克风.传感器. 数据和网络状态. Cordova官方网址:http://cordova.apache.org/,目前最新版本是3.4.0,文档说明:http://cordova.apache.org/docs/en/3.4

H5 开发ap 框架PhoneGap(cordova)的应用详解

PhoneGap是一套能让你使用HTML5轻松调用本地API接口和发布应用到商店的应用开发平台.官方说有低成本,低开发周期,轻量化等优点,这些咱暂时也没法证明,略过不表.但是有一条跨平台,却是很明显的优势.因为它采用HTML5+JavaScript的模式来开发应用.PhoneGap用JavaScript统一封装了几大平台的本地api(Andriod,IOS,WP8/7,WINRT)等等..这样的话从一个平台移植到另外一个平台只需要把HTML代码跟JS原封不动的拿过去,打包一下就可以了.Phone

ionic cordova一次上传多张图片(类似input file提交表单)的实现方法_javascript技巧

我们可以通过cordova提供的插件调用摄像头或图库选择需要的图片上传,按cordova官方的方法,每次选择完后就直接上传,这并不符合用户的习惯,最好的用户习惯是用户选择完需要的图片,并可在本地预览,接着用户再次打开摄像头或图库再次选择图片,接着预览,对于不需要的图片删除,最后确定可以后,再一次性上传所有图片.显然这种方式,cordova是不支持,那要如何实现呢,以下是我的方法: 通过调用$cordovaImagePicker.getPictures该方法打开图库,获得图片的URL地址,ps:相

前端开发我为什么选择cordova

cordova与phonegap有什么关系? phoengap 官方网址:http://phonegap.com 如果能了解一个框架的兴起还是一件比较有趣的事.08年一次ios开发者大会上来自Nitobi软件公司的几个家伙突发奇想,提出一个想法,想做一个工具来弥补web和ios开发之间的不足,并提出 Bridging the gap between the web and the iPhone sdk.一开始的目标并不是很大,但是做到了现在的written once,run everywhere

cordova-Navtive App项目中 使用Cordova Embedding WebViews

问题描述 Navtive App项目中 使用Cordova Embedding WebViews 请问有人试过在Navtive App项目中 使用Cordova Embedding WebViews 吗?就是单纯的想要使用Cordova/PhoneGap提供的 js & native Device API communication ~ 所有想要开一个WebView 使用Cordova框架,使得里面加载的页面可以使用js完成底层的交互按照官方4.0.0 版本去做了 http://cordova.