音声アプリを開発しています。
スレッドで継続的に記録し、バイトでいっぱいのバッファーをキューに入れ、サーバーに送信し、キューから次のバッファーを取得するために、ある種のバッファーキューが必要です。
記録コードは次のとおりです。
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);
記録中のデータを見逃したくありません。
どんな助けでも大歓迎です。ありがとう