[CF Skills].NET CF3.5中确定设备的平台类型(版本号)

在CF3.5以前的版本中,为了在托管代码中确定设备的平台类型(Smartphone?PPC?PPC Pone?),我们需要通过 P/Invoke调用SystemParametersInfo这个本地函数,详细可参考以下两篇文章:
https://blogs.msdn.com/netcfteam/archive/2006/09/15/756755.aspx
http://blogs.msdn.com/netcfteam/archive/2006/09/22/766343.aspx
 然而,在.NET CF3.5中新加入了一个叫SystemSettings.Platform 的属性(关于其他CF3.5的新特性参考这里),用于方便的获取基于WinCE的常见OS名称。
下面的代码段演示了如何方便的实现这一功能:
//SDF的OpenNETCF.EnvironmentEx.PlatformName也可以判断是PPC还是Smart Phone
//但是现在的.NET CF可以做得更好 
           if (SystemSettings.Platform == WinCEPlatform.PocketPC)
               platformName = "Windows Mobile " +
 (SystemState.PhoneRadioPresent ? "Professional" : "Classic");//有电话功能的为Professional
            else if (SystemSettings.Platform == WinCEPlatform.Smartphone)
                platformName = "Windows Mobile Standard";
            else
                platformName = "Not Windows Mobile";
同时需要添加对以下程序集的引用:

其中SystemState.PhoneRadioPresent 需CE5.0以上支持
有趣的是我在SAMSUNG i718上面测试成功返回"Windows Mobile Professional",但是在模拟器上测试所有的PPC模拟器却总是返回"Windows Mobile Classic"。
原来,在 Windows Mobile Professional SDK的模拟器上运行的时候, 需要先同Cellular Emulator连接,才能使PhoneRadioPresent 返回正确的值(缺省状态下认为模拟器没有电话功能),而 Cellular Emulator 正好可以用来模拟电话功能. 关于Cellular Emulator的使用可以参考这里

posted on 2008-02-09 01:28  J.D Huang  阅读(1213)  评论(5编辑  收藏  举报