Android select mp3 file

假装没事ソ 提交于 2019-11-30 05:20:54

I use the following to select an mp3 file :

Intent intent;
intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("audio/mpeg");
startActivityForResult(Intent.createChooser(intent, getString(R.string.select_audio_file_title)), REQ_CODE_PICK_SOUNDFILE);

and then you can get the Uri back in onActivityResult :

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQ_CODE_PICK_SOUNDFILE && resultCode == Activity.RESULT_OK){
        if ((data != null) && (data.getData() != null)){
            Uri audioFileUri = data.getData();
            // Now you can use that Uri to get the file path, or upload it, ...
            }
        }
}

I believe selecting other types of audio files would be a matter of setting a wild card in the MIME type by doing intent.setType("audio/*) although I haven't tested that.

Please let me know if that works for you ;-)

To open file explorer, requestCode is just an integer so for sake , pass 1

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("audio/*"); // specify "audio/mp3" to filter only mp3 files
startActivityForResult(intent,1);

Setup Media Player,

MediaPlayer player = new MediaPlayer();
player.setAudioStreamType(AudioManager.STREAM_MUSIC);

Fetch result file from explorer,

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

 /*check whether you're working on correct request using requestCode , In this case 1*/

    if(requestCode == 1 && resultCode == Activity.RESULT_OK){
        audio = data.getData(); //declared above Uri audio;
        Log.d("media", "onActivityResult: "+audio);
    }

    super.onActivityResult(requestCode, resultCode, data);
}

Start Playing audio,

 player.setDataSource(new FileInputStream(new File(audio.getPath())).getFD());

 player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mediaPlayer) {
                    player.start();
                }
            });

 player.prepareAsync();

To stop audio,

 if(player.isPlaying())
            player.stop();

Finally, Add permission in manifest to read external files,

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

Add your controller widgets and play with MediaPlayer methods to create customized Mp3 player ;)

Meka

Slight Correction to 2Dee's answer:

    Intent audiofile_chooser_intent;
    audiofile_chooser_intent = new Intent();
    audiofile_chooser_intent.setAction(Intent.ACTION_GET_CONTENT);
    audiofile_chooser_intent.setType("audio/*");
    ActivityOptions options = ActivityOptions.makeScaleUpAnimation(view, 0,
            0, view.getWidth(), view.getHeight());
    startActivityForResult(Intent.createChooser(audiofile_chooser_intent, getString(R.string.select_audio_file_title)), RQS_OPEN_AUDIO_MP3, options.toBundle());

    Toast("File Chooser initiated..");

Intent inside of OnClick listener method to start FileChooser Activity/Dialog

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        if (requestCode == RQS_OPEN_AUDIO_MP3) {
            Uri audioFileUri = data.getData();

            String MP3Path = audioFileUri.getPath();
            Toast(MP3Path);


        }
    }
}

OnActivityResult method for obtaining the FilePath of selected file for subsequent use

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!