我正在编写一个简单的基于 GPS 的应用程序,用于位置感知。每当启用 GPS 时,应用程序都会请求位置更新并以格式打印纬度和经度。TextView
。如果 GPS 被禁用,位置提供商会回退到LocationManager.NETWORK_PROVIDER
用于相对于相邻手机信号塔的三角测量设备位置。目标是每当检测到设备移动时,它就应该开始填充TextView
与纬度/经度。当没有运动时,该过程应该停止。为此,我将位置更新率实现为:
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 1, this);
上面的行会导致非常频繁的位置更新(即使没有移动,我也会不断获取纬度/经度值)。我在某处读到过minTime=0
这不是一个好主意(电池消耗得更快)。当我将其更改为 2 或 3 秒时,更新变得非常慢(即使设备移动超过 50 米)。改变minDistance
似乎也不起作用!我想知道 Google 地图应用程序使用哪些设置?功耗对我来说不是限制因素,因为我正在为一些网络路测设备(从车辆的车载铅酸电池获取恒定功率)开发应用程序。
更新频率高度依赖于硬件。好的 GPS 芯片会发送非常频繁的更新(三星 Galaxy S3),而有些芯片甚至很难显示 lat-lan 位置。这里的要点是根据距离和时间标准化接收更新的频率。使用各种时间和距离配置并进行测试并使用最合适的值。对于我的项目,我使用了以下值:
//对于步行用户
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5, 10, this);
//对于车内用户
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2, 50, this);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)