AudioRecording не работает на некоторых устройствах - PullRequest
0 голосов
/ 28 августа 2018

Я записываю аудио с помощью 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)

это дает исключение для нелегального стека. Как исправить эту проблему? я хочу запустить его на всех устройствах

...