我正在使用 Google Play 位置 API,就像在教程中一样。但在某些情况下它似乎失败了。让我解释:
首先我们创建一个客户端并连接到它:
mLocationClient = new LocationClient(mContext, this, this);
mLocationClient.connect();
然后当连接时,我们请求位置更新传递一个挂起的意图:
@Override
public void onConnected(Bundle arg0) {
LocationRequest locationRequest = LocationRequest.create().setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY).setInterval(UPDATE_INTERVAL).setFastestInterval(FASTEST_INTERVAL);
mPendingIntentLocationUpdated = PendingIntent.getService(mContext, 0, (new Intent(mContext, MyService.class)).setAction(MyService.ACTION_LOCATION_UPDATED), 0);
mLocationClient.requestLocationUpdates(locationRequest, mPendingIntentLocationUpdated);
}
位置更新 1 分钟后,我们通过调用 removeLocationUpdates() 停止它。
我们非常有规律地调用这整段代码(客户端连接、请求更新),每小时调用几次。
这在最初和一段时间内有效,但在某些设备上它会在一段时间后失败:LocationClient 已连接并调用 onConnected() ,但由于某种原因,pendingIntent 不再被触发!
它似乎只在 Android 4.1.2 上失败。我还没有在 Android 4.2 或 4.3 上看到这个问题。
我真的不知道如何处理这个错误,欢迎任何帮助或建议!
编辑:只有当 WiFi 被禁用时它才会失败。如果您启用 WiFi 并且它已连接,则位置更新将再次起作用。位置服务似乎需要WiFi来更新位置,即使3G已打开并连接......但WiFi应该不是必需的!