/ / Was für Echtzeitdaten zu verwenden? - Android, Dienst, Timertask

Was für Echtzeitdaten verwenden? - Android, Dienst, Timertask

Ich baue eine App, in der ich mit dem SoundMeter die Lautstärke überwachen möchte. Sehen Verknüpfung.

Aber was? getMaxAmplitude() does gibt den Amplitudenwert nur beim Aufruf zurück.

Jetzt muss ich den Wert nur noch konstant in Echtzeit (vielleicht ein bisschen dealy. Max 1s) und zeige es in einer Textansicht. Aber ich bin verwirrt, wie man die Methode richtig nennt. Sollte ich es benutzen :

  1. Timer-Aufgabe
  2. Asynktask mit Timer
  3. Service oder IntentService
  4. Alarmmanager

Und bitte erwähnen Sie auch, wie Sie die Methode aufrufen.

Bitte beachten Sie, dass die Datenerfassung sehr lange dauern kann. Ich möchte also die Batterie nicht ablassen.

Antworten:

2 für die Antwort № 1

Der AlarmManager muss streng eingeschränkt werdenmit einer Verzögerung von mindestens 15 Sekunden. Das kommt also nicht in Frage. Die Verwendung eines Dienstes für einen solchen Job scheint für das Telefon ziemlich mühsam und insgesamt unangemessen, wenn man bedenkt, dass wir schnelle Ergebnisse benötigen. Die Zeitgeberaufgabe wird normalerweise für Zeitüberschreitungen verwendet, d. H. Für größere Verzögerungswerte. Dies lässt uns mit Asynctask. Was ich denke, scheint eine gute Wahl für Ihre Implementierung zu sein.

Über die Methode. Jetzt kann dies auf verschiedene Arten geschehen. Beachten Sie, dass diese vollständig von Ihrer Logik abhängen. Erstens können Sie versuchen, die Ganzzahl, die Sie von getMaxAmplitude () erhalten, an die AsyncTask in einer Schleife zu senden. Sie können eine kleine Verzögerung innerhalb der Schleife hinzufügen, um sicherzustellen, dass die asynctask abgeschlossen wird, während Sie hier sind. Oder Sie können die Methode einfach innerhalb der Asynctask (privat halten) aufrufen. Ruhe liegt bei Ihnen und der Logik, die Sie verwenden.