Picking up an audio file android

后端 未结 5 1055
花落未央
花落未央 2021-01-31 19:11

I need to fetch an audio file from SD Card and play it. I think this can be done by getting URI of an audio file. So, to pick an audio file I\'m using following code:

         


        
5条回答
  •  逝去的感伤
    2021-01-31 19:45

     first of all open gallery through intent -
      public void openGalleryForAudio() {
            Intent videoIntent = new Intent(
                    Intent.ACTION_PICK,
                    android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);
            startActivityForResult(Intent.createChooser(videoIntent, "Select Audio"), AUDIO_REQUEST);
    }
    
    
    Then onActivityResult you should catch data - 
    if (requestCode == AUDIO_REQUEST && null != data) {
                    if (requestCode == AUDIO_REQUEST) {
    
                        Uri uri = data.getData();
                        try {
                            String uriString = uri.toString();
                            File myFile = new File(uriString);
                            //    String path = myFile.getAbsolutePath();
                            String displayName = null;
                            String path2 = getAudioPath(uri);
                            File f = new File(path2);
                            long fileSizeInBytes = f.length();
                            long fileSizeInKB = fileSizeInBytes / 1024;
                            long fileSizeInMB = fileSizeInKB / 1024;
                            if (fileSizeInMB > 8) {
                                customAlterDialog("Can't Upload ", "sorry file size is large");
                            } else {
                                profilePicUrl = path2;
                                isPicSelect = true;
                            }
                        } catch (Exception e) {
                            //handle exception
                            Toast.makeText(GroupDetailsActivity.this, "Unable to process,try again", Toast.LENGTH_SHORT).show();
                        }
                        //   String path1 = uri.getPath();
    
                    }
                }
    
     This function is use for absolute path of audio file
     private String getAudioPath(Uri uri) {
            String[] data = {MediaStore.Audio.Media.DATA};
            CursorLoader loader = new CursorLoader(getApplicationContext(), uri, data, null, null, null);
            Cursor cursor = loader.loadInBackground();
            int column_index = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);
            cursor.moveToFirst();
            return cursor.getString(column_index);
        }
    

提交回复
热议问题