我开发语音应用。
我需要某种形式的缓存队列中,使我在一个线程时间可持续记录,刊登全字节到队列的缓存,并传输到服务器,并且我从队列中的下一个缓冲区。
下面是记录代码:
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();
但还是缺了字节[]数据的少数,而把它发送到服务器
这里是发送语音服务器的代码:
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);
我不想错过它记录任何数据。
任何帮助,将不胜感激很多。 谢谢