【问题标题】:Does Google Location Services' getLastLocation method start the GPS in Android app?Google 定位服务的 getLastLocation 方法是否会在 Android 应用中启动 GPS?
【发布时间】:2016-10-30 20:29:26
【问题描述】:

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

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

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

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

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

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

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

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

【问题讨论】:

    标签: android gps google-location-services


    【解决方案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
    }
    

    【讨论】:

    • 谢谢。现在完美运行!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多