Запись звука не на файл на Android

Я хочу android.media.MediaRecorder. Для записи звука не в файл, а в одну и ту же переменную, например char [] или byte [] или какую-либо другую структуру буфера datta. Я хочу отправить его на удаленный сервер через Wi-Fi, может ли android.media.MediaRecorder предоставить эту функцию?

Solutions Collecting From Web of "Запись звука не на файл на Android"

Здесь вы можете использовать класс 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 

И теперь у вас есть буфер, полный аудиоданных

Альтернативно, вы можете захотеть записать данные непосредственно в сокет с рекордера. Это также может быть достигнуто с помощью класса 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()); 

Теперь, когда ваш медиа-рекордер имеет данные для записи, он автоматически записывает его через сокет