2011-05-10 64 views
0

如何在发送短信之前等待实际GPS位置?直接使用requestLocationUpdates向我发送一条消息,返回0.0作为经度和纬度,但GPS尚未能够获得正确的坐标。在发送消息前等待GPS定位

回答

0

与GPS供应商使用requestLocationUpdates并给予适当的接收器。

requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, myReceiver); 

然后在您的接收器中定义的onLocationChanged方法检查供应商是GPS还是更新时间。

希望这会有所帮助。

+0

更新时间该怎么办? – louieansonng 2011-05-10 09:47:37

+0

检查更新的时间相当近,这应该给你适当的GPS坐标。 – PravinCG 2011-05-10 09:55:07

+0

什么时候onLocationChanged被解雇?例如,如果一个人已经获得了初始坐标并突然移动到另一个地方,它会在卫星获取最新坐标之前还是之后发射? – louieansonng 2011-05-10 09:59:04

0

This可能会有所帮助,同时配合this

+0

我应该如何去实现这个?我正在使用LocationListener和一个LocationManager atm。 – louieansonng 2011-05-10 09:44:26

+0

创建一个新的GpsStatusListener。为GPS_EVENT_FIRST_FIX实现onGpsStatusChanged(),并且您将知道GPS定位何时完成。当然,如果GPS已经启用并且在应用程序启动之前已经修复,那么您还需要一些额外的代码来处理这种情况。 – Dan 2011-05-10 09:55:00

+0

获取第一次修复和后续修复的事件是否有所不同?我希望在接收修复程序后使用removeUpdates以节省电池寿命。 – louieansonng 2011-05-10 10:10:04

0

有两种方法。这取决于你的用例,它更适合你。

  1. 我个人使用LocationManager#requestLocationUpdates。然后调用我的活动中的回调。

  2. 但是,接收最近的位置可能需要一段时间。如果需要立即位置,则可以使用getLastKnownLocation方法。

+0

我也在使用requestLocationUpdate,但是,它不会等待最近的位置并将初始值回退,即0.0。 – louieansonng 2011-05-10 09:50:50

+0

@louieansonng requestLocationUpdate返回0,0可能是特定于您的手机型号的错误,或者您在使用模拟器吗? – geekQ 2011-05-13 08:39:46

+0

我目前正在使用LG Optimus p500作为测试设备 – louieansonng 2011-05-13 09:13:43