Preciso metrónomo para Android

He ido a través de una gran cantidad de recursos de la web sobre cómo hacer un metrónomo preciso para Android. En esta cuestión de flujo de Stackover , me di cuenta de que para hacer un metrónomo fiable debe trabajar con un sonido sintetizado utilizando AudioTrack. Intenté usar MediaPlayer , SoundPool , Thread y Timer pero siempre causó un retraso. Quería utilizar mis propios archivos de audio en lugar de generar un sonido sintetizado con AudioTrack. ¿Cómo puedo lograr esto con bucle de archivos de audio preciso?

Usted puede intentar crear su propio contador de tiempo usando System.nanoTime() , cuando usted necesita la precisión, usted puede utilizar siempre esto.

public static long nanoTime()

Devuelve el valor actual del temporizador de sistema más preciso disponible, en nanoseconds. Este método sólo se puede utilizar para medir el tiempo transcurrido y no está relacionado con ninguna otra noción de tiempo del sistema o del reloj de pared. El valor devuelto representa nanosegundos desde algún tiempo fijo pero arbitrario (quizás en el futuro, por lo que los valores pueden ser negativos). Este método proporciona una precisión de nanosecond, pero no necesariamente precisión nanosecond. No se garantiza la frecuencia con la que cambian los valores. Las diferencias en llamadas sucesivas que abarcan más de aproximadamente 292 años (263 nanosegundos) no calcularán con precisión el tiempo transcurrido debido al desbordamiento numérico.

Por ejemplo, para medir cuánto tiempo tarda un código en ejecutarse:

Long startTime = System.nanoTime (); // … el código que se está midiendo … long estimatedTime = System.nanoTime () – startTime;
Devuelve: El valor actual del temporizador del sistema, en nanoseconds. Desde: 1,5

Fuente:

Documentación de Oracle https://docs.oracle.com/javase/1.5.0/docs/api/java/lang/System.html#nanoTime ()

  • Renovación de la referencia $ ref de objeto deserializante de JSON a su copia original
  • Barra de estado transparente: antes de Android 4.4 (KitKat)
  • Android ExpandableListView poblado dos veces
  • Temporizadores Android NDK
  • ¿Debo usar! = O == primero al implementar un if else para comparación
  • Evitando! = Null utilizando un método en java
  • LocationClient getLastLocation () devolver null
  • Error: El constructor MainActivity.ScreenSlidePagerAdapter (FragmentManager) no está definido
  • ¿Por qué mi método de comparación arroja IllegalArgumentException a veces?
  • Keytool genera huella digital SHA1 en lugar de MD5?
  • No se pudo encontrar la clase 'android.graphics.drawable.RippleDrawable' Unicode issue?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.