РЕДАКТИРОВАТЬ: Я добавил в 'recRef' «.3gp» в конце ссылки, и теперь, когда я использую эмулятор, он загружается как файл .3gp размером 0 КБ, а внешнее устройство по-прежнему загружает файл «application / octet-stream» (вес 0 КБ).
Я сделал запись в своем приложении и просто не могу правильно загрузить его в хранилище firebase. Я попытался создать процесс загрузки на основе примера загрузки изображения, опубликованного в Google, и он загружает пустой файл (0 КБ, введите «application / octet-stream»). процесс записи работает отлично, и я сделал кнопку воспроизведения, чтобы проверить это, поэтому я знаю, что проблема только в том, что я не знаю, как правильно загрузить его в облако.
Вы все можете использовать мою всплывающую запись активности из git: https://github.com/tidharon/Popup-Record-Window-App
Вот мой код загрузки:
recRef = storage.getReference(lastAct + " Records").child(lastTitle);
metadata = new StorageMetadata.Builder().setCustomMetadata(lastID, outputFile).build();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] daata = baos.toByteArray();
uploadTask = (UploadTask) recRef.putBytes(daata, metadata).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
recURL = recRef.toString();
getIntent().putExtra("recURL", recURL);
}
});
recRef - это элемент StorageReference. метаданные - это элемент StorageMetadate. lastID - это идентификатор текстового документа, связанного с записью. outputFile - это каталог, в котором хранится запись
Это подготовка к процессу записи:
outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + ("/" + lastAct + " | " + lastID + " | " + date + ".3gp");
myAudioRecorder = new MediaRecorder();
myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
myAudioRecorder.setOutputFile(outputFile);
Заранее спасибо!