Estoy usando la pista de audio para reproducir sonidos diferentes, en modo transmisión. Me gustaría saber si hay una manera de saber cuándo cada sonido se activa/termina de reproducirse.AudioTrack: cómo saber cuándo comienza/finaliza un sonido.
puedo crear la pista de audio como esto:
AudioTrack tmpAudioTrack = new AudioTrack(
STREAM_TYPE,
SAMPLE_RATE,
CHANNEL_CONFIG_TYPE,
AUDIO_FORMAT_TYPE,
getOptimalBufferSize(),
AUDIO_TRACK_MODE);'
y ponerlo en marcha en un subproceso de fondo:
backround_thread = new Thread(new MyRunnable(aTrack));
backround_thread.start();
escribo cada sonido como esto dentro del ejecutable:
byte generatedSnd[] = new byte[2 * beepSamples];
<code for filling the buffer with sound here>
int bytesWritten = track.write(generatedSnd, 0, generatedSnd.length);
Es posible usar cualquiera de las API de AudioTrack como setNotificationMarkerPosition, o setLoopPoints, o se tPositionNotificationPeriod para lograr esto? y cómo funcionan?
Cada sonido puede tener una duración de tiempo diferente. Creo que esto es clave.
No entiendo completamente la documentación de estas API. ¿Cada marco es lo mismo que una muestra? ¿Cómo especifico un marcador para el inicio/finalización de cada sonido?
Gracias,
Al menos, ¿alguien sabe la diferencia entre setNotificationMarkerPosition y setPositionNotificationPeriod? – mikemeli