选择融合定位服务的准确性优先级的最佳策略是什么?

时间:2014-06-07 00:44:28

标签: android google-play-services android-location

我正在构建一个应用程序,要求每5分钟记录一次位置坐标。由于我定位的设备是三星设备,但是通过原生Android位置库从网络提供商处获取问题,我选择使用Google Play服务中的融合定位服务。

显然使用PRIORITY_HIGH_ACCURACY会是最好的,因为它会使用所有提供商来获得最佳位置。问题是这会使电池耗尽太快。我想根据具体情况在PRIORITY_BALANCED_POWER_ACCURACYPRIORITY_HIGH_ACCURACY之间切换。

目前,我有这样的网络连接(通过ping特定网站确认),我使用PRIORITY_BALANCED_POWER_ACCURACY。如果没有,我使用PRIORITY_HIGH_ACCURACY。我想知道这是否是最好的方式,因为可能存在用户没有连接到任何WIFI,但是他们的WIFI已打开且处于WIFI拥挤区域的情况。我是否应该检查连接,如果失败,请检查可用的WIFI接入点,如果找到一些,仍然使用PRIORITY_BALANCED_POWER_ACCURACY

2 个答案:

答案 0 :(得分:1)

为什么不运行定期检查应用程序电池电量的线程或意图服务。当级别低于某个阈值时,调用removeLocationUpdates()并通过使用带有' PRIORITY_BALANCED_POWER_ACCURACY'

的LocationRequest对象调用requestLocationUpdates()再次注册。

此外,您可以使用WifiManager Class检查用户是否在Wi-Fi拥挤区域,您可以使用startScan()扫描wifi热点,并在广播接收器中注册结果并根据结果进行更改。

我不认为可以确定用户是否在室内。 gps信号在室内通常较弱,你可以使用GpsStatus类和getSatellites()方法来推断一些有关它的知识。

答案 1 :(得分:0)

您的5分钟要求有多灵活?我不确定这对您的应用程序是否可行,但您可能希望允许用户在设置菜单中为自己选择准确度。您可以提供分别使用PRIORITY_BALANCED_POWER_ACCURACY和P RIORITY_HIGH_ACCURACY的低功耗选项和高精度选项。另一个选项是提供一个滑块,以便用户可以设置位置更新之间的间隔时间,并在较长的时间间隔内使用PRIORITY_BALANCED_POWER_ACCURACY,在短时间间隔内使用PRIORITY_HIGH_ACCURACY