2011-12-07 51 views
0

我想每分鐘跟蹤一次我的位置。爲此我使用locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60000, 0, pll);Android請求位置更新電話閒置時

以下是我的手機閒置時的日誌。

Date  Latitude    Longitude   Accuracy 
07:45:35 51.362402459999996 - 6.2174867399999995 (75.0) 
07:46:35 51.362402459999996 - 6.2174867399999995 (75.0) 
07:47:35 51.362402459999996 - 6.2174867399999995 (75.0) 
... 
07:50:35 51.362402459999996 - 6.2174867399999995 (75.0) # I'm further than 75m away from my home at that time 

我確實每分鐘都有一個新的位置,但它完全一樣。只是時間更新。位置沒有更新(當我移動不夠時可能正常),但我發現奇怪的是座標完全相同。同樣,因爲我沒有啓動無線功能,所以它應該將我定位到CellId(精度爲〜1000m),這裏我仍然有75.0的準確度。看來,這是使用無線網絡記錄的最後一個位置。

任何想法如何記錄真實的最後位置(即使準確度低)?

public void onLocationChanged(Location location) { 
    System.out.println(new Date(location.getTime())+" " 
      +location.getLatitude()+" - "+location.getLongitude()+" ("+location.getAccuracy()+")"); 
    callback.addEntry(location); 
} 
+0

做小區ID你檢查你的onLocationChanged(? – user370305

+0

在onLocationChanged()方法中打印日誌行 –

回答

0

只有當沒有無線連接時,似乎沒有辦法強制使用具有celltower的LocationManager來計算位置。 也許另一種方法是使用線程Poor Man GPS中提到的方法:手動計算知道CellId的位置。

僞代碼:

onLocationChanged(new_location) 
    if isConnected() 
     record(new_location) 
    else 
     cell_location = poorManGPS() 
     record(cell_location) 
    end 

的問題是當然,我不能沒有互聯網連接的查詢小區ID數據庫。我看到幾個解決方案:

  • 存儲當前的(和以前)小區ID時,我有互聯網,並希望我會留在這一個時候我不會有互聯網
  • 使用cell id database在手機上(但我認爲)呼籲每1分鐘需要root權限)
  • 商店進一步本地化
0

嘿使用GPS_PROVIDER代替NETWORK_PROVIDER按下面的代碼

locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 0, pll); 

NETWORK_PROVIDER會給你唯一的解決塔的位置和GPS會給你確切的改變位置

+0

但是,當GPS未啓用(大部分時間)時,我什麼也沒收到。 –

+0

你必須啓用全球定位系統或您的手機應直接聯繫衛星,以便您可以獲得全球定位系統的位置。只有GPS可以給你改變確切的位置... – Maneesh

+0

我的目標不是要有最好的位置估計,但是我怎麼才能知道我現在使用什麼可用的位置。如果我的手機被盜,我希望能夠找到+/-的位置,而不必向短信發送短信,「請打開GPS並出門」。 –

0

你有最近的GSM塔座標。

+0

75m的精確度?只有在GSM塔(在緩存中)時,谷歌地圖才能找到我平時的精確度爲1000米)。當我打開無線電時,位置變化(不是很多,但在每次更新時有所不同),但準確度相同。 –