Ich habe eine App, wo es durch eine Datei von Zahlen liest. Ein Schwellenwert ist vordefiniert und jede Zahl in der Datei wird einzeln mit dem Schwellenwert verglichen. Wenn die gelesene Zahl größer als der Schwellenwert ist, zeigen Sie eine Warnung mit einer Schaltfläche an. Wenn die Taste 2 Minuten lang nicht gedrückt wird, senden Sie eine SMS-Nachricht. Und wenn die Taste immer noch nicht für weitere zwei Minuten gedrückt wird, dann rufen Sie an.Toast-Nachricht anzeigen und eine Aktion ausführen Wenn eine bestimmte Zeitspanne abgelaufen ist
Das Bit, mit dem ich kämpfe, ist die Berechnung der verstrichenen Zeit und die Auslösung einer der beiden oben genannten Methoden, nachdem eine bestimmte Zeit verstrichen ist. Wie man es definiert und wo. Ich habe viele Beispiele mit Handlern, Timern und Runnable-Methode gesehen, die sie ohne Erfolg versucht haben. Wenn ich die App starte, passiert nichts.
Hier ist mein Code soweit, würde mich über Anregungen oder Ideen freuen.
Mit Handler
private static final int MISS_LIMIT = 1000;
int misses = 0;
final Handler handler = new Handler();
final Runnable timer = new Runnable() {
@Override
public void run()
{
handler.postDelayed(timer, MISS_LIMIT);
// user too late: increment miss counter
if (++misses >= MISS_LIMIT)
{
//TODO miss limit reached
Toast.makeText(MainActivity.this, "Time is passed", Toast.LENGTH_SHORT).show();
finish(); // close this activity
}
}
};
Und den Rest des Codes:
int Threshold = 40;
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
File dir = Environment.getExternalStorageDirectory();
File file = new File(dir, "/Numbers.txt");
try
{
FileInputStream fin = new FileInputStream(file);
if (fin != null)
{
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fin));
String line ="";
while((line= bufferedReader.readLine()) != null)
{
if (Integer.parseInt(line) > Threshold)
{
//store value in integer
int number = Integer.parseInt(line);
// create alert dialog
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder
.setTitle("Alert !!")
.setMessage("High Temperature !!" + "\t" + number)
.setPositiveButton("Send SMS",new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog,int id)
{
// if this button is clicked, close current activity
MainActivity.this.finish();
}
});
AlertDialog alertDialog = builder.create();
alertDialog.getWindow().setBackgroundDrawableResource(android.R.color.holo_red_light);
alertDialog.show();
}
}
fin.close();
Ich würde einen Blick [hier] berufen sich (http://developer.android.com/reference/java/util/concurrent/ScheduledExecutorService.html). – Mena
Nehmen Sie ein boolesches Flag und klicken Sie auf "OK". Nach dem Anzeigen des Dialogs können Sie zwei 'Handler.postDelayed()' Methoden aufrufen, eine für SMS und eine für Anrufe mit verschiedenen Verzögerungen. Überprüfen Sie in beiden 'Runnables', ob das boolesche Flag wahr oder falsch ist, ob TRUE, dann senden Sie SMS oder rufen Sie sonst nichts auf. –