【WP7】调用系统LED灯
2012-11-02 18:53
162 查看
通过使用相机的闪光灯,我们可以用来做一些类似手电筒的应用,但是WP7 SDK并没有提供调用系统LED灯的API
通过几天的尝试和搜索,终于让LED灯开了,感谢Den Delimarsky和Tomas Hounsell
How VideoCamera/PhotoCamera content is saved on Windows Phone 7
Not your regular photo and video camera on Windows Phone 7
Avoiding Reflection: Adding the InteropServices library to the WP7 SDK
开启闪光灯两种途径
1、拍照对焦
通过自定义相机应用PhotoCamera,调用相机的Focus方法,可以让闪光灯开启1秒钟左右,连续调用Focus方法虽然能保持开启闪光灯,但是会出现闪烁,而且对相机的伤害比较大
2、录像
在录像的时候可以打开闪光灯,但是微软并没有为我们提供关于自定义摄像功能的应用。但是还是有办法的,下面介绍这种方法
方法:
首先程序要用到一个库,后面有下载:
Microsoft.Phone.Media.Extended.dll
修改该库文件的名字为Microsoft.Phone.Media.Extended.dll,复制到WP7 SDK的库文件存放目录中
C:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone71
到 C:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone71\RedistList 目录下找到 FrameworkList.Xml文件
找到
改 “Microsoft.Phone.Interop” 为“Microsoft.Phone.InteropServices”,删除 “PublicKeyToken”属性
注意:需要管理员的权限才能修改,(我是复制到外面来,修改完后替换掉原来那个)
到这里Microsoft.Phone.Media.Extended.dll就可以使用了(可以使用VideoCamera类了)
2)强名称
使用Visual Studio的sn.exe工具,对DLL文件进行强名称验证,打开MSDOS命令行窗口或VS的命令行提示窗口,输入命令(复制粘贴即可)。注意运行命令行窗口时必须选择以“管理员身份运行”的模式(鼠标右键菜单中有)。
sn -Vr "C:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone71\Microsoft.Phone.Media.Extended.dll"
下面说说VideoCamera类的使用
使用到的命名空间
using Microsoft.Phone;
声明变量
VideoCamera vCam;
CameraVisualizer cView;
实例化(一般放在OnNavigatedTo函数中)
注意:需要一个CameraVisualizer对象来配合VideoCamera作为其视频输出,否则VideoCamera不能正常工作,在主线程中创建CameraVisualizer并最后调用其SetCource方法将VideoCamera对象传入后,才能使用VideoCamera对象
使用VideoCamera的闪光灯
在不适用VideoCamera的时候应该释放对资源的占用(一般在OnNavigatedFrom函数中)
关于VideoCamera的使用请大家自行探索吧,此处不详讲
最后说明一下:此方法实现的应用程序不能提交通过应用商店的验证,据说可以把Microsoft.Phone.Media.Extended.dll链接库通过反射的方法加载到全局缓存中(不太懂),然后调用,好像可以通过认证,大家可以试试,欢迎交流
通过几天的尝试和搜索,终于让LED灯开了,感谢Den Delimarsky和Tomas Hounsell
How VideoCamera/PhotoCamera content is saved on Windows Phone 7
Not your regular photo and video camera on Windows Phone 7
Avoiding Reflection: Adding the InteropServices library to the WP7 SDK
开启闪光灯两种途径
1、拍照对焦
通过自定义相机应用PhotoCamera,调用相机的Focus方法,可以让闪光灯开启1秒钟左右,连续调用Focus方法虽然能保持开启闪光灯,但是会出现闪烁,而且对相机的伤害比较大
2、录像
在录像的时候可以打开闪光灯,但是微软并没有为我们提供关于自定义摄像功能的应用。但是还是有办法的,下面介绍这种方法
方法:
首先程序要用到一个库,后面有下载:
Microsoft.Phone.Media.Extended.dll
修改该库文件的名字为Microsoft.Phone.Media.Extended.dll,复制到WP7 SDK的库文件存放目录中
C:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone71
到 C:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone71\RedistList 目录下找到 FrameworkList.Xml文件
找到
<File AssemblyName="Microsoft.Phone.Interop" Version="7.0.0.0" PublicKeyToken="24eec0d8c86cda1e" Culture="neutral" ProcessorArchitecture="MSIL" InGac="false" />
改 “Microsoft.Phone.Interop” 为“Microsoft.Phone.InteropServices”,删除 “PublicKeyToken”属性
<File AssemblyName="Microsoft.Phone.InteropServices" Version="7.0.0.0" Culture="neutral" ProcessorArchitecture="MSIL" InGac="false" />
注意:需要管理员的权限才能修改,(我是复制到外面来,修改完后替换掉原来那个)
到这里Microsoft.Phone.Media.Extended.dll就可以使用了(可以使用VideoCamera类了)
2)强名称
使用Visual Studio的sn.exe工具,对DLL文件进行强名称验证,打开MSDOS命令行窗口或VS的命令行提示窗口,输入命令(复制粘贴即可)。注意运行命令行窗口时必须选择以“管理员身份运行”的模式(鼠标右键菜单中有)。
sn -Vr "C:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone71\Microsoft.Phone.Media.Extended.dll"
下面说说VideoCamera类的使用
使用到的命名空间
using Microsoft.Phone;
声明变量
VideoCamera vCam;
CameraVisualizer cView;
实例化(一般放在OnNavigatedTo函数中)
注意:需要一个CameraVisualizer对象来配合VideoCamera作为其视频输出,否则VideoCamera不能正常工作,在主线程中创建CameraVisualizer并最后调用其SetCource方法将VideoCamera对象传入后,才能使用VideoCamera对象
vCam = new VideoCamera(CameraSource.PrimaryCamera); cView = new CameraVisualizer(); cView.Visibility = System.Windows.Visibility.Collapsed; cView.SetSource(vCam);
使用VideoCamera的闪光灯
if (vCam.IsRecording) { vCam.StopRecording(); } else { vCam.LampEnabled = true; vCam.StartRecording(); }
在不适用VideoCamera的时候应该释放对资源的占用(一般在OnNavigatedFrom函数中)
if (vCam != null) { if (vCam.IsRecording) vCam.StopRecording(); vCam.Dispose(); vCam = null; } if (cView != null) { LayoutRoot.Children.Remove(cView); cView = null; } GC.Collect();
关于VideoCamera的使用请大家自行探索吧,此处不详讲
最后说明一下:此方法实现的应用程序不能提交通过应用商店的验证,据说可以把Microsoft.Phone.Media.Extended.dll链接库通过反射的方法加载到全局缓存中(不太懂),然后调用,好像可以通过认证,大家可以试试,欢迎交流
相关文章推荐
- 调用系统功能-打电话/发短息/发邮箱/LED灯/地图/截屏
- 正确的调用系统命令——为Process.waitFor设置超时以及其他
- android 调用系统功窗口方法
- <转载>Android中调用系统所装的软件打开文件
- 系统广播大全,附带引号,方便调用
- Android Touch系统简介(二):实例详解onInterceptTouchEvent与onTouchEvent的调用过程
- 调用安卓系统文件管理获取文件路径
- Linux内核的系统调用(上)
- Android---WebView(网页中文本框调用系统联系人号码)
- Android笔记五.Intent异常处理及常用系统调用
- java系统时间的调用和格式转换
- 安卓中选择系统图库的图片及调用相机的源码(原创)
- 系统调用和库函数及API的区别
- 解决android4.4以上手机调用系统相册路径返回错误的问题
- 使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
- 实验3 系统调用
- android如何调用显示和隐藏系统默认的输入法
- linux OSlab4 添加自定义系统调用
- intent 调用系统的组件
- 2.6.20后添加访问系统调用的方式