📜  如何从 Android 中的存储中获取音频文件?

📅  最后修改于: 2022-05-13 01:54:42.562000             🧑  作者: Mango

如何从 Android 中的存储中获取音频文件?

当用户在您的应用程序中上传或发送音频文件时,需要从手机存储中选择音频文件。因此,本文主要关注从手机存储中获取音频文件作为 URI。

分步实施

第 1 步:创建一个新项目

要在 Android Studio 中创建新项目,请参阅如何在 Android Studio 中创建/启动新项目。请注意,选择Java作为编程语言。

步骤 2:使用 activity_main.xml 文件

我们的应用程序的 XML 布局包含一个 Textview,如果我们点击它,我们可以从我们的存储中选择一个音频文件,然后当我们选择它时,文本视图的文本更改为音频选择。使用以下代码实现 XML 布局。



XML

  
    
      


Java
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
  
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
  
public class MainActivity extends AppCompatActivity {
  
    private final int PICK_AUDIO = 1;
    Uri AudioUri;
    TextView select_Audio;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        select_Audio = findViewById(R.id.select_Audio);
  
        // SETTING ONCLICK LISTENER ------ ON TEXT VIEW CLICK TO TAKE AUDIO INPUT
        select_Audio.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent audio = new Intent();
                audio.setType("audio/*");
                audio.setAction(Intent.ACTION_OPEN_DOCUMENT);
                startActivityForResult(Intent.createChooser(audio, "Select Audio"), PICK_AUDIO);
  
            }
        });
    }
  
    public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
          
        super.onActivityResult(requestCode, resultCode, data);
  
        if (requestCode == PICK_AUDIO && resultCode == RESULT_OK) {
            // Audio is Picked in format of URI
            AudioUri = data.getData();
            select_Audio.setText("Audio Selected");
        }
    }
}


第 3 步:使用 MainActivity。 Java文件

在这里,我们触发“音频”类型的意图和ACTION_GET_CONTENT类型的动作转到主活动。 Java文件,参考如下代码。下面是MainActivity的代码。 Java文件。代码中添加了注释以更详细地理解代码。

Java

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
  
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
  
public class MainActivity extends AppCompatActivity {
  
    private final int PICK_AUDIO = 1;
    Uri AudioUri;
    TextView select_Audio;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        select_Audio = findViewById(R.id.select_Audio);
  
        // SETTING ONCLICK LISTENER ------ ON TEXT VIEW CLICK TO TAKE AUDIO INPUT
        select_Audio.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent audio = new Intent();
                audio.setType("audio/*");
                audio.setAction(Intent.ACTION_OPEN_DOCUMENT);
                startActivityForResult(Intent.createChooser(audio, "Select Audio"), PICK_AUDIO);
  
            }
        });
    }
  
    public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
          
        super.onActivityResult(requestCode, resultCode, data);
  
        if (requestCode == PICK_AUDIO && resultCode == RESULT_OK) {
            // Audio is Picked in format of URI
            AudioUri = data.getData();
            select_Audio.setText("Audio Selected");
        }
    }
}