我正在开发一个追踪用户下落的应用程序。为了节省电池,我想实现一个空闲区域,使位置管理器在GPS位置上的拉频率降低(甚至停止)。一旦用户再次开始移动(由加速度计和/或重大移动检测到),定位服务将在默认时间间隔上拉动。
一种方法是将空闲区域定义为LocationManager::requestLocationUpdates中的LocationManager::requestLocationUpdates参数,但这里的其他用户( 表明它对电池损耗没有任何影响 )和文档指出,位置管理器很难使用以下标准来节省电池:
然而,对于位置提供商来说,使用minDistance参数来节省电能是比较困难的,因此minTime应该是节约电池寿命的主要工具。
谷歌还建议使用显着运动传感器来检测用户位置变化的时间:
在较高层次上,采用显着运动检测器来降低定位的功耗。当定位算法检测到设备是静态的时,它们可以切换到低功耗模式,在该模式下,当用户改变位置时,它们依靠显著的运动唤醒设备。
这是否意味着位置管理器在默认情况下使用重要的运动传感器,或者我是否需要激活或实现某种东西来使位置服务使用它?
加速度计呢?我问题的很大一部分在于,使用加速度计检测用户何时开始移动是否会节省任何电力,因为使用加速度计将是另一个需要电源和回叫处理的传感器。一些加速度计传感器被列为低能由谷歌,而有些不是(包括重要的移动传感器)。
它是否有可能节省任何电池电源,让GPS进入睡眠,然后使用传感器来检测用户的移动,这将再次唤醒GPS?
发布于 2016-03-15 10:17:36
LocationManager::requestLocationUpdates通过使用高级方法setSmallestDisplacement()示例使用significant motion sensor:
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(20*1000);
mLocationRequest.setFastestInterval(10*1000);
mLocationRequest.setSmallestDisplacement(10F); //metershttps://stackoverflow.com/questions/31456017
复制相似问题