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?
- Llamada no marcada a ArrayAdapter
- Vista de la superficie con la cámara no funcionando en Android API 23 (Android 6+)
- ¿Deshabilitar la validación del certificado SSL de la conexión HTTPS?
- ¿Cómo puedo analizar una suite de pruebas junit?
- Uso de XMLBeans en Android
- Costumize android Fecha como twitter y feed de noticias de instagram
- Appium vs Espresso para el marco de pruebas automatizado
- ¿Es necesario establecer los oyentes de la interfaz Fragment a null en detach?
- Android Dx advertencia: Ignorar el atributo InnerClasses para un problema de archivo interno anónimo jar
- Colores en Android
- Manejo multitouch en libgdx
- ¿Por qué tenemos que llamar a super en Android a veces?
- NetBeans con NBAndroid - no se puede encontrar el símbolo setContentView (R.layout.main);
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 ()