在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));
}
请帮助解决这个问题
答案 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;
}
这并不像在这看起来那么简单......最终......已完成..