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 本文参考 ...
随机推荐
- css 简单 返回顶部 代码及注释说明
1. 最简单的静态返回顶部,点击直接跳转页面顶部,常见于固定放置在页面底部返回顶部功能 方法一:用命名锚点击返回到顶部预设的id为top的元素 html代码 <a href="#top ...
- windows phone 7 通过麦克风录音,并且播放
原文:windows phone 7 通过麦克风录音,并且播放 //模拟XNA的框架(凡是在wp7中应用xna的都必须先模拟此类) public class XNAAsyncDispatcher : ...
- 辛星解读为什么PHP须要模板
近期有个人问我:为什么PHP须要模板呢?整个站点的编写都是我一个人完毕的,从前端到后端,都是这样,我一个人写站点是不是就不须要模板了呢?我当时还真给问住了,也没想好非常合适的回答它的方式,于是就随便说 ...
- cocos2d 创建一个黑白纹理
@interface myGrayTexture : CCTexture2D // @param exposure 曝光 +(id) textureWithFile:(NSString*) file ...
- mysql copy复制拷贝表数据及结构的几种方式(转)
mysql拷贝表操作我们会常常用到,下面就为您详细介绍几种mysql拷贝表的方式,希望对您学习mysql拷贝表方面能够有所帮助.假如我们有以下这样一个表:id username password--- ...
- SQL Server,Access数据库查询易混点和C#中parameter指定参数长度的优缺点
在学校的时候就经常做一些网站,所以这次在公司实习,组长第一次给了一个企业的网站还是很快的完成了.中间并没有遇到什么大的问题,但是还是遇到了两个新手非常容易混淆的小问题,所以拿出来跟大家分享一下. 主要 ...
- Ubuntu常用软件推荐,图文详细说明及下载
抛开Windows,其实在任何一款Linux发行版本中,我们都有超级大量的软件来安装,使用.这次的教程,我就以Ubuntu为例,来给大家推荐一些我认为不错的软件 声明: 1.本文提到的全部软件,都在文 ...
- hdu1978--How many ways(内存搜索)
How many ways Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) To ...
- Cluster Table
对簇表来说,总是要先创建簇段(cluster segment).然后将表关联到cluster segment里.由此可知,簇表也是虚拟表,没有对应的segment,簇表对应的是cluster segm ...
- tb连续aaaaa123aaa自适应
在连续的字符串数字中,td不会自适应大小,需要加上样式 style="word-break : break-all; overflow:hidden; " <table> ...