正确发送GPS坐标数据

时间:2014-02-21 10:08:00

标签: android localization gps

基本上我的问题是: 我正在尝试制作某种GPS应用程序,其中我想将用户所在位置的坐标(经度纬度)发送到服务器。它到目前为止运作良好,但我遇到了问题。我想在sendDataToserver()收到坐标后定期调用我的GPS方法(每5秒左右 - BTW这是正常工作的)方法。但问题是我无法弄清楚如何制作......(如果声明或其他东西)......只有在接收/更改坐标后才调用sendDataToserver()方法。我现在正在使用if语句:

if(lat != 0 && long !=0)
{
   sendDataToserver();
}

但是......因为你可能已经猜到了0.0是一个有效的坐标......那么你能不能给我一个如何解决这个问题的想法,这样就可以每5秒左右调用一次sendDataToserver()已收到坐标?

3 个答案:

答案 0 :(得分:0)

首先再次发送GPS数据&再次访问websever并不是一个好主意。这会很快干掉你的电池。为了避免这种情况,您应该创建一个10-20点的批处理以Json格式收集,然后将收集的数据发送到收集。

现在转到GPS点,您需要使用GpsStateListener。当您的设备找到GPS点时,此侦听器返回GPS_EVENT_FIRST_FIX。因此,您可以编写一个条件,只要Gps State Listener返回此值,您就可以调用您的Web服务调用。

final Listener onGpsStatusChange = new GpsStatus.Listener() {

    @Override
    public void onGpsStatusChanged(int event) {
        // TODO Auto-generated method stub
        switch(event){
        case GpsStatus.GPS_EVENT_STARTED:
        // Started...
        break ;
        case GpsStatus.GPS_EVENT_FIRST_FIX:
        // First Fix...
        break ;
        case GpsStatus.GPS_EVENT_STOPPED:
        // Stopped...
        break ;
        }
    }
};

答案 1 :(得分:0)

首先:不要使用long作为变量Name。

如何在临时变量中保存最后一个坐标,如:

if(lastLat != newLat && lastLong != newLong) // code goes here

答案 2 :(得分:0)

这可能会解决您的问题:

unsigned long GPS_WAIT=5000;
curr_time= millis();
if(curr_time>=GPS_WAIT)
{
sendDataToserver();curr_time=0;
}else
{
curr_time= millis();
}