首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测真实设备上的运行情况?

如何检测真实设备上的运行情况?
EN

Stack Overflow用户
提问于 2015-11-13 20:49:12
回答 2查看 323关注 0票数 1

我正在开发一个通用应用程序,并试图检测它是在桌面计算机上运行,还是在真正的IoT设备上运行(Raspberry 2)。按照建议,我尝试使用API合同检查,但是即使在桌面计算机上也会返回true

代码语言:javascript
复制
ApiInformation.IsApiContractPresent( "Windows.Devices.DevicesLowLevelContract", 1, 0 );

显然,当我试图调用GpioController.GetDefault()时,它会在桌面上失败,但奇怪的是,它使用的是FileNotFoundException"The specified module could not be found."

那么,什么是正确的方法来检测一个真正的设备呢?

谢谢你的帮忙,

热尔吉

编辑:

在一些桌面上,GpioController.GetDefault()返回null,而在其他机器上,FileNotFoundException会失败。

编辑:

我的目标是确保在非物联网设备上运行时,我可以安全地调用任何GPIO或IoT核心特定的API,而无需在任何地方使用尝试捕获块来处理异常。

EN

回答 2

Stack Overflow用户

发布于 2015-11-20 13:00:36

您可以找到应用程序正在运行的设备的类型。

代码语言:javascript
复制
Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily

来源:https://msdn.microsoft.com/en-us/library/windows/apps/windows.system.profile.analyticsversioninfo.aspx

微软确实建议通过检查通用应用程序的功能,而不是仅仅检查设备家族的功能,从而最大限度地利用通用应用程序。这里有一篇关于这一切的文章:https://msdn.microsoft.com/en-us/library/windows/apps/dn894631.aspx

票数 0
EN

Stack Overflow用户

发布于 2015-11-20 14:08:52

这取决于您想要检查的“真正设备”的哪个方面。正如您已经发现的那样,使用API合同信息不是一个好的代理(尽管它应该返回null,而不是崩溃,在桌面上--这是一个错误)。使用AnalyticsInfo可能是一个合理的代理,但随着时间的推移,您必须小心地接收新值,而且它实际上标识的是OS类型,而不是物理硬件。枚举硬件设备是检测硬件的最佳方法,但它们可以在用户插件和解锁时动态地进出。

根据答案,你希望采取什么不同的做法?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33701507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档