Per inviare il messaggio e' previsto che l'utente prema un pulsante, grande quanto lo schermo
E' necessario pero' evitare falsi allarmi quindi il pulsante deve essere tenuto premuto per un determinato tempo (diciamo 1 secondo) e quindi non si puo' generare l'evento sull'onclick ma si deve fare in modo di calcolare la differenza di tempo tra l'evento onclick ed onrelease
Di seguito il codice per gestire questo problema
---------------------------------------------------------------
package com.test.onrelease;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.view.*;
import android.view.View.OnTouchListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button pulsante;
long lastDown;
long lastDuration;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pulsante = (Button) findViewById(R.id.button1);
pulsante.setText("Premere il pulsante per almeno 1 secondo");
pulsante.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN) {
lastDown = System.currentTimeMillis();
} else if (event.getAction() == MotionEvent.ACTION_UP) {
lastDuration = System.currentTimeMillis() - lastDown;
if (lastDuration > 1000)
{
pulsante.setBackgroundColor(Color.GREEN);
pulsante.setText("Richiesta accettata. Invio in corso");
}
else
{
pulsante.setBackgroundColor(Color.RED);
pulsante.setText("Premere il pulsante per almeno 1 secondo");
}
}
return false;
}
});
}
---------------------------------------------------------------
Nessun commento:
Posta un commento