tengo ritmo reposo rapido porque por para palpitaciones nada medir latidos late hacer gratis fuertes frecuencia escuchar cuerpo cuando corazon cardiaco cardiaca bebe app aplicacion ansiedad alta acuesto android streaming audiotrack

android - ritmo - porque mi corazon late rapido sin hacer nada



AudioTrack reiniciando incluso después de que se detiene (4)

Creé una aplicación simple que genera una onda cuadrada de frecuencia determinada y la reproduce utilizando AudioTrack en modo STREAM (STREAM_MUSIC). Todo parece funcionar bien y el sonido se reproduce bien, sin embargo, cuando finaliza la transmisión, recibo mensajes en el registro:

W / AudioTrack (7579): obtieneBuffer () pista 0x14c228 deshabilitada, reiniciando ...

Incluso después de llamar a la función stop () todavía obtengo estos. Creo que establecí correctamente el tamaño del búfer de AudioTrack, en función del tamaño mínimo requerido por AudioTrack (en mi caso 6x1024). Lo alimento con buffers más pequeños de 1024 shorts.

¿Está bien que esté recibiendo esto y debo dejarlo así?


Descubrí que incluso cuando el búfer es técnicamente lo suficientemente largo y está lleno de bytes, si no están formateados correctamente (los cortos de audio convertidos a una matriz de bytes) aún generarán ese error.


He resuelto por esto

if (mAudioTrack.getPlayState()!=AudioTrack.PLAYSTATE_PLAYING) mAudioTrack.play(); mAudioTrack.write(b, 0, sz * 2); mAudioTrack.stop(); mAudioTrack.flush();


Ok, creo que el problema está resuelto. El error se genera cuando el búfer no se llena por completo con los datos a tiempo (búfer no se ejecuta). No tengo idea de cuál es el tiempo de espera, pero si experimenta esto, asegúrese de que:

  1. No llamas al método de reproducción hasta que tengas algunos datos en el búfer.

  2. Puede generar los datos lo suficientemente rápido para superar el tiempo de espera.

  3. Una vez que haya terminado de alimentar el búfer con datos, antes de llamar al método stop (), asegúrese de que el "último" búfer esté completamente lleno de datos antes del tiempo de espera.

Traté el último problema siempre esperando un poco (hasta el tiempo de espera), luego enviando 1 búfer lleno de ceros y finalmente llamando a la función stop ().

Tenga en cuenta que siempre debe enviar el búfer en trozos más pequeños, incluso si tiene el trozo grande listo. Todavía me molesta un poco que no estoy 100% seguro de que esa sea la forma correcta, pero los errores se han ido, así que supongo que puedo vivir con eso :)


Recibí esa advertencia cuando hice una instancia de Audiotrack, se llamó audioTrack.play() y hubo un ligero retraso entre la llamada a play() y audioTrack.write() . Si llamé a play() justo antes de write() la advertencia desapareció.