如何确定iOS硬件是不是有GPS [重复]

Posted

技术标签:

【中文标题】如何确定iOS硬件是不是有GPS [重复]【英文标题】:How to determine if iOS hardware has GPS [duplicate]如何确定iOS硬件是否有GPS [重复] 【发布时间】:2014-02-13 21:47:11 【问题描述】:

是否可以确定设备是否具有 GPS 硬件,而无需维护具有 GPS 硬件的设备列表(如 here 所述)?

this 问题的答案使用CLLocationManager 引用,但提供了死链接。

我还阅读了有关检查设备是否有运营商的信息。我假设这需要设备实际上有一个活动的 SIM 卡,这会导致测试设备和其他一些边缘情况出现问题。

【问题讨论】:

GPS 是一种无源设备,类似于便携式调频收音机。它只接收信号,不传输信号,因此检查 sim 卡是命中还是失败。 您不应该检查硬件。您应该检查 GPS 是否能够使用。如果您根本不希望您的应用程序运行,除非有 GPS,您可以在 Info.plist (UIRequiredDeviceCapabilities) 中限制它。但否则,如果设备没有提供您想要的准确修复,您的工作就是优雅地失败(并确保留出足够的时间,因为 GPS 可能需要很长时间才能“预热”)。 @matt 我想让应用程序运行,我只想阻止某些没有 GPS 就无法运行的功能,但是如果用户只是关闭了 GPS,我想要某些消息,与他们相比无法打开它(即使用 iPod touch)。 @NMunro 用户如何“关闭 GPS”?没有开关。用户可以将核心位置作为一个整体关闭,但您在检测 that 时不会有任何困难。但就使用 Core Location而言,你得到的结果就是你得到的结果; Apple 不希望您考虑如何获得该结果。 @matt 可以为个别应用关闭定位服务。 【参考方案1】:

没有 API 可以直接确定这一点。此外,可以连接蓝牙 GPS 设备并向没有固有 GPS 功能的 ios 设备提供 GPS 功能。 我自己的测试表明,如果没有 GPS(或 GPS 卫星接收,例如室内远离窗户),CLLocationManager 报告的水平精度永远不会低于 +/- 65m。

【讨论】:

【参考方案2】:

您可以(并且应该)使用 CLLocationManager 的 locationServicesEnabled: 类方法来确定用户是否为您的应用程序打开了位置服务。

【讨论】:

这与设备是否有GPS无关。即使没有 GPS,定位服务也会尝试从 Wifi 位置等信息中计算出设备位置。 我的回答是基于我认为问题与是否启用位置服务有关,而不是 GPS。 我不是在看他们有没有开启 GPS,我是在看他们使用的设备是否有 GPS。

以上是关于如何确定iOS硬件是不是有GPS [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Android GPS驱动

如何使用python 3从内部gps获取数据?

如何确定我的 Android 应用程序是不是在 AVD 中运行 [重复]

Android:创建没有 GPS 硬件的模拟器

Android GPS驱动

Apple 的 CLLocation 管理器的外部 NMEA GPS