从Firebase存储下载音频

时间:2016-08-27 12:00:06

标签: java android firebase firebase-storage

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

有人可以提供简单的代码,只是为了从存储中下载音频文件。 我是android开发的新手,很抱歉是noob

我已经在我的清单文件中添加了所有权限,如bellow

<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) {

        }
    });
}

2 个答案:

答案 0 :(得分:2)

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

    Button home_btn = (Button)findViewById(R.id.btnPlayAgain);
    home_btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent i = new Intent(LostActivity.this,
                    HomeActivity.class);                        
            startActivity(i);

        }
    }); 

要将文件保存在外部存储空间中,您可以关注this Android Developers guide

一个例子:

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

答案 1 :(得分:0)

对于下载使用:

down = mstorage.child("Audio").child("New_Audio.mp3");

下载文件后,您可以通过

检查文件路径
localFile.getAbsolutePath();

祝福它,像这样:

Toast.makeText(getApplicationContext(), localFile.getAbsolutePath(),Toast.LENGTH_SHORT).show();

我希望你明白我的观点:)