我已经做了很长时间了。我已经尝试了我能想到的一切。
我试图获得一个粗略的位置(粗略的位置)。首先尝试以下内容:
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)
似乎没什么用。权限在清单中。我做错了什么?
答案 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 。