【发布时间】:2012-11-08 07:42:46
【问题描述】:
我正在开发语音应用程序。
我需要某种缓冲队列,以便我在线程中连续记录,将充满字节的缓冲区放入队列并传输到服务器,然后从队列中取出下一个缓冲区。
这里是录音代码:
Queue<byte[]> qArray = new LinkedList<byte[]>();
recordingThread = new Thread(new Runnable() {
@Override
public void run() {
bData = new byte[BufferElements];
while (isRecording) {
recorder.read(bData, 0, BufferElements);
qArray.add(bData);
if (AudioRecord.ERROR_INVALID_OPERATION != 0) {
SendAudio();
}
}
}
}, "AudioRecorder Thread");
recordingThread.start();
但在将其发送到服务器时仍然缺少少量 byte[] 数据
这里是发送语音到服务器的代码:
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(ServerUrl.url_audio);
// Json Format
JSONObject holder = new JSONObject();
JSONArray jArray = new JSONArray();
try {
byte[] tmparr = qArray.poll();
for (int i = 0; i < tmparr.length; i++) {
jArray.put(i, tmparr[i]);
}
holder.put("Voice", jArray);
我不想错过任何正在记录的数据。
任何帮助将不胜感激。谢谢
【问题讨论】:
标签: java android linked-list bytearray bytebuffer