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 插件开发的更多相关文章
- Cordova WP8 平台安装部署
原文:Cordova WP8 平台安装部署 Cordova是一个开放源码移动开发框架. 它允许您使用标准的 web 技术如 HTML5. CSS3 和 JavaScript 进行跨平台开发,避免每个移 ...
- Cordova自定义插件开发
Cordova自定义插件开发 一.创建Cordova项目 在创建项目前请确保安装Cordova Cordova环境配置:https://www.w3cschool.cn/cordova/cordova ...
- cordova自定义插件开发流程
cordova自定义插件开发:1.cordova安装:npm install -g cordova2.plugman安装:npm install -g plugman3.cordova创建工程:cor ...
- Cordova插件开发
我在网上找了很多关于Cordova插件开发的例子,都不是我想要的,我只想要,怎么调用这个生成出来的js,最终得到了最为直接又简单的方法,希望给能帮助到大家! document.addEventList ...
- ionic2 自定义cordova插件开发以及使用 (Android)
如何写一个cordova 用于ionic2项目中呢,在搜索了一番之后,千篇一律,我都怀疑那些文章是不是全部都是复制来复制去的,而且都不是很详细.我自己也捣鼓了一下午,踩了很多坑.所以特此写这下这篇,记 ...
- cordova 插件开发
从事基于cordova开发混合APP也快一年了,一直没有自己"亲自操刀"写一个插件,因为网上插件太丰富了,可耻了. 今天完整的记录一次插件开发. cordova环境6.4.0 第一 ...
- cordova插件开发注意事项
1. 编写插件,先创建好cordova项目之后,在项目里开发调试好在去创建插件目录 如何在cordova项目里创建呢,在android文件夹下面的res/xml/config.xml里去加入插件 例如 ...
- cordova插件开发-1
这是初级编,实现了js调用Android代码 首先需要编写java代码: public class AppUpdate extends CordovaPlugin { @Override public ...
- cordova(安卓)(腾讯信鸽注册绑定与反绑定) 插件开发
腾讯信鸽快速开发指南 http://developer.xg.qq.com/index.php/Android_SDK%E5%BF%AB%E9%80%9F%E6%8C%87%E5%8D%97 本文参考 ...
随机推荐
- Linux智能小开关rfkill
Linux智能小开关rfkill Rfkill,当中rf是Radio frequency(射频).主要作用是一个专门管理开关的子系统,举例说明Android手机的通知栏能够方便地开关Airplane/ ...
- awk使用的实例
1.使用split函数 name.url的内容: 上海 http://trip.elong.com/shanghai/jingdian elong destination 云南 htt ...
- 程序猿进化 - 在拉钩子1024对APE节讲座计划
注意:下面这篇文章来自于我在网上拉勾1024对APE节现场演示程序. 我是蒋宇捷,信天创投的合伙人.之前是百度魔图的联合创始人. 我先做个自我介绍,事实上每次介绍自己事实上是非常痛苦的事情,由于我前不 ...
- 在web浏览器中判断app是否安装并直接打开
最近公司App产品在运营推广上有一个需求,就是要求可以让用户在访问我们的推广网页时,就可以判断出这个用户手机上是否安装了我们的App,如果安装了则可以直接在网页上打开,否则就引导用户前往下载.从而形成 ...
- JS 在 HTML 无缝滚动
marquee图片无缝滚动先了解一下对象的几个的属性:innerHTML: 设置或获取位于对象起始和结束标签内的 HTMLscrollHeight: 获取对象的滚动高度.scrollLeft: 设置或 ...
- 如何实现MySQL随机查询数据与MySQL随机更新数据?
以下的文章主要介绍的是MySQL随机选取数据,对实现MySQ随机查询数据与MySQ随机更新数据的实际操作步骤的描述,以及对其实际操作中所要用到的语句的描述,以下就是对其具体操作步骤的描述. MySQL ...
- hdu 5017 Ellipsoid(西安网络赛 1011)
Ellipsoid Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- crashRpt用法
从官网上下载crashRpt的源代码,按说明编译出对应的lib和dll 1 在编译crashRpt的时候,在环境变量中设置 crashrptDir=D:\work\AIW\WebMicaps\Web ...
- 并查集专辑 (poj1182食物链,hdu3038, poj1733, poj1984, zoj3261)
并查集专题训练地址,注册登录了才能看到题目 并查集是一个树形的数据结构, 可以用来处理集合的问题, 也可以用来维护动态连通性,或者元素之间关系的传递(关系必须具有传递性才能有并查集来维护,因为并查集 ...
- SQLite Code配置DbConfiguration
[DbConfigurationType(typeof(SQLiteConfiguration))] public partial class rsapiEntities : DbContext { ...