无法使用LocationRequest或getLastLocation()获取位置

时间:2015-06-15 12:25:31

标签: android google-play-services android-location

我已经做了很长时间了。我已经尝试了我能想到的一切。

我试图获得一个粗略的位置(粗略的位置)。首先尝试以下内容:

googleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this, 0 /* clientId */, this)
            .addApi(Places.GEO_DATA_API)
            .addApi(LocationServices.API)
            .build();

googleApiClient.connect();

然后这个:

@Override
public void onConnected(Bundle bundle)
{
    lastKnownLocation = LocationServices.FusedLocationApi.getLastLocation(googleApiClient);

    if(lastKnownLocation == null)
    {
        LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, locationRequest, this);
    }
    else
    {
        moveMap();
    }
}

返回null。完全可能,不用担心。但是,在此之后,我尝试使用LocationRequest请求位置更新,如下所示:

locationRequest = new LocationRequest();
    locationRequest.setInterval(10000);
    locationRequest.setFastestInterval(5000);
    locationRequest.setPriority(LocationRequest.PRIORITY_LOW_POWER);

然后这个:

@Override
public void onLocationChanged(Location location)
{
    lastKnownLocation = location;
    LocationServices.FusedLocationApi.removeLocationUpdates(googleApiClient, this);
    moveMap();
}

这两种方法都没有给我任何类型的位置。这也是可能的,所以我下载了一个假GPS应用程序,只在手机设置中将定位模式设置为GPS,并设置一个虚假的位置。

执行此操作后运行应用程序时,仍无法找到位置。我也尝试过:

locationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY)
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)

似乎没什么用。权限在清单中。我做错了什么?

2 个答案:

答案 0 :(得分:0)

您是否已开始获取位置更新?

LocationServices.FusedLocationApi.requestLocationUpdates( 
            mGoogleApiClient, mLocationRequest, this);

请检查此answer

答案 1 :(得分:0)

通过执行以下操作来修复它:

删除了这个:

googleApiClient = new GoogleApiClient.Builder(this)
        .enableAutoManage(this, 0 /* clientId */, this)
        .addApi(Places.GEO_DATA_API)
        .addApi(LocationServices.API)
        .build();

googleApiClient.connect();

补充说:

googleApiClient = new GoogleApiClient.Builder(this)
        .enableAutoManage(this, 0 /* clientId */, this)
        .addConnectionCallbacks(this)
        .addApi(Places.GEO_DATA_API)
        .addApi(LocationServices.API)
        .build();

connect()调用移至onStart()。

我认为问题是缺少 addConnectionCallbacks