0
Мое приложение запускает thread A
, чтобы сохранить некоторые данные. В этой теме я называю функцией startRecording(audioFile.getAbsolutePath());
Ошибка при записи звука на Android
Но я получаю следующее сообщение об ошибке:
start called in an invalid state: 16; at android.media.MediaRecorder.start(Native Method)
Эта ошибка не происходит каждый раз, но иногда я получаю это сообщение об ошибке от моего приложения.
Ниже приведен мой код.
public void startRecording(String outputPath) {
if (recorder == null) {
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
recorder.setAudioSamplingRate(RECORDER_SAMPLERATE_22050);
recorder.setOutputFile(outputPath);
try {
recorder.prepare();
} catch (IOException e) {
e.printStackTrace();
}
}
recorder.start();
SampleRecordThread thread = new SampleRecordThread(outputPath);
thread.start();
}
private class SampleRecordThread extends Thread {
private volatile boolean running = true;
public void exit() {
running = false;
}
@Override
public void run() {
while (running) {
try {
Thread.sleep(10 * 1000);//to record 10 seconds sound
} catch (InterruptedException e) {
e.printStackTrace();
}
recorder.stop();
recorder.reset();
recorder.release();
recorder = null;
// upload the data to cloud
if (isWifiActive && isInstallationSaved) {
.....
record.saveInBackground();
}
break;
}
}
prbably будет полезно: [ссылка] (http://stackoverflow.com/questions/ 19709677/mediarecorder-invalid-state-16) –
исправлена грамматика и стиль –