0

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

如果我有位置,我可以使用地理编码器获取地址。我可以使用getLastLocationGoogle Locations API 获取位置。

如果我按照教程步骤并onCreate像这样初始化 api:

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

onConnect获得这样的最后一个位置:

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

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

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

4

1 回答 1

1

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
}
于 2016-10-30T22:02:16.013 回答