【问题标题】:PocketPC Camera control questionPocketPC 相机控制问题
【发布时间】:2011-03-15 02:22:07
【问题描述】:

在保持与用 C# 编写的 PocketPC 2003 的代码兼容性的同时,支持 WindowsMo​​bile5(及更高版本)设备的最佳方式是什么?我们有一个相当大的应用程序正在被一群不同的客户使用,大致平均分配给使用实际 PPC2003 设备的人,其余的是更新的 WinMobile5 或更新的设备——也就是说,我们必须继续支持旧设备相当长一段时间然而。现在,我需要为应用程序添加摄像头控制,至少对于那些有摄像头的设备,这样他们就可以拍摄照片并将其附加到最终发送到网络服务进行处理的其他数据。

到目前为止,我的研究发现了 Microsoft.WindowsMo​​bile.Forms dll 中的 CameraCaptureDialog 类,但我无法将该引用添加到 PocketPC 2003 应用程序。老板不太热衷于将应用程序拆分为单独的 PPC2003 和 WinMobile 项目。有没有办法动态加载该dll,并以这种方式使用CameraCaptureDialog?还有其他选择吗?

【问题讨论】:

    标签: windows-mobile pocketpc


    【解决方案1】:

    从 .NetCF PocketPC 2003 应用程序访问相机的唯一方法是 P/Invoking C/C++ DLL。有一个示例应用程序可以在某个地方的 Intertubes 周围浮动(我会寻找它 - 我不记得细节,但我认为 C 代码通过 DirectShow 访问相机),但使用起来相当复杂,可能会赢t 做你需要的。从好的方面来说,如果您知道如何操作,它将适用于 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)。

    【讨论】:

    • 感谢您的回复。如果 PPC2003 用户无法从我们的应用程序中拍照,我根本不在乎。我只想从 WindowsMo​​bile5 及更高版本中找到一种能够做到这一点的方法,但是——这就是我坚持的——我不想建立一个单独的项目——所以我想我只需要一种仅在运行时加载 WindowsMo​​bile.forms.dll 的方法(如果存在)。至于针对更现代的设备——我们的客户在重型 Intermec 和 Symbol Pocketpc 上使用该应用程序,它们的价格高得离谱,但我必须承认,它们坚固如坦克。
    • Intermec PDA 是我仍在为 Windows Mobile 编写代码的唯一原因,所以我理解。可以通过反射调用Microsoft.WindowsMobile.Forms中的方法;如果是这样,您只需检查操作系统版本,如果您使用的是 WM5+,则仅调用相机方法。如果无法通过反射访问 DLL,您应该能够创建一个单独的 DLL 项目(一个 WM5 项目)来包装 CameraCaptureDialog 调用。然后,您应该能够根据您正在运行的操作系统调用单独的 DLL 方法。
    • 太棒了,我使用了 WinMobile 子项目 .dll,一切都可以正常编译,并且在旧的 PPC 2003 设备上仍然可以正常运行。再次感谢!
    • 谢谢你,MusiGenesis 和@KenF,这看起来像是我需要的。 Ken,你的子项目不是开源的,是吗? ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    相关资源
    最近更新 更多