2015-11-12 6 views
8

Die Antwort auf diese question besagt, dass wir ein zuverlässiges und präzises Metronom auf Android mit AudioTrack machen können. Wir können MediaPlayer, SoundPool, Thread und Timer auch verwenden, aber sie verursachen immer eine Verzögerung. Wie können wir anstelle eines synthetisierten Sounds mit AudioTrack den gleichen Effekt mit benutzerdefinierten Audiodateien erzielen?Präzise Metronom für Android

Antwort

4

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 höchstwertigen präzisen verfügbaren System-Timer, in Nanosekunden. Diese Methode kann nur verwendet werden, um die verstrichene Zeit zu messen und steht nicht im Zusammenhang mit einem anderen Begriff der System- oder Wanduhrzeit. Der zurückgegebene Wert repräsentiert Nanosekunden seit einigen festen, aber beliebigen Zeit (vielleicht in der Zukunft, so dass die Werte negativ sein können). Diese Methode liefert eine Genauigkeit im Nanosekundenbereich von , aber nicht notwendigerweise eine Genauigkeit im Nanosekundenbereich. Es werden keine Garantien darüber gemacht, wie häufig sich Werte ändern. Unterschiede in aufeinanderfolgenden Aufrufen , die sich über mehr als ungefähr 292 Jahre (263 Nanosekunden) erstrecken, werden die abgelaufene Zeit aufgrund eines numerischen Überlaufs nicht genau berechnen.

Zum Beispiel zu messen, wie lange einige Code auszuführen nehmen:

lange Startzeit = System.nanoTime(); // ... der Code wird gemessen ... lang geschätztTime = System.nanoTime() - startTime;
Rückgabewert: Der aktuelle Wert des Systemzeitgebers in Nanosekunden. Seit: 1,5

Quelle:

Oracle Dokumentation https://docs.oracle.com/javase/1.5.0/docs/api/java/lang/System.html#nanoTime()

Verwandte Themen