您好我正在开发小型Android应用程序,我正在尝试使用融合位置更新来获取位置更新。我按照以下方式尝试了它:
private void processStartLocation() {
mGoogleApiClient.connect();
}
@Override
public void onConnected(Bundle bundle) {
updateBooleanSharedPreference(this, "isLocationUpdatesOn", true);
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, locationPendingIntent);
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
if (mLastLocation != null) {
lat = String.valueOf(mLastLocation.getLatitude());
lon = String.valueOf(mLastLocation.getLongitude());
time = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss.SSS").format(new Date(mLastLocation.getTime()));
updateUI();
}
}
private void processStopLocation() {
LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, locationPendingIntent);
}
所以一切都很好。我能够收到我的更新。但是当我尝试停止更新时,我遇到了以下问题:
java.lang.IllegalStateException: GoogleApiClient is not connected yet.
at com.google.android.gms.internal.zzlh.zzb(Unknown Source)
at com.google.android.gms.internal.zzli.zzb(Unknown Source)
at com.google.android.gms.location.internal.zzd.removeLocationUpdates(Unknown Source)
我做错了什么。需要一些帮助。谢谢。
答案 0 :(得分:3)
由于locationPendingIntent
未连接,看到错误投诉有关删除给定待处理意图(GoogleApiClient
)的所有位置更新的错误 - 也许您应该在拨打电话之前检查其连接状态:< / p>
private void processStopLocation() {
if(mGoogleApiClient !=null){
LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);
}
else{
//no need to stop updates - we are no longer connected to location service anyway
}
}
答案 1 :(得分:0)
无法查看调用processStopLocation()的位置或时间,但该错误通常意味着您在processStopLocation()中使用的'mGoogleApiClient'对象已丢失对已连接的Google Api客户端对象的引用。也许processStartLocation()中的Google Api Client对象的setter和processStopLocation()中的getter可以正常工作。再次不知道更新开始过程的确切时间以及何时调用停止过程,很难确定问题