2015-03-18 64 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