2011-03-09 21 views
13

BroadcastReceiver'ın metin, telefon olayları vb. Izlediğini biliyorum, ancak LocationServices'ı Konum tabanlı hizmet ve olay olarak çalıştırabilir misiniz? Örneğin, belirli bir GPS noktasına yakınsınız ve telefon sizi uyarır.BroadcastReceiver konum için

+1

sen http://developer.android.com/reference/android/location/LocationListener.html – schwiz

cevap

31

Bence aradığınız şey bunun gibi bir şey. Bir parametre olarak PendingIntent alır ve bu amaç bir BroadcastReceiver'u tetiklemek için kullanılabilir LocationManager.requestLocationUpdates() bir sürümü vardır. Bu kod, yer güncellemeleriyle birlikte ateş etmek için özel bir yayın kaydeder.

Intent intent = new Intent("UNIQUE_BROADCAST_ACTION_STRING_HERE"); 
LocationManager manager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE); 
long minTime;  //This should probably be fairly long 
float minDistance; //This should probably be fairly big 
String provider; //GPS_PROVIDER or NETWORK_PROVIDER 

PendingIntent launchIntent = PendingIntent.getBroadcast(context, 0, intent, 0); 
manager.requestLocationUpdates(provider, minTime, minDistance, launchIntent); 

Sonra sadece aynı Niyet eylem ile BroadcastReceiver kayıt var ve bu işlem için konum güncellemeleri alacaktır. Ve elbette, PendingIntent'u bir noktada saklayın, çünkü bir noktada manager.removeUpdates(launchIntent)'u aramanız gerekecek!

Son Not: Eğer uygulama ön planda değilken düzenli konum güncellemelerini uygulamak için çalışıyoruz gibi geliyor çünkü

, bu akılda tutmak. Uygulamanızı bir pil katil olarak işaretlemediğiniz sürece, bu işlevi nasıl uyguladığınıza çok dikkat edin.

Konum hizmetinin dinlenmesini sağlamak için, sık konum güncellemelerini büyük bir minTime veya minDistance parametresiyle büyük ölçüde azaltmak isteyeceksiniz. Bu özellik, kullanıcı kontrollü bir tercihe eklenmelidir. Böylece, uygulamanızı arka planda izleme konumlarından etkinleştirebilir/devre dışı bırakabilirler.

Bu yardımcı olur umarım!

+0

gitmek Kablosuz-Tasarımlar @, bir mücevher gibidir: Sen aşağıda daha ayrıntılı olarak öğrenebilirsiniz Durumun böyle olduğunu düşündüm, hala Droid için INTENT'i öğreniyorum, yanıt çok bilgilendirici - zaman ayırdığınız için teşekkürler efendim! – ProNeticas

+0

Sorun değil. Eğer bu cevap probleminizi çözüyorsa, kabul etmekte özgürsünüz. Şerefe! – Devunwired

+0

Ben ilk önce test etmek istedim;) – ProNeticas

İlgili konular