Как я могу отправлять всего два параметра на веб-сервер с использованием JSON через регулярные промежутки времени?

#java #android #xml #json

#java #Android #xml #json

Вопрос:

Приложение основано на отслеживании GPS, где координаты широты и долготы должны отправляться через регулярные промежутки времени. Сейчас мы вручную вводим координаты через DDMS. Отправка данных была довольно сложной задачей. Итак, у кого-нибудь из вас есть какие-то предложения?

Ответ №1:

Я думаю, вам нужно где-то хранить местоположение, поэтому создайте ApplicationController, который расширяет класс приложения с Android, и установите его в манифесте 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);-
}
  

Это может быть полезная ССЫЛКА

Ответ №2:

Вы должны реализовать класс LocationListener для прослушивания местоположения

 onLocationChanged(Location location) {

lat = location.getLatitude();
lon = location.getLongitude(0;
}
  

Теперь, когда вы получите широту и долготу, вам нужно будет отправлять их на сервер через регулярные промежутки времени.
Вы можете использовать службу для прослушивания информации о местоположении в фоновом режиме, и если вы получили onLocationChanged событие, установите http-соединение с вашим веб-сервисом и отправьте широту и долготу на сервер.