我正在开发一款跟踪用户位置的应用程序。为了节省电量,我想实现一个空闲区域,使位置管理器在GPS位置上拉动频率较低(甚至停止)。一旦用户再次移动(通过加速计和/或显着移动检测),位置服务将按默认间隔拉取。
一种方法是将空闲区域定义为
在高层次上,显著动作检测器用于减少定位功耗。当定位算法检测到设备静止时,它们可以切换到低功耗模式,在这种模式下,它们依赖于显著运动来唤醒设备,以便在用户改变位置时使用。
这是否意味着如果显著动作传感器存在,位置管理器默认会使用它,还是我需要激活或实现某些内容才能使位置服务使用它?
那加速度计呢?我的问题很大一部分在于使用加速度计检测用户何时开始移动是否会节省任何电力,因为使用加速度计将是另一个需要功率和回调处理的传感器。谷歌列出了一些低功耗的加速度计传感器(包括显著运动传感器),而有些则没有。
一种方法是将空闲区域定义为
LocationManager :: requestLocationUpdates
中的minDistance
参数,但这里的其他用户建议它对电池消耗没有影响,而文档则说明使用此标准来节省电池电量对于位置提供者更加困难:
Google建议使用显著动作传感器来检测用户位置的变化:然而,使用minDistance参数让位置提供者节约电量更加困难,因此minTime应该是节约电池寿命的主要工具。
在高层次上,显著动作检测器用于减少定位功耗。当定位算法检测到设备静止时,它们可以切换到低功耗模式,在这种模式下,它们依赖于显著运动来唤醒设备,以便在用户改变位置时使用。
这是否意味着如果显著动作传感器存在,位置管理器默认会使用它,还是我需要激活或实现某些内容才能使位置服务使用它?
那加速度计呢?我的问题很大一部分在于使用加速度计检测用户何时开始移动是否会节省任何电力,因为使用加速度计将是另一个需要功率和回调处理的传感器。谷歌列出了一些低功耗的加速度计传感器(包括显著运动传感器),而有些则没有。
是否可以通过让GPS休眠并使用传感器检测用户移动来节省电池电量,然后再重新唤醒GPS?