2016-01-27 14 views
6

Periyodik konum güncellemeleri almak için Smart Location Library numaralı telefonu kullanmaya çalışıyorum. Ancak süreci başlattığınızda dinleyiciyi bir kez ateşler, daha sonra başka güncelleme olmaz. İşte ben Akıllı Konum Kitaplığı'nı kullanırken karşılaşılan sorunlar

public void startTracking(View v) { 
    provider = new LocationGooglePlayServicesWithFallbackProvider(this); 


    Log.i("Tag","Start Tracking"); 
    SmartLocation smartLocation = new SmartLocation.Builder(this) 
      .logging(true) 
      .build(); 

    smartLocation.location(provider) 
      .config(LocationParams.BEST_EFFORT) 
      .start(this); 
    smartLocation.activity().start(this); 
} 

public void stopTracking(View v) { 
    Log.i("Tag","Stop Tracking"); 
    SmartLocation.with(this).location().stop(); 
    SmartLocation.with(this).activity().stop(); 

} 

@Override 
public void onActivityUpdated(DetectedActivity detectedActivity) 
{ 
    Log.i("Tag","ActivityUpdate : "+detectedActivity.toString()); 
} 

@Override 
public void onLocationUpdated(Location location) 
{ 
    Log.i("Tag","LocationUpdate : "+location.getLatitude()+","+location.getLongitude()); 
} 

Bu

kullanılan kod, Sonra artık değerler i StartButton basın taktirde bu otomatik verilir ben

01-27 14:09:01.791 3038-3038/com.angulusits.smartlocationtest I/Tag: 
Start Tracking 

01-27 14:09:01.879 3038-3038/com.angulusits.smartlocationtest I/Tag: 
ActivityUpdate : DetectedActivity [type=STILL, confidence=100] 

01-27 14:09:02.017 3038-3038/com.angulusits.smartlocationtest I/Tag: 
LocationUpdate : <some-value>,<some-value> 

var Logcat çıkıştır.

public static final LocationParams BEST_EFFORT = new Builder().setAccuracy(LocationAccuracy.MEDIUM).setDistance(150).setInterval(2500).build(); 

Yani cihaz hareketli olmasa bile güncellemeleri her 2500 mili saniye beklenen:

I BEST_EFFORT değeri için Kitaplığı kodunu kontrol etti. Eğer birisi beni doğru yönde gösterebilirse sevinirim.

+0

Ben de aynı sorunu yaşıyorum. onLocationUpdated, başlatmayı başlattığımda ancak bundan sonra hiçbir güncelleme yapılmadığında bir kez çağırıyor. herhangi bir cevap için teşekkürler – kiruba

cevap

-1

GoogleFuse API kullanımı çok daha iyidir. Here, bu Api'nin tam dokümantasyonudır. Konum izleme için Github kütüphanesini kullanmaktan çok daha iyidir.

+0

Nedenini açıklamak için bakım? Kütüphane, Android Location Fused Sağlayıcısı ve gerekirse diğer bazı sağlayıcılar gibi görünüyor. –

+0

@IvoPereira .. Akıllı konum kütüphanesi konum değişikliğindeki değişikliklerin üstesinden gelmek için değiştirilebilir .. Özetlenmiş kütüphaneyi kullanan bir yeni kullanıcı için tavsiye edilmemelidir ... smartv konum kütüphanesi de ihtiyaç duyulmayan etkinlik tanıma vb. Gibi adisyon özelliklerine sahiptir. ve apk büyük yapar ... Ben soyut kütüphane kullanmaya karşı değilim ama ne zaman bizim kaynak oluşturmak ve diğer kaynakların oluşturulduğu kaynak kullanarak gelince ... kaynak ilk öğrenmek ve daha sonra bu tür kütüphaneleri kullanmak çok daha iyi. –

12

Yer dinleyici oluşturulurken continuous() söylemek gerekir. Aşağıda bu kod parçacığını,

private void startLocationListener() { 

    long mLocTrackingInterval = 1000 * 5; // 5 sec 
    float trackingDistance = 0; 
    LocationAccuracy trackingAccuracy = LocationAccuracy.HIGH; 

    LocationParams.Builder builder = new LocationParams.Builder() 
      .setAccuracy(trackingAccuracy) 
      .setDistance(trackingDistance) 
      .setInterval(mLocTrackingInterval); 

    SmartLocation.with(this) 
      .location() 
      .continuous() 
      .config(builder.build()) 
      .start(new OnLocationUpdatedListener() { 
       @Override 
       public void onLocationUpdated(Location location) { 
        processLocation(location); 
       } 
      }); 
} 

Onun geç cevap deneyin ! Her neyse bu birisine yardım ederdi.

İlgili konular