我知道BroadcastReceiver手錶的文本,電話事件等......但你可以運行LocationServices作爲基於位置的服務和事件嗎?BroadcastReceiver的位置
例如,您接近某個GPS點並且電話會通知您。
我知道BroadcastReceiver手錶的文本,電話事件等......但你可以運行LocationServices作爲基於位置的服務和事件嗎?BroadcastReceiver的位置
例如,您接近某個GPS點並且電話會通知您。
我認爲你在找什麼是這樣的。有一個版本LocationManager.requestLocationUpdates()
需要PendingIntent
作爲參數,並且這個意圖可以用來觸發BroadcastReceiver
。此代碼將註冊一個自定義廣播,並與位置更新一起啓動。
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);
然後你只需要註冊BroadcastReceiver
具有相同意圖的動作,它會接收處理的位置更新。當然,請保持PendingIntent
,因爲您需要在某個時候致電manager.removeUpdates(launchIntent)
!
最後請注意:
因爲它聽起來像你想實現定期位置更新,而您的應用程序是不是在前臺,這記在心上。除非你希望你的應用被稱爲電池殺手,否則要非常小心你如何實現這個功能。
您將希望通過大minTime或minDistance參數大大減少位置更新的頻率,以允許位置服務休息。此功能還應附加到用戶控制的偏好,以便他們可以啓用/禁用您的應用程序以跟蹤後臺中的位置。
希望有助於!
@無線的設計,你是一個寶石,我認爲是這樣,我仍然在學習有關Droid的INTENT,你的回答非常豐富 - 感謝你的時間先生! – ProNeticas 2011-03-09 05:09:12
沒問題。如果這個答案最終解決了你的問題,隨時接受它。乾杯! – Devunwired 2011-03-09 05:51:13
我會的,我想先測試;) – ProNeticas 2011-03-09 06:50:33
這個問題已經超過2年了,但現在有非常簡單和節省電池的方法來做到這一點。這個概念被稱爲地理柵欄。您可以更詳細地瞭解它下面:
http://developer.android.com/training/location/geofencing.html
在這裏你去http://developer.android.com/reference/android/location/LocationListener.html – schwiz 2011-03-09 02:34:39