繁体   English   中英

如何定期使用JSON仅将两个参数发送到Web服务器?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM