2014-12-05 24 views
11

Benim app sürekli konum için talep ve her zaman bir arka plan hizmeti olmalıdır.Pil de göz önünde bulundurarak arka planda tekrar tekrar konum almak için Android en iyi yolu

Her iki dakikada bir böyle olmasını istiyorum. Bir Hizmeti kullanmanın düşünce ve onStartCommand i locationmanager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MINIMUM_TIME_INTERVAL, MINIMUM_DISTANCE, this); yanı sıra locationmanager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MINIMUM_TIME_INTERVAL, MINIMUM_DISTANCE, this);

kullanmak Ama zaman bu requestLocationUpdates bana konumu vererek durur gider korkarım. Bu yüzden AlarmManager kullanmayı düşündüm, bu yüzden bana yer vermeye devam ediyor.

Sorum şu ki, AlarmManager numaralı telefonu kullanmamayı hatırlatmak ya da AlarmManager numaralı telefonu kullanıyorum.

Sadece arka planda konum almak için en iyi yaklaşımı bilmek istedim. Şimdiden teşekkürler.

cevap

3

Bunun için neden bir hizmet kullanmak istersiniz? Benim için hizmetsiz çalışıyor.

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 5, this); 

dinleme başlatmak için ben locationUpdates durdurmak istemiyorum çünkü bu yaklaşım kullanıyorum ama bu yöntemi kullanabilirsiniz:

public void startListening(){ 
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 5, this); 
} 
Ben LocationListener uygular ve onun kurucu bu hattı vardır GPSlistener denilen sınıf var

ve sonra bu durdurmak için dinleme:

public void stopListening(){ 
    locationManager.removeUpdates(this) 
} 

Sen yüksek minTime veya minDistance ayarlayarak pil tasarrufu yapabilirsiniz. MinDistance'ın sizin için daha uygun olması gerektiğine inanıyorum. Bu

locationManager.requestLocationUpdates(LocationManager.GPS_Provider, 5000, 10, this)

En ayarı gibi diyoruz sonra konum sadece her 10 metre güncellemek istiyorsanız örneğin Yani uygulamanızda bağlıdır. Örneğin, bisiklet için bir GPS navigasyonu oluşturmak istiyorsanız, maksimum 5m'den sonra konum güncellemesini kullanmalısınız. Diğer tarafta ise yürüyüş gibi bazı "yavaş" aktiviteler için uygulama yapıyorsanız 10 veya 15 metrelik yeterli olacaktır.

LocationManager'ın konum güncellemeleri göndermeyi durdurması gerektiğini düşünmüyorum ve ayrıca bu sorunu uygulamanızda da yoktu.

Bu yaklaşımı kullanarak, GPS'i hizmetten yararlanmadan arka planda çalıştırıyorum. Ama gerçek şu ki, uygulamam yalnızca bir etkinlik ve 3 parçadan oluşuyor, bu yüzden servisi kullanmam gerekmiyor.

+0

Uygulama, arka planda çalışmıyor olsa bile, konum alabilmem için hizmet gerekiyor. Bu yüzden servisi kullanarak bana yardımcı oluyor. – Nav

+0

Eh, requestLocationUpdates'in hizmete başladığına inanıyorum, bu yüzden bunun için kendi hizmetinizi başlatmanız gerektiğini düşünmüyorum. Sorununuz, requestLocationUpdates'in kısa bir süre sonra konum göndermeyi durdurması mı? Bunu doğru şekilde mi alıyorum? – horin

+0

Ya. Herhangi bir zaman içinde durmamalı. – Nav

0

en iyi yol dinlemek için. Sigortalı konum API'si, uygulamanıza en uygun konumu sağlamak için ihtiyacınız olan tüm konum sağlayıcılarını ve konum doğruluğunu hesaba katar.

Geofencing API'ları (kullanıcı belirli bir alana girdiğinde/çıkardığında uygulamanızı bilgilendirir) ve etkinlik tanıma API'ları (kullanıcı yürüyor mu? Çalışıyor mu? Sürüş mü?) Pil tasarrufu ve iyileştirme konusunda çok yardımcı olabilir doğruluk.

Elbette, bu kullanıcının Google Play Uygulamasının güncellenmiş bir sürümüne sahip olmasını gerektirir, ancak bu çok endişelenmemelidir.

+2

Aslında Google tarafından lisansı olmayan cihazlar ile ilgili bir sorun. Kindle Fires'in Google Play'i yok, ne de özel bir ROM veya küçük Asya OEM'leri olan bir şey yok. Tabii ki korsanlık yapmadıkça. –

+0

Bu durumda, sadece google oyun hizmetleri mevcut değilse, sadece androids konum yöneticisi için varsayılan. –