Невозможно воспроизвести аудио в хранилище Firebase, отправленное из приложения Android - PullRequest
0 голосов
/ 05 апреля 2019

Я использую хранилище Firebase для загрузки аудио из моего приложения для Android, а затем загружаю и играю в своем приложении. Аудиофайл загружается, но когда я воспроизводю его из хранилища Firebase, он приходит в видеоформате, подобном изображению ниже, и не воспроизводит звук. Я также устанавливаю метаданные как аудио / mp3 для этого.

Я пытался найти примерно то же самое в документации Firebase и в Google, но не смог решить мою проблему.

video format

Uri file = Uri.fromFile(new File(fileName));
 //filename is audio stored in my phone's local storage.

StorageMetadata metadata = new StorageMetadata.Builder()
            .setContentType("audio/mp3")
            .build();

// Upload the file and metadata


 UploadTask uploadTask = storageReference.child("audio/audio.mp3").putFile(file, metadata);

uploadTask.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
        double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();
    }
}).addOnPausedListener(new OnPausedListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onPaused(UploadTask.TaskSnapshot taskSnapshot) {
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
        // Handle unsuccessful uploads
    }
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
        // Handle successful uploads on complete
        // ...
        Task<Uri> uri = taskSnapshot.getStorage().getDownloadUrl();
        while(!uri.isComplete());
        Uri url = uri.getResult();

        Toast.makeText(MainActivity.this, "Upload Success, download URL " +
                url.toString(), Toast.LENGTH_LONG).show();
    }
});

Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
    @Override
    public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
        if (!task.isSuccessful()) {
            throw task.getException();
        }

        // Continue with the task to get the download URL
        return storageReference.getDownloadUrl();

    }
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
    @Override
    public void onComplete(@NonNull Task<Uri> task) {
        if (task.isSuccessful()) {
            Uri downloadUri = task.getResult();

        } else {
            // Handle failures
            // ...
        }
    }
});

Я хочу, чтобы звук правильно сохранялся в хранилище Firebase, а затем передавал его в моем приложении. Любая помощь будет оценена. Спасибо!

1 Ответ

0 голосов
/ 05 апреля 2019

Попробуй вот так,


metadata = new StorageMetadata.Builder()
        .setContentType("audio/mpeg")
        .build();

uploadTask = storageRef.child("audio/"+file.getLastPathSegment()).putFile(file,metadata);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...