如何确定 iOS 设备是停止还是移动(驾驶)

Posted

技术标签:

【中文标题】如何确定 iOS 设备是停止还是移动(驾驶)【英文标题】:How to determine if an iOS device is stopped or moving (driving) 【发布时间】:2013-07-25 03:59:15 【问题描述】:

我们有一个在车辆周围使用的应用程序。它不应该在车辆行驶时使用(法律、健康和安全要求)。我们可以通过引导访问将设备锁定为仅使用这个应用程序,但我们真正需要做的也是在车辆移动时锁定应用程序。理想情况下,会出现某种锁定屏幕,说明您不应该在移动时使用它,并且它会一直呆在那里直到车辆停止。

现在我们知道 ios 设备上的 GPS 并不那么准确,所以我认为 CoreMotion 中的某些东西(可能与 GPS 结合使用)可以解决问题。本质上,我们希望在设备移动速度超过 10kph 时激活此 Drive Safe 模式。

这可以吗?我们如何防止错误标志(GPS 随机跳跃位置 - 正如众所周知的那样)CoreMotion 是做到这一点的方法吗?

最终,如果 Apple 在操作系统中引入这样的功能来阻止分心驾驶(开车时发短信/FB/推特),那将是非常棒的,但我希望至少有这个应用程序,我们可以做到这一点。

提前感谢任何指示或提示。

【问题讨论】:

我认为你可以使用加速度计传感器。不确定,但请阅读***en.wikipedia.org/wiki/Accelerometer GpS on iphone4/4s 也可能在 iphone5 上,是市场上最好的 GPS 芯片之一。您可以通过 Gps 超级可靠地确定设备是否在移动。你试过了吗? @Jordan M:你得到解决方案了吗?如果您已经实施,那么您可以在这里分享吗?在此先感谢.... 抱歉 - 目前还没有解决方案,但我们已经推迟了该功能,直到我们能够获得更好的技术修复。 【参考方案1】:

您是否尝试过提高位置管理器的灵敏度?

locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;

此外,请记住,配备蜂窝网络的设备可能也有帮助,因为位置管理器还会尝试通过从蜂窝塔反弹来对用户的位置进行三角测量。

根据 Apple 的文档,“核心位置”不仅使用 GPS,还使用蜂窝塔和 WiFi:

Core Location 框架可让您定位设备的当前位置并在您的应用中使用该信息。该框架使用从内置蜂窝、Wi-Fi 或 GPS 硬件获得的信息来对设备的定位进行三角测量。它会将该位置报告给您的代码,并且根据您配置服务的方式,还会在接收到新的或改进的数据时提供定期更新。

Apple Core Location Documentation

【讨论】:

你答案的第一部分是好的。但是基于蜂窝塔的定位和移动检测到底有什么用呢? 在 GPS 广泛用于手机之前,基于位置的服务使用移动定位系统,这里有一篇文章:searchengineland.com/…

以上是关于如何确定 iOS 设备是停止还是移动(驾驶)的主要内容,如果未能解决你的问题,请参考以下文章

ReactJS:如何确定应用程序是在移动浏览器还是桌面浏览器上查看

如何将 SpriteKit 节点移动为汽车驾驶体验?

如何在移动iOS / Android上使用JS屏蔽截图? [关闭]

如何测试 iOS 设备网络是使用 IPv6 还是 IPv4?

如何在真实设备中模拟驾驶路线

js如何判断用户使用的设备类型及平台