Android select mp3 file

前端 未结 3 2146
故里飘歌
故里飘歌 2020-12-29 11:06

Sorry if this has already been answered, but I can\'t specify my question very well. I have an activity that needs a song file from your device, and I want it when I press a

相关标签:
3条回答
  • 2020-12-29 11:10

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

    0 讨论(0)
  • 2020-12-29 11:28

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

    0 讨论(0)
  • 2020-12-29 11:28

    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

    0 讨论(0)
提交回复
热议问题