Fused Location API 所需的最低播放服务版本

Posted

技术标签:

【中文标题】Fused Location API 所需的最低播放服务版本【英文标题】:Miminum play services version required for FusedLocation API 【发布时间】:2019-05-16 13:40:32 【问题描述】:

使用FusedLocationApi设备上安装的播放服务最低版本是多少?

同样LocationManager不需要播放服务,使用LocationManager是否有最低要求。

我想使用涵盖尽可能多设备的任何 API 来获取用户的位置,这就是为什么我担心它们的最低要求。

谢谢。

【问题讨论】:

【参考方案1】:

你真的不需要FusedLocationApi。您可以改用普通的 android API android.location.LocationManager,我不确定它是否能 100% 工作,但您可以尝试进行一些自定义操作:

//start updates
HandlerThread thread = new HandlerThread("location updates thread");
thread.start();
LocationManager mgr = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
Looper looper = handlerThread.getLooper();
String provider = LocationManager.GPS_PROVIDER;//either gps, network, passive, fused
mgr.requestLocationUpdates(provider,1,1,callback,looper);
...
//stop updates
mgr.removeUpdates(callback);
thread.quit();

还要确保在开始位置更新之前请求位置权限

【讨论】:

【参考方案2】:

我想使用涵盖尽可能多设备的任何 API 来获取用户的位置,这就是为什么我关心他们的最低要求。

您可以开始尝试通过以下方式接收位置信息 FusedLocationProviderClient 如果设备支持 google play 服务。该 api 具有返回自身可用性的方法。

在不支持的情况下,LocationManager 可以在所有版本上安全使用。您可以请求网络或 gps 提供商的位置,只要设备能够使用它们。

【讨论】:

以上是关于Fused Location API 所需的最低播放服务版本的主要内容,如果未能解决你的问题,请参考以下文章

Smack 4.1 所需的最低 Android API 级别是多少?

使用 Fused Location API,Marshmallow 不会使用 location.getSpeed()

为 Fused location API 添加 addGpsStatusListener

使用 Location Manager 和 Fused Location Provider Api 获取位置有啥区别?

Google Fused Location API 导致错误(Android)

如何使用 FUSED LOCATION API 优化电池 - Android