My application writes all position information within the field-based table. This table has a column named "SENT".
I have to do a select returning all the positions that were not sent and send to a webserver, after sending and the result is OK, I need to set the flag to TRUE, sent.
I have 2 problems.
1 - Using the volley, it sends only the last position, because when I do:
for (DadosPosicao dadosposicao : dadosposicoes) {
params.put(Constantes.KEY_DISPOSITIVO, app.getSistema().getDispositivoID());
params.put(Constantes.KEY_LATITUDE, String.valueOf(dadosposicao.getLatitude()));
params.put(Constantes.KEY_LONGITUDE, String.valueOf(dadosposicao.getLatitude()));
params.put(Constantes.KEY_DTLOG, Funcoes.formatarDataHora(dadosposicao.getDtlog(), "yyyy-MM-dd HH:mm:ss"));
params.put(Constantes.KEY_DTRECEBIMENTO, Funcoes.formatarDataHora(dadosposicao.getDtRecebimento(), "yyyy-MM-dd HH:mm:ss"));
params.put(Constantes.KEY_PANICO, String.valueOf(dadosposicao.getPanico() ? 1 : 0));
params.put(Constantes.KEY_VELOCIDADE, String.valueOf(dadosposicao.getVelocidade()));
params.put(Constantes.KEY_HODOMETRO, String.valueOf(dadosposicao.getHodometro()));
params.put(Constantes.KEY_DIRECAO, String.valueOf(dadosposicao.getDirecao()));
}
I understand that it overlaps my KEY. :
2 - How do I know that position was successfully sent to change the flag to true?
Today I have the following:
public void EnviarPosicoes() {
if (isOnline()) {
LocalDao<DadosPosicao> dadosPosicaoDao = LocalFactoryDB.getDao(this, DadosPosicao.class);
final List<DadosPosicao> dadosposicoes = ((DadosPosicaoLocalDao) (dadosPosicaoDao))
.selectDadosPosicaoNaoEnviados();
if (dadosposicoes.size() > 0) {
StringRequest postRequest = new StringRequest(Request.Method.POST, servidor,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.i("mrcsistemas", response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
}
) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
Log.i(Constantes.TAG, app.getSistema().getDispositivoID());
for (DadosPosicao dadosposicao : dadosposicoes) {
params.put(Constantes.KEY_DISPOSITIVO, app.getSistema().getDispositivoID());
params.put(Constantes.KEY_LATITUDE, String.valueOf(dadosposicao.getLatitude()));
params.put(Constantes.KEY_LONGITUDE, String.valueOf(dadosposicao.getLatitude()));
params.put(Constantes.KEY_DTLOG, Funcoes.formatarDataHora(dadosposicao.getDtlog(), "yyyy-MM-dd HH:mm:ss"));
params.put(Constantes.KEY_DTRECEBIMENTO, Funcoes.formatarDataHora(dadosposicao.getDtRecebimento(), "yyyy-MM-dd HH:mm:ss"));
params.put(Constantes.KEY_PANICO, String.valueOf(dadosposicao.getPanico() ? 1 : 0));
params.put(Constantes.KEY_VELOCIDADE, String.valueOf(dadosposicao.getVelocidade()));
params.put(Constantes.KEY_HODOMETRO, String.valueOf(dadosposicao.getHodometro()));
params.put(Constantes.KEY_DIRECAO, String.valueOf(dadosposicao.getDirecao()));
}
return params;
}
};
Volley.newRequestQueue(this).add(postRequest);
}
}
}
My question, what is the correct way to send my list of approximately 10 positions? How do I know the position was sent successfully?