Я использую медиа-рекордер для записи звука, затем загружаю его в firebase, сохраняя содержимое выходного файла в массив байтов, проблема в том, что записанный файл правильно сохраняется и воспроизводится, а в хранилище firebase это не работает, поэтому я проверил размер как сохраненного файла на моем телефоне, так и того, что я конвертирую в массив байтов (которые должны быть одинаковыми). Я обнаружил, что getlength возвращает неправильный размер! Вот код
это код, который я использую для записи
recorder.setAudioSource(android.media.MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setOutputFile(Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+lectureTitle.getText().toString()+".mp4");
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try {
recorder.prepare();
} catch (IOException e) {
e.printStackTrace();
}
recorder.start();
}
Код, который я использую для преобразования файла в массив байтов, чтобы я мог его загрузить
File lectureRecorded = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+lectureTitle.getText().toString()+".mp4");
try {
BufferedInputStream input = new BufferedInputStream(new FileInputStream(lectureRecorded));
if(lectureRecorded.length() > 10*1024*1024){
Toast.makeText(getActivity(),"File is too big MAX (10MB)\n a loss will occur",Toast.LENGTH_LONG).show();
}else {
stream = new byte[(int)lectureRecorded.length()];
Log.d("AUDIOS",""+lectureRecorded.length());
input.read(stream, 0, (int) lectureRecorded.length());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
recorder.stop();
recorder.release();