2013-08-28 88 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