android - 使用 Google Service API 获取最后已知位置

标签 android android-location android-googleapiclient

我正在学习使用 Google Service API 获取位置信息。但是我很困惑,因为我看到人们使用两种方式来获取位置:

1.

FusedLocationProviderApi fusedLocationProviderApi = LocationServices.FusedLocationApi;
Location lastKnownLocation = fusedLocationProviderApi.getLastLocation(googleApiClient);

2.

FusedLocationProviderClient mFusedLocationClient =  LocationServices.getFusedLocationProviderClient(this);
...
Task<Location> locationTask = mFusedLocationClient.getLastLocation();
        locationTask.addOnSuccessListener(this, new OnSuccessListener<Location>() {
            @Override
            public void onSuccess(Location location) {
                // Got last known location
                if (location != null) {
                    mLastKnownLocation = location;
                }
            }
        });

有人可以向我解释一下何时使用哪一种以及这两种方法之间有什么区别来获取最后已知位置吗?

最佳答案

两种 getLastLocation 方法都指向相同的文档内容。但是使用新的 FusedLocationProviderClientFusedLocationProviderApi 更简单,因为我们不处理 google api 客户端及其回调方法。它会自动为我们处理播放服务连接。就这样

FusedLocationProviderClient 方法返回任务(甚至获取最后已知位置),恕我直言,这是由于在内部处理播放服务。

关于android - 使用 Google Service API 获取最后已知位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44894539/

相关文章:

android - 在另一个线程中访问 UI View *不会* 导致崩溃。为什么?

android - 如何在一次 Activity 中读取 GPS 数据和加速度计数据

android - 从 Android 的 LocationManager 请求 getLastKnownLocation 时的空指针

android - GoogleApiClient 在调用 onConnected 函数后抛出 "GoogleApiClient is not connected yet"

java - Android 6.0 中的 NetworkStats - 权限问题

java - 序列化接口(interface)

Android:通知用户更新版本

android - fusedLocationProviderClient.lastLocation.addOnSuccessListener 始终为空

java - 如何使用 FusedLocation API 每 5 分钟接收一次位置更新

android - 在android中使用MVP模式时,android服务调用和对GoogleAPIClient的调用应该写在哪里?