如何更有效地在iPhone上进行位置跟踪,而不是始终使用GPS?

时间:2012-12-11 19:28:54

标签: iphone ios geolocation gps

我正在开发iPhone(iOS 6)的位置应用程序,该应用程序不断向Web服务发送准确的位置信息。我进行了设置,以便应用程序每分钟发送一个位置数据包(只要位置发生重大变化)。应用程序的这一部分运行良好(作为后台任务),但正如您可能预期的那样它会影响电池寿命,因为它始终显着地使用GPS(我花了大约6个小时,这已经不算太糟了,因为我已经习惯了堵塞在我的手机里,在家里,所以我可以度过这一天,但是我需要将其延长至少16个小时才能实用。)

我想要做的是当手机显示暂时没有显着移动时关闭GPS。使用GPS数据本身是微不足道的。但是,关闭GPS后,我可以使用什么作为触发器重新打开它,并重新开始位置发布?我可以在感觉到5分钟没有产生新位置时将其关闭,然后在X分钟后检查位置以查看它是否已经改变,并采取相应措施。或者也许我可以用一些聪明的方式使用加速度计,或者其他一些传感器来触发再次开启GPS。

鉴于旅行时间通常只占一天的一小部分,因此在家中或办公室时最小化GPS活动是有意义的......但如何可靠地做到这一点?

4 个答案:

答案 0 :(得分:2)

我可能考虑的模型是使用standard location service获取我的位置,一旦我得到它,关闭它并打开使用更少功率的significant change location service。而且,一旦我收到后续的重大变更通知(您可能想要忽略第一个,因为您已经拥有准确的位置),您可以再次转动标准位置服务以获得准确的位置(假设您根本需要它...如果你不需要超精确的位置,你显然只是从一开始就使用重要的变更位置服务。

或者,如果您正在执行此操作且仍然使用过多电量,则可以完全关闭位置服务,然后在一定时间后将其重新打开,但在此期间您可能会丢失重要的位置更改如果用户根本没有移动,在许多情况下它将比上述技术使用更多的功率。

答案 1 :(得分:1)

这不是一个完整的答案,但完全使用GPS的替代方案是惯性死(推断)推算。这可以仅使用加速度计和陀螺仪(以及一些聪明的数学运算)来实现,偶尔使用GPS作为检查。我不知道这种方法有多准确,或者它对电池时间的影响是什么......我会在实施时告诉你; - )

虽然Android accelerometer accuracy (Inertial navigation)似乎表明它不值得付出努力,但我认为这只是使用加速度计,并且没有使用陀螺仪 - 这两个设备提供不同的运动方面:{{ 3}}

答案 2 :(得分:0)

如果您不担心GPS关闭几分钟导致精度下降,那么您可以考虑将其完全关闭。细胞塔位置机制工作正常,虽然它位于塔,可能在某种程度上。但是,在几分钟内,无论如何都很容易旅行。做单元塔的网络定位器也可以做wifi网络,精度达到20m左右。无论如何,GPS无法在室内工作。因此,请关闭GPS,并在整个时间内保持网络位置。

答案 3 :(得分:0)

我的应用程序(正在开发中)在后台运行8小时,每秒修复一次文件。这就足够了,它不会变得更好。你不能兼得,GPS精度和20小时的电池。
6小时,也可能是由服务器通信(或经常启用设备)引起的
但一个有趣的方法可能是运动传感器,但它是一个很好的问题,它需要多少电池。
你知道任何可以记录精确GPS超过8小时的iphone应用程序吗? 我从来没有测量过,但是试试MotionX gps,他们能记录多长时间。