通过使用传感器检测用户移动来节省定位服务的功率

Mar*_*tin 6 gps android location geolocation battery-saver

我正在研究跟踪用户行踪的应用程序.为了节省电池,我想实现一个空闲区域,使位置管理器在GPS位置上拉低频率(甚至停止).一旦用户再次开始移动(通过加速度计和/或显着移动检测到),位置服务将拉出默认间隔.

一种方法是将空闲区域定义为minDistance参数LocationManager::requestLocationUpdates,但此处的其他用户建议它对电池消耗没有任何影响,并且文档指出位置管理器难以使用此标准节省电池:

但是,位置提供商使用minDistance参数更难以节省功耗,因此minTime应该是节省电池寿命的主要工具.

谷歌还建议使用重要的运动传感器来检测用户位置何时发生变化:

在高级别,重要的运动检测器用于降低位置确定的功耗.当定位算法检测到设备是静态的时,它们可以切换到低功率模式,在这种模式下,当用户改变位置时,它们依赖于显着的运动来唤醒设备.

这是否意味着位置管理器默认情况下使用重要的运动传感器,或者我是否需要激活或实施某些东西以使位置服务使用它?

加速度计怎么样?我的问题的很大一部分在于使用加速度计来检测用户何时开始移动会节省任何功率,因为​​使用加速度计将是另一个需要电源和回调处理的传感器.一些加速计传感器谷歌列为低功率,而有些则不是(包括重要的运动传感器).

是否可以通过将GPS置于睡眠状态来节省任何电池电量,然后使用传感器检测用户移动,这将再次唤醒GPS?

Ami*_*mir 1

LocationManager::requestLocationUpdates使用significant motion sensor高级方法示例setSmallestDisplacement()

mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(20*1000);
mLocationRequest.setFastestInterval(10*1000);
mLocationRequest.setSmallestDisplacement(10F); //meters
Run Code Online (Sandbox Code Playgroud)