Cómo hacer Visualizer mientras graba audio en android
Sé Visualizer para mostrar alguna ola mientras reproduce audio usando android Media Player.
Pero quiero mostrar al visualizador mientras graba medios de audio durante la grabación quiero mostrar onda lineal que cambia basado en el ritmo de voz del usuario.
- Cómo configurar imágenes dymanic para ViewFlipper en android?
- Múltiples vistas con diferentes alturas en ViewFlipper
- ¿Cómo obtener el número total de vistas desde ViewFlipper?
- JPEG2000 visor y soporte en Android
- ¿Cómo puedo hacer una pantalla dinámica de volteo (como la del iPhone) en Android
¿Es posible hacerlo en android.
- ViewFlipper no se está volviendo con la vista de lista secundaria
- ¿Cómo funciona el Viewflipper con el botón de retroceso en Android?
- ¿Por qué mi FFT ofrece una salida de visualizador diferente de Windows Media Player?
- Android: Animación de ViewFlipper
- Cómo implementar Flipboard ipad página de animación de giro para ver flipper en android?
- Cómo agregar vistas en ViewFlipper mediante programación
- Android ViewFlipper no se mueve
- Listener para el widget ViewFlipper que mueve eventos
Llamando cada milisegundos x su MediaRecorder.getMaxAmplitude (), usted va a tener (de la documentación oficial ):
La amplitud absoluta máxima que fue muestreada desde la última llamada a este método.
Entonces, puede procesar este valor en tiempo real para dibujar un gráfico o cambiar algunas propiedades de vista.
No es perfecto, pero espero que ayude =)
Editar: sólo para que usted sepa, el valor recuperado será el mismo en todos los dispositivos android: entre 0 y 32767. (Tengo más de 10k informes de usuario que me da este valor cuando sopla en el micrófono).
Dos cosas importantes:
- Usted necesita convertir los bytes vivos (del micrófono) a los valores numéricos inorder para trazarlos.
-
Puesto que se utiliza un gráfico en tiempo real, para representar esos puntos se utiliza SurfaceView.
Convertir bytes de grabación a valores numéricos se refieren: Android: Listener para grabar sonido si se produce algún sonido donde verá que la variable "temp" contiene el valor numérico de su audio.
Puntos de trazado Estos valores numéricos que indican sus valores de Y se representan gráficamente en función del incremento de los valores de X (intervalo de tiempo) (0,1,2 ..). Usando SurfaceView por ejemplo ..,
//canvas.drawLine(previous X value,previous Y value,X,Y, paint); canvas.drawPoint(X,Y,paint); SurfaceHolder.unlockCanvasAndPost(canvas);
No es necesario trazar todos los valores, por eficiencia puede filtrar esos valores con sus condiciones y trazar para ciertos intervalos de tiempo.
Espero que esto ayude 🙂
Es posible que necesite utilizar la clase AudioRecorder en lugar de MediaRecorder.
Compruebe AudioRecorder # read (…) métodos que ponen datos de audio en byte [] en lugar de ponerlo directamente en un archivo.
Para mostrar los cambios en el gráfico tendrá que analizar los datos (que están codificados en PCM 8 o 16 bits – enlace ) y actualizar el gráfico en tiempo real.
- Ajustar imagen en la vista web
- Último bloque incompleto con CipherInputStream / CipherOutputStream, incluso con relleno AES / CBC / PKCS5Padding