2011-10-04 9 views
5

Kullanıcı eylemi üzerine bir konum düzeltmesi almaya çalışan bir uygulamamız var. Hem GPS'te hem de ağda dinler ve dinlemenin ne zaman duracağını ve ne zaman geri dönüleceğini saptamak için zaman/doğruluk temelli bir karar matrisine sahiptir.Neden eski konum bilgisi döndüren locationmanager yeni gettime-timestamp ile gideriliyor?

Ara sıra, çok garip bir davranış olduğunu fark ettik. Böylece gibi düzeltmedir kaç yaşında görmek için klasik şekilde kullanabilirsiniz:

long age = now - newLocation.getTime(); 
if(age >= prefs.getLocationMaxAge()){ 
    Log.d(TAG, "location too old."); 
    return; 
} 

Ama bazen location.getTime belki 15-20 saniyelik bir yaş vardır OS döndü, dönen zaman damgasına göre, Her ne kadar kesin olduğunu söyleyebiliriz. Örneğin, boylam/enlem düzeltmesi el cihazının 30 dakika önce olduğu bir konumdan geliyorsa!

Hem Wi-Fi'den hem de ağdan, GPS'den değil gibi görünüyor. Bana göre bu tamamen çılgın. Bunu gören başka biri var mı?

Birkaç farklı telefondan aldık, en sonuncusu Samsung Galaxy S II.

Yardım oldukça hoş olurdu.

DÜZENLEME: Kesin bildiğim zaman gerçekten net olmak gerekirse, sorun, "onlocationchanged" geri arama saniye belki bir çiftin bir zaman damgası yaşla birlikte bir konuma sahip OS tarafından çağrılan olduğunu çok boylam/"yeni" düzeltmedeki enlem, telefonun en az 30 dakikadır bulunmadığı bir yerdir.

Bu yakışıklı o ...

cevap

0

Wi-Fi ve ağdan hem gerçekleşmesi gibi görünüyor nerede doğru belirlemek çok zor hale getirir, ancak GPS

Bu adil görünüyor Wi-Fi ve ağ hücresi tabanlı triangulasyonda doğruluk çok kötü olduğu için. Muhtemelen 30 dakika öncesine dayanan önbelleğe alınmış yerler kullanıyorlar. Hücre sitenizi değiştirmediyseniz veya başka bir binaya taşınmamışsanız, yeni APs keşfedilebilir, korkarım sadece önbelleğe alınmış konumlara sahip olursunuz. Taze yerler istiyorsanız GPS sağlayıcısını kullanın.

+1

Sanırım benim noktayı kaçırıyorsunuz. Önbelleğe alınmış konumlar, konumun zaman damgası bunu yansıtacaksa iyi olur. Ancak önbelleğe alınmış, eski bir düzeltme yaparak ve geçerli bir zaman damgası uygulamak çılgın. Daha net olmak için sorumu güncelleyeceğim. – Mathias

+0

Temizlediğiniz için teşekkürler; Buna göre [suçlu] (http://www.netmite.com/android/mydroid/frameworks/base/location/java/com/android/internal/location/LocationCollector.java) – Reno

+0

HI guyz'ı buldum Konumu uygun ama bu konumu kullanarak kaç yaşında bulmaya çalıştığımda - >> uzun yaş = System.currentTimeMillis() -location.getTime(); ve bu değere bağlı olarak, konumumun nasıl hesaplandığını hesaplıyorum ama sorun bazen negatif değer (yaş). nedenini anlayamıyorum çünkü o yaş asla negatif olmayacaktır – Anjan

İlgili konular