使用 FusedLocationProviderApi 比使用 LocationManager 有什么优势吗?
Are there any advantages of using FusedLocationProviderApi over LocationManager?
早些时候获取用户当前位置我使用了 LocationManager:
LocationManager locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
} else if (locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
}
它易于阅读且代码非常简单。
但我注意到 Google 最近发布了 New Client API Model in Google Play Services and suggests to use FusedLocationProviderApi 看起来更复杂,它是异步的,需要处理回调等
使用 FusedLocationProviderApi 比使用 LocationManager 有什么优势吗?
FusedLocationProvider 使用多种硬件来根据请求的上下文确定位置,这意味着它对您透明地进行了优化。它还将在应用程序之间缓存捕获的位置,以避免不必要的工作来确定位置信息。因此,如果用户拥有各种位置感知应用程序,他们可能会避免对设备征税(并等待)位置捕获,因为一个位置可能已经被缓存了。
虽然旧的 LocationManager 在小型、一次性的情况下就足够了,但您绝对应该考虑更新的替代方案,因为它的好处可能很大,而且实施起来也很容易。
您也可以使用它,因为 Google Play 服务会定期跨设备更新,并不断改进基于位置的功能(以及更多)。
A link 对启动时 FusedLocationProvider 的解释:https://www.youtube.com/watch?v=Bte_GHuxUGc
在某些情况下,FusedLocationProvider 的表现非常糟糕。例如,如果您想在地图上追踪您的路径,它可能会决定在 GPS 数据和 Wifi 数据之间切换。要计算准确的行进距离,最好使用 LocationManager 强制 GPS 读数,特别是如果您还想跟踪高度,而 wifi 不提供。
请记住,FusedLocationProvider
在幕后使用 LocationManager
至少可以获取 GPS 点。它可能正在执行 Wifi 扫描并查看结果以确定位置,而不是使用网络提供商,但据我所知,没有任何关于此的文档。
除非您不能或不想使用FusedLocationProvider
,否则我建议您使用它。
早些时候获取用户当前位置我使用了 LocationManager:
LocationManager locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
} else if (locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
}
它易于阅读且代码非常简单。
但我注意到 Google 最近发布了 New Client API Model in Google Play Services and suggests to use FusedLocationProviderApi 看起来更复杂,它是异步的,需要处理回调等
使用 FusedLocationProviderApi 比使用 LocationManager 有什么优势吗?
FusedLocationProvider 使用多种硬件来根据请求的上下文确定位置,这意味着它对您透明地进行了优化。它还将在应用程序之间缓存捕获的位置,以避免不必要的工作来确定位置信息。因此,如果用户拥有各种位置感知应用程序,他们可能会避免对设备征税(并等待)位置捕获,因为一个位置可能已经被缓存了。
虽然旧的 LocationManager 在小型、一次性的情况下就足够了,但您绝对应该考虑更新的替代方案,因为它的好处可能很大,而且实施起来也很容易。
您也可以使用它,因为 Google Play 服务会定期跨设备更新,并不断改进基于位置的功能(以及更多)。
A link 对启动时 FusedLocationProvider 的解释:https://www.youtube.com/watch?v=Bte_GHuxUGc
在某些情况下,FusedLocationProvider 的表现非常糟糕。例如,如果您想在地图上追踪您的路径,它可能会决定在 GPS 数据和 Wifi 数据之间切换。要计算准确的行进距离,最好使用 LocationManager 强制 GPS 读数,特别是如果您还想跟踪高度,而 wifi 不提供。
请记住,FusedLocationProvider
在幕后使用 LocationManager
至少可以获取 GPS 点。它可能正在执行 Wifi 扫描并查看结果以确定位置,而不是使用网络提供商,但据我所知,没有任何关于此的文档。
除非您不能或不想使用FusedLocationProvider
,否则我建议您使用它。