[英]How can i send just two parameters to a web server using JSON at regular intervals?
该应用程序基于GPS跟踪,其中必须定期发送纬度和经度坐标。 目前,我们正在通过DDMS手动输入坐标。 发送数据是一个很大的问题。 那么,你们有什么建议吗?
您必须实现locationListener类来侦听位置
onLocationChanged(Location location) {
lat = location.getLatitude();
lon = location.getLongitude(0;
}
现在,当您获得纬度和经度时,必须定期将其发送到服务器。 您可以使用该服务从后台监听位置信息,如果遇到onLocationChanged
事件,请建立与Web服务的http连接,然后将纬度和经度发布到服务器。
我认为您必须将位置存储在某个位置,因此创建ApplicationController来从android扩展Application类,并将其设置在android清单中,在AC中创建位置Location,并在onLocationChanged(Location location)中创建函数,该函数将在AC中保存新位置,而不是通过频率使TimerTask它应该多久从AC获取一次位置并将其发送到您想要的任何地方。
只要应用程序在该类中处于“活动”状态,ApplicationController就会保留所有信息,您还必须创建访问器;)下面的示例代码:
ApplicationController.java
import android.app.Application;
import android.location.Location;
public class ApplicationController extends Application{
private Location location = null;
@Override
public void onCreate() {
super.onCreate();
}
public void setLocation(Location location){
this.location = location;
}
public Location getLocation(){
return location;
}
}
android清单中的条目:
<application
android:label="@string/app_name"
android:allowClearUserData="false" android:name="core.ApplicationController"
android:icon="@drawable/driving">
示例在代码中的用法:
AC = (ApplicationController) getApplicationContext();
private void initializeGpsTask(long frequency){
gpsTask = new TimerTask() {
@Override
public void run() {
Log.i(TAG, "GPS TASK");
if(AC.getLocation()!=null){
insertIntoDatabase(transactions.generateRequest(
AC.getLocation()));
}
}
};
Timer timer = new Timer();
timer.schedule(gpsTask, frequency, frequency);-
}
LINK可能会有所帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.