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
}
我有一个应用程序,当某个 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
}