2015-03-18 48 views
0

我想從BroadcastReceiver獲取位置。BroadcastReceiver中的locationManager

我在我的服務中有這個,它運作良好。

locationManager = (LocationManager) getBaseContext().getSystemService(LOCATION_SERVICE); 

但現在我想在BroadcastReceiver中使用它。我應該如何改變它?

回答

0

我想從BroadcastReceiver獲取位置。

這是不太可能的,除了getLastKnownLocation(),它可以很容易地返回null。對於其他任何事情,你需要一個長壽命的組件,一個可以堅持足夠長的時間來獲得定位。如果您想通過廣播找到位置觸發,那很好,但您可能需要Service來實際獲得位置修正並對其執行某些操作。

我有這個在我的服務,它運作良好。

請刪除電話getBaseContext()。你不需要它,我相當懷疑你知道它做了什麼。請致電getSystemService()本身Service

但是現在我想在BroadcastReceiver中使用它。我應該如何改變它?

如果你想調用getLastKnownLocation()LocationManager,您可以在Context調用getSystemService()。您通過Context傳入您的BroadcastReceiveronReceive()方法。

+0

我正在嘗試獲取GPS位置。我有我的代碼服務,它運作良好,但我想要得到我的位置,即使電話被鎖定,這就是爲什麼我選擇BroadcastReceiver。 – 2015-03-18 23:21:39

+0

@BohumilKulhanek:在設備被鎖定時獲取位置與您使用「BroadcastReceiver」或「Service」獲取位置修正無關。 – CommonsWare 2015-03-18 23:28:00