Uygulamam geçerli konumu takip etmek için LocationListener kullanır. GPS Sağlayıcısı düzenli düzeltmeler sağladığı sürece, bu iyi çalışır. Ancak, düzeltmenin artık geçerli olmadığı için konumun artık güvenilir olmadığı durumlarda uygulamanızı uyarmasını istiyorum. Bu nedenle, her birkaç saniyede bir getLastKnownLocation çağırmak için bir timeCheckHandler kullandım.Android sorunu ne zaman son GPS düzeltmesi olduğunu bulma
Sorunum, doğru düzeltmeler alındığında bile, getTime() öğesini getLastKnownLocation tarafından döndürülen konuma uygulayarak döndürülen zaman genellikle System.currentTimeMillis() tarafından döndürülen saatten genellikle daha eskidir, genellikle yaklaşık 20 saniye sürer .
Düzeltme süresini (arg0.getTime()) ve geçerli saati (System.currentTimeMillis()) günlüğe kaydetmek için onLocationChanged (arg0) öğesine kod ekleyerek sorunu daha fazla araştırdım. Yine yaklaşık 20 saniye fark görüyorum.
aşağıdaki gibi Kod şu anda okur: Benim ayıklama dosyasına
public void onLocationChanged(Location arg0) {
mapview.handleLocationChanged(mapview, arg0.getLatitude(), arg0.getLongitude(), arg0.getBearing(), arg0.getAccuracy(), "GPS fix");
addDebugNote("Fix received at time: "+Long.toString(arg0.getTime()/1000)+" Now: "+Long.toString((System.currentTimeMillis())/1000));
}
ve tipik çıkış okur:
Fix received at time: 1292091908 Now: 1292091928
Neden düzeltme süresi ve mevcut sistemin zaman arasındaki bu farkı görmem gerektiğini ?
Yaklaşık 20 saniye farkın normal olduğunu kabul etmek zorunda mıyım?
Aynı sorunu yaşadım ve ekledim: 'arg0.setTime (System.currentTimeMillis()); 'timeLocationChanged (Location arg0)' ilk satırında zaman damgasını "düzeltmek" yöntemidir. Bunun herhangi bir yan etki yaratıp yaratmayacağından emin değilim. – ApollonDigital