Я записываю аудио с помощью Android-аудиорекодера, но он не работает на некоторых устройствах, таких как Huawei и OPPO, я записываю аудио в течение 5 секунд в фоновом режиме.
Функция начала записи:
private void startRecording(File file) {
if (mediaRecorder != null) {
mediaRecorder.reset();
mediaRecorder.release();
}
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
// mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);
//mediaRecorder.setOutputFile(file.getAbsolutePath());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC);
mediaRecorder.setAudioEncodingBitRate(48000);
} else {
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mediaRecorder.setAudioEncodingBitRate(64000);
}
mediaRecorder.setAudioSamplingRate(16000);
mediaRecorder.setOutputFile(file.getAbsolutePath());
try {
mediaRecorder.prepare();
mediaRecorder.start();
} catch (IOException e) {
Log.e("giftlist", "io problems while preparing [" +
file.getAbsolutePath() + "]: " + e.getMessage());
}
}
и функция остановки записи
private void stopRecording() {
if (mediaRecorder != null) {
mediaRecorder.stop();
mediaRecorder.reset();
mediaRecorder.release();
mediaRecorder = null;
}
}
это ожидание
java.lang.IllegalStateException at android.media.MediaRecorder._stop(Native Method)
это дает исключение для нелегального стека. Как исправить эту проблему? я хочу запустить его на всех устройствах