ios - ios“智能”位置跟踪器和电池消耗

标签 ios gps location battery

我正在创建一个类似于“Moves”应用程序的 Activity 跟踪器,该程序旨在跟踪步数,距离,卡路里和 Activity 时间。

对于Iphone5s +设备,我正在使用内置的M7芯片来确定“步进”,然后从中进行估算。对于M7设备,我从不使用GPS。基本上没有电池消耗,并且插值的数量足以满足需要。这样可以足够合理地获得步行/跑步数据。

但是至少要支持Iphone5和Iphone4,我需要使用GPS来获取位置,然后从远处插入步数和卡路里。我遇到了严重的电池耗电问题(有点超出预期),并且正在寻求有关如何最大程度地减少这种情况的建议。除了速度之外,我还在使用加速度计,以帮助您对 Activity 类型(步行,跑步,骑自行车,运输)进行有根据的猜测

我为GPS优化尝试过的一些方法:

  • 延迟更新:Iphone5和最低版本的IOS支持此功能。执行此操作的代码很简单,但是设备是否实际使用它值得怀疑。我只看到它可以在4台设备中的1台正常运行。其他3个设备从未从未从同一代码推迟更新。另一个用户建议其他应用程序阻止设备进入睡眠状态,包括当我还安装了“Moves”时。因此,这在理论上没有多大帮助。
  • 降低准确性:降低连续位置轮询的准确性。我从高处开始,但减小到10m,然后到几百米,依此类推。这似乎无济于事,无论如何,轮询似乎仍会定期进行。
  • startMonitoringSignificantLocationChanges :为了减少无休止的gps轮询(当用户一次不移动数小时(尤其是在晚上)时),我仅在设备停止移动任意2分钟后才从连续轮询切换为重大更改。然后,在进行任何重大的位置更新后,我将重新启用连续跟踪。这几乎达到了预期的效果-如果停止跟踪,则电池耗电会变慢,并且如果连续恢复,电池耗电就会恢复。此外,如果用户开始行走,则一段时间内无法保证发生重大运动事件。这对于准确性非常差。有时似乎根本无法恢复。

  • 相对而言,“Moves”应用程序能够很好地跟踪位置,而且耗电量也相当可观。它可能需要一天的大部分时间才能收费。使用我的代码,用户报告了几个小时的电池电量耗尽。

    可以使用哪种优化来改善这一点,但在跟踪运动时仍保持合理的准确性?

    进度更新:
    startMonitoringSignificantLocation更改。我使用一个计时器进行了设置,该计时器在闲置2分钟(不移动)后切换为重要监视。然后,如果有任何重大更改,或者重新打开应用程序后处于 Activity 状态,则会再次恢复正常位置跟踪。这似乎运作良好。我的手机在整晚的8小时内仍然从100%变为10%。这是一台有电池故障的旧版iphone,但通常情况下,如果整夜没有充电,而没有运行任何应用,它可能会损失30-40%的电量。我需要测试更多,但startMonitoringSignificantLocationChanges似乎仍然要用一些电池。

    此外,startMonitoringSignificantLocationChanges在重新启动应用程序方面存在一些预期的准确性问题。在农村地区,重新启动前可能要走几公里。对于长途旅行来说可能没问题,但是如果我想步行30分钟,可能会完全错过。 在城市环境中,它似乎可以移动2-3个街区以内,这是合理的。

    即使我使用了在计时器上停止并启动的连续位置跟踪来检查移动情况,在恢复连续记录之前,我仍然有最糟糕的情况,即两次重启之间存在一分钟的延迟。

    进度更新2 :

    上述重要的更新更新对我来说是致命的缺陷:它们的启动速度并不总是足够快。有时候,它需要1-2英里!

    作为一种更好的方法,我尝试保持连续的位置更新,但是在设备不移动时将“desiredAccuracy”属性从高精度切换为低精度。这实际上应该在不 Activity 期间关闭GPS接收器。我一直在进行100米至1公里的准确度试验,以期达到预期效果。与仅使用重大变更监视相比,它似乎确实要使用更多的连击,但是它似乎也更具响应性。

    最佳答案

    您上面提出的解决方案均无效。
    您需要GPS,并且可以使用全精度(CLLocationAcuracyBest)。

    如果我正确地记住了CLLocationAcuracyBest和CLLocationAcuracyBestForNavigation之间的区别,则后者会另外使用加速度传感器,这总会消耗更多的电池。

    没有半电池GPS模式!
    GPS芯片是否启用。

    为了进行距离计数,您需要GPS,但手机发射塔和Wlan位置将无法使用。
    而且只有Wlan位置的电池塔可以节省电池。

    在Iphone4上,这样的全精度GPS应用程序(例如my)可以持续约8个小时,直到电池电量不足。

    如果用户受益于该应用程序,则8个小时就足够了。

    关于ios - ios“智能”位置跟踪器和电池消耗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24497998/

    相关文章:

    ios - UIScrollView 中的 UIWebView,如 Apple Mail.app

    ios - NSString 到带有希腊字符的 char*

    ios - 检查/比较 CloudKit 中的 NSError 代码?

    java - 异构数组列表

    ios - 位置访问 - 应用程序不请求用户访问位置的权限 - iOS 11

    google-maps - 谷歌是如何得到 map 上邮政编码的大纲的?

    objective-c - iOS 中的预期标识符或 '('

    ios - iPhone GPS导航不会退出

    java - 使用 GPS 寻找方向

    c# - 出现上下文菜单时如何获取鼠标位置?