Как загрузить аудио (3gp) файл в хранилище firebase?

РЕДАКТИРОВАТЬ: Я добавил в '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);

Заранее спасибо!


person TidyUSA    schedule 21.05.2020    source источник
comment
Попробуйте загрузить его как файл после завершения записи .putFile (uri_path)   -  person Wowo Ot    schedule 21.05.2020
comment
Я попробовал, но по-прежнему не загружает ни одного файла   -  person TidyUSA    schedule 21.05.2020


Ответы (1)


проверьте, что вызывает проблему, используя это

.addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            Toast.makeText(MyContext, e.toString(), Toast.LENGTH_LONG).show();
                        }
                    })

после закрытия addOnCompleteListener в вашем коде

person Wowo Ot    schedule 22.05.2020
comment
Это не сработает, но просто не загружайте в хранилище никаких файлов, кроме имени файла и определения файла как application / octet-stream. - person TidyUSA; 22.05.2020