2017-12-20 224 views
10

Aralıklı ve Deplasman tabanlı güncellemeler için GoogleApiClient kullanarak arka plan konum güncellemeleri üzerinde çalışıyorum ve test ediyorum. Birkaç gün boyunca test etme ve analiz etme konusunda, beklemediğim çıktıda bazı farklılıklar buldum.Arka plan Konum güncellemeleri Google API kullanarak - Sigortalı Konum Sağlayıcısı doğru değil

  1. Aralığı tabanlı güncellemeler için setInterval ve setFastestInterval kullanırken, ben 15 dakika ve En Hızlı Aralığıolarak 10 dakika, ben güncellemeleri alıyorum zamanın% 90 gibi bir Aralığı belirledik demek beklenen Aralık (10 ila 15 dakika). Ancak bazen, güncellemelerin belirtilen Aralık süresinden çok daha uzun sürdüğünü fark ettim, fark yaklaşık 30 dakika ve 60 dakika. Neden olduğuna dair bir fikrin farkı nedir?

  2. Mesafe bazlı güncellemeler için setMinimumDisplacement kullanırken, sadece sabit noktalarda (on 200 metre, ben güncellemeleri alıyorum gibi bir Deplasman belirledik söylerlerken o bile güncellemeleri vermez yolculuk 200 metre ve üzeri olan 200 metreden fazladır. Bu normal şekilde mi çalışıyor? Arka planda konum güncellemelerini BroadcastReceiver konum güncellemelerini almak amacıyla

Ben konum isteklerinin PendingIntent türünü kullanıyorum. HIGH_ACCURACY

fusedLocationProviderClient.requestLocationUpdates(locationRequest, pendingIntent); 

test ederken, Konum Hizmetleri ve Yer Modu AÇIK idi.

+1

Normal davranışları söyleyemiyorum ama sizinkilerle benzer sorunları gördüm. Muhakkak ki cevap, @Mitesh Vanaliya'nın belgelerden alıntı yaptığı şeydir, ** Tüm konum talepleri ipucu kabul edilir ve daha az/çok doğru olan ve talep edilenden daha hızlı/daha yavaş olan yerler alabilirsiniz. Ya da, "Bize ne istediğinizi söyleyebilirsiniz, ve biz bazen bunu yapacağız, ama sonunda ne yapacağımızı ve ne zaman yapacağız" " – Gary99

+0

Google'ın önerdiği" FusedLocationApi "yi kullanmak istemiyorsanız, Kendiniz için daha fazla kontrol elde etmek için eski LocationManager'ı kullanabilir. [Here] (https://developer.android.com/guide/topics/location/strategies.html) bunun nasıl yapılacağı hakkında bazı bilgiler. – Gary99

+0

“LocationListener” için gitmek istemedim çünkü uygulama sonlandırıldığında sonlandırılacak. Uygulama sonlandırılsa bile yer güncellemelerini almak istiyorum, bu yüzden de "FusedLocationProviderClient" adlı kullanıcının requestLocationUpdates'inin "PendingIntent" sürümü için gittim. _setInterval_ konumundaki konumlar _setMinimumDisplacement_'a göre daha doğru olduğundan, 'setInterval'tan aldığım güncellemeler' setMinimumDisplacement''dan çok daha iyi. – Joshua

cevap