android.media.MediaRecorderが欲しいです。オーディオをファイルではなく同じ変数、たとえばchar[]やbyte[]、またはその他のデータバッファ構造に記録します。Wi-Fi経由でリモートサーバーに送信したいのですが、android.media.MediaRecorderでこの機能を利用できますか?
質問する
3831 次
1 に答える
17
ここでできることは、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());
これで、メディアレコーダーに書き込むデータがあるときはいつでも、ソケットに自動的に書き込みます。
于 2013-01-21T14:13:35.787 に答える