Я пытаюсь жить потоковым в android на сервере. Моя программа работает нормально.BufferSize уменьшается в android AudioRecord
Метод, который начинает потоковым:
private void startStreaming() {
Thread startRecord = new Thread(
new Runnable() {
@Override
public void run() {
try {
socket = new DatagramSocket();
} catch (SocketException e) {
e.printStackTrace();
}
buffer = new byte[minBufSize];
DatagramPacket packet;
try {
destination = InetAddress.getByName("10.31.0.12");
} catch (UnknownHostException e) {
e.printStackTrace();
}
record = new AudioRecord(MediaRecorder.AudioSource.MIC,sampleRate,channelConfig,audioFormat,minBufSize * 10);
record.startRecording();
while (status)
{
minBufSize = record.read(buffer,0,buffer.length);
packet = new DatagramPacket(buffer,buffer.length,destination,port);
Log.d(LOG,"Writing in status " + destination);
try {
Log.d(LOG, "Trying to send. " + minBufSize);
socket.send(packet);
Log.d(LOG, "Sent successfully.");
} catch (IOException e) {
Log.d(LOG,"Socket is not sending properly.");
e.printStackTrace();
}
}
}
}
);
startRecord.start();
}
Метод, который останавливает запись:
public void stopRecording(View view) {
start.setVisibility(View.VISIBLE);
stop.setVisibility(View.GONE);
status = false;
Log.d(LOG,"I am about to release the record.");
record.release();
Log.d(LOG, "I have released.");
}
Я получаю minBufSize используя
minBufSize = record.read(buffer,0,buffer.length);
Если я продолжаю остановки и воспроизведения записи , minBufSize
продолжает уменьшаться. Значения изменяется от 1280 до 512 до 256 до -3 и, наконец, я получаю:
java.lang.NegativeArraySizeException: -3 на
com.example.khan.safevoicerecorder.MainActivity $ 1.Run (MainActivity. java: 81)
Почему это происходит? Пожалуйста, помогите мне решить эту проблему.
Я могу установить minBufSize каждый раз, когда начинаю запись, но все же путаю, почему произошло выше. – learner