Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Picking up an audio file android

Tags:

android

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:

Intent intent = new Intent();
intent.setType("audio/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Audio "), reqCode);

Now, I can browse for audio files and select one of them.

QUESTION: How to read the URI of picked file in my onActivityResult?

like image 905
Sanjay Joshi Avatar asked Jul 30 '13 10:07

Sanjay Joshi


People also ask

Where do I find my audio files?

Choose Open from the File menu or hold down the Control key and press ``o'' with the mouse cursor over the Audio main window. The Audio-Open File dialog box is displayed. Navigate to the folder where the audio file is located.

What folder are audio files stored in Android?

The audio files are stored in botht the res/raw directory and the asset directory.

How do I get a list of audio files in a specific folder on Android?

id. mylist); myList = new ArrayList<String>(); File directory = Environment. getExternalStorageDirectory(); file = new File( directory + "/Test" ); File list[] = file. listFiles(); for( int i=0; i< list.


3 Answers

You can put below codes in your project when you want to select audio.

Intent intent_upload = new Intent(); intent_upload.setType("audio/*"); intent_upload.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(intent_upload,1); 

And override onActivityResult in the same Activity, as below

@Override  protected void onActivityResult(int requestCode,int resultCode,Intent data){    if(requestCode == 1){      if(resultCode == RESULT_OK){          //the selected audio.         Uri uri = data.getData();      }   }   super.onActivityResult(requestCode, resultCode, data); } 
like image 103
Jun Avatar answered Oct 21 '22 21:10

Jun


 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);     } 
like image 32
Chetan Shelake Avatar answered Oct 21 '22 20:10

Chetan Shelake


No need to add type here like audio/*. It will crash to search such type of action. Try this. It worked for me.

val intent = Intent(Intent.ACTION_PICK, android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI)
        startActivityForResult(intent, AUDIO_REQUEST_CODE)
like image 22
Ramprasad G Avatar answered Oct 21 '22 20:10

Ramprasad G