java - 从 Firebase 存储下载音频

标签 java android firebase firebase-storage

我正在尝试使用 firebase 存储作为后端创建一个语音消息 android 应用程序,但我在成功上传 mp3 文件时遇到问题。

有人可以提供简单的代码来从存储中下载音频文件吗? 我是 android 开发的新手,很抱歉我是菜鸟

我已经在 list 文件中添加了所有权限,如下所示

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

这是我的上传代码

private void uploadAudio() {
    pd=new ProgressDialog(this);
    pd.setMessage("Uploading");
   pd.show();
    StorageReference filepath = mstorage.child("Audio").child("New_Audio");
    Uri uri = Uri.fromFile(new File(mFileName));
    filepath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
          pd.dismiss();


        }
    });
}

并用于下载

private void startdownload() {

    down = mstorage.child("Audio/");

    File localFile = null;
    try {
        localFile = File.createTempFile("Audio", "mp3");
    } catch (IOException e) {
        e.printStackTrace();
    }

    down.getFile(localFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
        @Override
        public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
            Toast.makeText(getApplicationContext(),"Downloded",Toast.LENGTH_SHORT).show();
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception exception) {

        }
    });
}

最佳答案

确保上传和下载方法的 StorageReference 相同。

//upload
StorageReference filepath = mstorage.child("Audio").child("New_Audio.mp3");
//download
down = mstorage.child("Audio").child("New_Audio.mp3");

要将文件保存到外存中,可以关注this Android Developers guide

一个例子:

try {
    File localFile  = new File(Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_DOWNLOADS), "New_Audio.mp3");
    localFile .createNewFile();
    down.getFile(localFile);
} catch (IOException e) {
    e.printStackTrace();
}

关于java - 从 Firebase 存储下载音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39180901/

相关文章:

android - 从第二个 Activity 访问在主 Activity 中创建的 Android SQLite 数据库

ios - 同时使用 Firebase 和 HockeyApp 时没有 HockeyApp 崩溃报告

android - myActivity 扩展 GridView 实现 OnClickListener

Android在PreferenceActivity中添加AsyncTask 第一次加载大量preferences

ios - 从 Firebase 数据库异步方法返回值

ios - 将 Firebase 数据从 TableViewCell 传递到 ViewController

java - 为什么使用 java 实例初始化器?

java - 这个矩阵乘法代码是如何工作的?

java - 数组的长度属性在哪里定义?

java - 声音不会播放两次