Attualmente sto lavorando a un'applicazione Android che trasmette la posizione del dispositivo ogni 5 secondi.
Pseudo che mostra la procedura corrente dell'app:
deviceLocation = getLocation()
if (hasChanged(deviceLocation)) {
putRequestWithLocation();
} else {
// Send heartbeat so we at least know device is still connected
putRequestEmpty();
}
Questo è l'effettivo codice Java utilizzato per inviare la richiesta put:
// The data variable is a comma separated string, e.g:
// 50.343423,-1.349545,1 (lat, lon, vehicleid)
try {
URL url = new URL(apiEndpoint);
HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
httpCon.setDoOutput(true);
httpCon.setRequestMethod("PUT");
OutputStreamWriter out = new OutputStreamWriter(httpCon.getOutputStream());
out.write(data);
out.close();
httpCon.getInputStream();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
La mia domanda è duplice:
1) Si possono fare ottimizzazioni alla richiesta HTTP PUT sopra descritta per ridurre le dimensioni del pacchetto e quindi ottimizzare l'utilizzo della rete?
2) Una connessione socket sarebbe un'idea migliore in base alla frequenza con cui inviamo i dati del veicolo?
Grazie in anticipo!