Google 定位服务的 getLastLocation 方法是否在 Android 应用程序中启动 GPS?

Does Google Location Services' getLastLocation method start the GPS in Android app?

我有一个应用程序,当某个 activity 启动时,需要用当前地址填写一个字段。我不确定我这样做的方式是否会更新 gps 坐标,除非启动另一个使用 gps 的应用程序。

如果我有位置,我可以使用地理编码器获取地址。我可以通过 Google 位置 API.

getLastLocation 获取位置

如果我按照教程步骤在 onCreate 中初始化 api,如下所示:

GoogleApiClient.Builder(this).addConnectionCallbacks(this).addOnConnectionFailedListener(this).addApi(LocationServices.API).build();

并在 onConnect 中获取最后一个位置,如下所示:

Location lastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);

我感觉我只获得了最后一个已知地址,但上面的代码实际上并没有在 phone 上启动 GPS。

我是否需要在 onConnected 中启用位置更新,然后在我第一次获得位置时关闭更新,或者上面的代码是否会真正启动 GPS?

getLastLocation 方法不启动 GPS,仅检索最后位置。

您还可以检查位置的日期以检测它是否太旧。

如果是旧位置或想获得新位置,您需要进行位置请求。

考虑我的 LocationRequest

private LocationRequest mLocationRequest;

private void createLocationRequest(){
    mLocationRequest = new LocationRequest();

    // 0 means here receive location as soon as possible
    mLocationRequest.setInterval(0);
    mLocationRequest.setFastestInterval(0);

    // setNumUpdates(1); stops location requests after receiving 1 location
    mLocationRequest.setNumUpdates(1);

    // PRIORITY_HIGH_ACCURACY option uses your GPS
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
}

@Override
public void onLocationChanged(Location location) {
    // Use new location
}