我想每分钟跟踪我的位置。为此,我使用locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60000, 0, pll);
这是我的手机空闲时的日志。
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 :(得分:0)
嗨使用GPS_PROVIDER而不是NETWORK_PROVIDER,如下面的代码
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 0, pll);
NETWORK_PROVIDER只会为您提供固定塔位置,而gps会为您提供准确的更改位置
答案 1 :(得分:0)
你有最近的GSM塔坐标。
答案 2 :(得分:0)
只有在没有无线连接的情况下,似乎没有办法强制使用带有小区的LocationManager来计算位置。 也许另一种方法是使用线程Poor Man GPS中提到的方法:手动计算知道CellId的位置。
伪代码:
onLocationChanged(new_location)
if isConnected()
record(new_location)
else
cell_location = poorManGPS()
record(cell_location)
end
问题当然是我无法在没有互联网连接的情况下查询cell-id数据库。我看到了几个解决方案: