GPS位置未在服务器onLocationChange中更新

时间:2015-02-03 06:14:24

标签: android gps

在GPS管理器中,我在日志中每分钟都会获得位置更新。

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,60000,0, this);

这条线就行了。

LOG:

02-03 11:32:33.045    6217-6217/com.example.mylocation E/onLocationChanged﹕ 17.3732643
02-03 11:32:33.045    6217-6217/com.example.mylocation E/onLocationChanged﹕ 78.5046052
02-03 11:33:33.245    6217-6217/com.example.mylocation E/onLocationChanged﹕ 17.3732721
02-03 11:33:33.245    6217-6217/com.example.mylocation E/onLocationChanged﹕ 78.5046024
02-03 11:34:33.315    6217-6217/com.example.mylocation E/onLocationChanged﹕ 17.3732627
02-03 11:34:33.315    6217-6217/com.example.mylocation E/onLocationChanged﹕ 78.5046052
02-03 11:35:33.215    6217-6217/com.example.mylocation E/onLocationChanged﹕ 17.3732669
02-03 11:35:33.215    6217-6217/com.example.mylocation E/onLocationChanged﹕ 78.5046055
02-03 11:36:33.145    6217-6217/com.example.mylocation E/onLocationChanged﹕ 17.3732575
02-03 11:36:33.145    6217-6217/com.example.mylocation E/onLocationChanged﹕ 78.504606

如何在我的数据库中更新此信息。

此服务在单击按钮时启动,因此,我实现了Assectask,其中http调用将数据发送到数据库

这只发生一次,数据仅在数据库中输入一次,即按下按钮时,每当调用onLocationChanged()时更新数据未发送到数据库

 public void onLocationChanged(Location location)
    {
        latitude = location.getLatitude();
        longitude = location.getLongitude();
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,60000,0, this);

        Log.e("onLocationChanged",Double.toString(latitude));
        Log.e("onLocationChanged", Double.toString(longitude));

    }

请帮助解决这个问题

2 个答案:

答案 0 :(得分:1)

您的服务从按钮点击开始,并且您在代码中提到的每一分钟都会收到位置更新,但asynctask也会在按钮单击时启动并将数据发送到服务器,它完成工作并结束,它确实不能重新开始,所以要将每次更新的数据发送到服务器,请在onLocationChanged(Location location)这样的方法中实现asynctask

public void onLocationChanged(Location location)
{
    latitude = location.getLatitude();
    longitude = location.getLongitude();
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,60000,0, this);

    Log.e("onLocationChanged",Double.toString(latitude));
    Log.e("onLocationChanged", Double.toString(longitude));
    new yourAsynctask(parameters).execute();

}

答案 1 :(得分:0)

@kevz没有你的帮助是不可能的......谢谢你太多了..

答案如下:

步骤1 ::将AsyncTask移至GpsTracker类

第2步::在MainActivity中启动服务

Intent intent = new Intent(MainActivity.this, GPSTracker.class);
startService(intent);

第3步::在GPSTracker.java中使用onStartCommand

  @Override
    public int onStartCommand(Intent intent, int flags, int startId)
    {
        getLocation();
        return START_STICKY;
    }

这并不像在这看起来那么简单......最终......已完成..