在保持与C#编写的PocketPC 2003的代码兼容性的同时,支持WindowsMobile5(及更高版本)设备的最佳方法是什么?我们有一个相当大的应用程序供许多不同的客户使用,在拥有实际PPC2003设备的人和其余较新的WinMobile5或更高版本的人之间大致均等地分配-即,我们必须在相当长的一段时间内继续支持较旧的设备然而。现在,我需要为应用程序添加摄像头控制,至少是对于那些具有摄像头的设备,以便它们可以拍摄照片并将其附加到其他数据上,最终将这些数据发送到Web服务进行处理。
到目前为止,我的研究已经打开了Microsoft.WindowsMobile.Forms dll中的CameraCaptureDialog类,但是我无法将该引用添加到PocketPC 2003应用程序中。老板不太热衷于将应用程序分成单独的PPC2003和WinMobile项目。有没有一种方法可以动态加载该dll,并以这种方式使用CameraCaptureDialog?还有其他选择吗?
最佳答案
从.NetCF PocketPC 2003应用程序访问摄像机的唯一方法是P /调用C / C ++ DLL。有一个示例应用程序可以在Intertubes的某个地方浮动(我会寻找它-我不记得详细信息,但是我认为C代码通过DirectShow访问摄像头),但是使用起来相当复杂,可能不会成功。不能完全满足您的需求。从好的方面来说,如果您能找到方法,它将对PocketPC 2003和Windows Mobile 5都适用(即,功能齐全的PPC2003应用程序也将在WinMo5设备上运行)。
CameraCaptureDialog几乎是无用的,因此您在那里不会损失太多。理想情况下,作为程序员,您希望以编程方式控制摄像机界面(即,设置分辨率,从摄像机切换到视频,拍摄图片等),但是除了打开设备的接口外,它实际上不允许您执行其他任何操作内置界面。
更新:这是我提到的示例应用程序:
http://blogs.msdn.com/b/marcpe/archive/2006/03/03/542941.aspx
我记错了:此示例在PocketPC 2003中将不起作用(仅在Windows Mobile 5及更高版本中)。据我所知,在PocketPC 2003中无法访问设备相机。至少没有与设备和/或制造商无关的访问相机的方式。对于某些设备(例如HP iPaq),制造商通过设备上已经存在的DLL(可以通过P / Invoke访问)来公开相机功能。
如果需要照相机集成,则设备必须运行Windows Mobile 5(或更高版本)。某些设备可以升级到该操作系统的较新版本,但是我肯定不得不质疑这一举措。最好改用更现代的设备(例如Droid)。