Grabación de audio no para archivo en Android
Quiero android.media.MediaRecorder. Para grabar el audio no en el archivo, sino en la misma variable, por ejemplo char [] o byte [] o alguna otra estructura de buffer de datos. Quiero enviarlo al servidor remoto a través de Wi-Fi, ¿puede android.media.MediaRecorder proporcionar esta funcionalidad?
- Aumenta automáticamente un valor en Firebase
- Android Studio 2.2.0.12 diseñador automáticamente anuncios "@ + id" prefijo antes de la identificación de la vista y que causa este error inusual
- ¿Utilizar JSONArray en otra clase?
- Algunas preguntas sobre Gradle para Android Development
- NullPointerException: name == null
- Correspondencia entre las coordenadas de ImageView y Pixeles de mapa de bits - Android
- Libgdx MainMenuScreen
- Java.exe terminó con valor de salida no nulo 2 cuando usa Facebook SDK
- Cómo conectarse a firebird DB en android
- Convertir el número en doble
- Adición de objetos independientes a una RealmList
- Diferencia entre res / color y res / values / colors.xml en la carpeta de recursos de Android
- No se han podido leer los descriptores de los archivos de entrada desde el paquete
Lo que puede hacer aquí es utilizar la clase ParcelFileDescriptor.
//make a pipe containing a read and a write parcelfd ParcelFileDescriptor[] fdPair = ParcelFileDescriptor.createPipe(); //get a handle to your read and write fd objects. ParcelFileDescriptor readFD = fdPair[0]; ParcelFileDescriptor writeFD = fdPair[1]; //next set your mediaRecorder instance to output to the write side of this pipe. mediaRecorder.setOutputFile(writeFD.getFileDescriptor()); //next create an input stream to read from the read side of the pipe. FileInputStream reader = new FileInputStream(readFD.getFileDescriptor()); //now to fill up a buffer with data, we just do a simple read byte[] buffer = new byte[4096];//or w/e buffer size you want //fill up your buffer with data from the stream reader.read(buffer);// may want to do this in a separate thread
Y ahora tiene un búfer lleno de datos de audio
Alternativamente, es posible que desee escribir datos directamente en un zócalo de la grabadora. Esto también se puede lograr con la clase ParcelFileDescriptor.
//create a socket connection to another device Socket socket = new Socket("123.123.123.123",65535);//or w/e socket address you are using //wrap the socket with a parcel so you can get at its underlying File descriptor ParcelFileDescriptor socketWrapper = ParcelFileDescriptor.fromSocket(socket); //set your mediaRecorder instance to write to this file descriptor mediaRecorder.setOutputFile(socketWrapper.getFileDescriptor());
Ahora cada vez que su grabadora de medios tiene datos para escribirlo automáticamente lo escribirá sobre el socket
- Marco automatizado de pruebas GUI para Android
- ¿Es posible ejecutar un emulador de Android sin configurar Eclipse