2013-08-28 55 views
0

我正在使用Google Play位置API,与在tutorial中几乎一样。 但在某些情况下它似乎失败了。让我来解释:Android位置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不应该是必需的!

回答

1

如果你去了accuracy_fine位置将使用GPS,你不需要任何interweb连接。

+0

谢谢,但我不想使用GPS太耗电,不能在室内工作。 – muslidrikk