Die Antwort auf diese Frage besagt, dass wir eine zuverlässige und präzises Metronom auf Android mit AudioTrack
. Wir können auch MediaPlayer
, SoundPool
, Thread
und Timer
verwenden, aber sie verursachen immer eine Verzögerung. Anstatt einen synthetisierten Sound mit AudioTrack
zu erzeugen, wie können wir denselben Effekt mit benutzerdefinierten Audiodateien erzielen?
Sie können versuchen, Ihren eigenen Zeitzähler mit System.nanoTime()
zu erstellen, wenn Sie Präzision benötigen, können Sie dies immer verwenden.
public static long nanoTime()
Gibt den aktuellen Wert der meisten zurück präzise verfügbarer Systemzeitgeber in Nanosekunden. Diese Methode kann nur verwendet werden, um die verstrichene Zeit zu messen, und steht in keinem Zusammenhang mit anderen Begriffen der System- oder Wanduhrzeit. Der zurückgegebene Wert repräsentiert Nanosekunden seit einer bestimmten, aber beliebigen Zeit (vielleicht in der Zukunft, also Werte können negativ sein). Diese Methode liefert Nanosekunden Präzision, aber nicht notwendigerweise Genauigkeit im Nanosekundenbereich. Keine Garantien sind darüber gemacht, wie häufig sich Werte ändern. Unterschiede in aufeinanderfolgenden Anrufe, die mehr als etwa 292 Jahre (263 Nanosekunden) umfassen berechnet die abgelaufene Zeit aufgrund eines numerischen Überlaufs nicht genau.
Zum Beispiel, um zu messen, wie lange ein Code zur Ausführung benötigt:
lang startTime = System.nanoTime (); // ... der Code ist gemessen ... lang geschätztTime = System.nanoTime () - startTime;
Rückgabewert: Der aktuelle Wert des Systemzeitgebers in Nanosekunden. Schon seit: 1.5
Quelle:
Oracle-Dokumentation Ссылка