Я пытаюсь записать аудио и сохранить его. Проблема в том, что когда я записываю аудио, оно начинается, но при его остановке появляется ошибка:
E / MediaRecorder: останов вызова в недопустимом состоянии: 4
Мой код:
public void RecordVoice(){
recordVoice.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(checkPermissionFromDevice()){
pathSave = Environment.getExternalStorageDirectory().getAbsolutePath() + " /" + UUID.randomUUID().toString() + "_audio_record.3gp";
setupMediaRecorder();
try {
mediaRecorder.prepare();
mediaRecorder.start();
} catch (IOException e) {
e.printStackTrace();
}
recordVoice.setVisibility(View.GONE);
recordVoiceStop.setVisibility(View.VISIBLE);
Toast.makeText(getApplicationContext(), "Recording..",Toast.LENGTH_SHORT).show();
} else {
requestPermissionForAudio();
}
}
});
recordVoiceStop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mediaRecorder != null){
mediaRecorder.stop();
mediaRecorder.release();
}
recordVoice.setVisibility(View.VISIBLE);
recordVoiceStop.setVisibility(View.GONE);
}
});
}
private void setupMediaRecorder() {
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
mediaRecorder.setOutputFile(pathSave);
}
private void requestPermissionForAudio() {
ActivityCompat.requestPermissions(this, new String[]{ Manifest.permission.RECORD_AUDIO, Manifest.permission.WRITE_EXTERNAL_STORAGE }, REQUEST_RECORD_VOICE);
}
private boolean checkPermissionFromDevice() {
int writeExternalStorageDevice = ContextCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE);
int recordAudioResult = ContextCompat.checkSelfPermission(this,Manifest.permission.RECORD_AUDIO);
return writeExternalStorageDevice == PackageManager.PERMISSION_GRANTED && recordAudioResult == PackageManager.PERMISSION_GRANTED;
}
PS: Я дал разрешение в явном виде. Кто-нибудь может помочь мне решить эту проблему? Любое предложение приветствуется. Заранее спасибо.