是否有可能以任何程度确定iPAD是否真的有全球定位系统信号。我能想到三个案子
苹果文档提到:
一些定位服务要求在给定设备上存在特定的硬件。例如,只有包含硬件罗盘的设备才能获得航向信息。这个类定义了几个方法,您可以使用这些方法来确定哪些服务是可用的。
是否有专门用于GPS的特定呼叫,如航向或跟踪?我假设可能只有GPS设备有一个标题呼叫,因为文档中说:
在iOS中,具有适当硬件的设备也可以报告标题信息。如果headingAvailable属性中的值是“是”,则可以使用“位置管理器”对象检索标题信息。
以前的一些帖子建议尝试锁定一个非常精确的GPS更新。
但我希望有一些更具体的方法,这些方法“感觉”模糊--因为一个不准确的全球定位系统信号可能看起来就像没有GPS,而这个设备实际上有能力。另外,我认为一个能够“模仿全球定位系统”的无线网络设备也可能通过这些条件中的一种。
谢谢你的帮助!
发布于 2014-02-19 15:19:39
最简单的答案是,你应该尝试使用GPS在你需要的精度,看看你是否得到它。并处理这样一个事实,即您可能无法获得这种准确性,因为用户在一栋建筑,或城市峡谷,或没有GPS硬件,或关闭了定位服务(尽管这是可以检测到的)。
如果你获得超过100米的精度,或者如果CLLocation有高度,你几乎肯定有全球定位系统硬件(但你必须等待相当一段时间才能获得至少4颗卫星的信号锁定以获得高度)。如果您有蜂窝无线电连接(请参阅Reachability),那么您就有GPS硬件(iPhone1除外)。如果你有数字罗盘能力,那么你就有全球定位系统硬件( iPhone 3G除外)。
所有有蜂窝无线电的iPhone和iPad都有内部GPS硬件( iPhone 1除外,参见wiki图)。如果你研究一下这个图表,似乎所有拥有全球定位系统硬件的设备(到目前为止)都有数字罗盘(磁强计),iPhone 3G除外。
使用course (如建议的这里)从CLLocation,只有当设备移动足够快,并且全球定位系统有卫星锁定。一个更好的选择是从指南针(磁强计)检测是否有heading。
您可以通过硬编码硬件具有什么功能的表(描述为这里)来使用硬件字符串来确定设备功能。当引入新设备时,这必须保持更新(这意味着应用程序更新)。埃丽卡·萨顿( Erica )为UIDevice提供了一些名为Capabilities和Hardware 论github的分类,它们试图做到这一点,但可能无法在应用程序商店中使用。
所有这些都无助于外部插件GPS或外部蓝牙GPS设备。
发布于 2014-02-20 14:30:03
if (location.getHoricontalAccuracy()< 40) {
// for sure GPS
} else {
// no GPS or unusable bad GPS
}您也可以使用速度和航向,如果它们是有效的,那么它们来自GPS,因为它是唯一能够测量速度和航向的传感器。(磁强计显示没有GPS的当前航向)
https://stackoverflow.com/questions/21879756
复制相似问题