拿起一个音频文件android

我需要从SD卡获取音频文件并播放它。 我认为这可以通过获取音频文件的URI来完成。 所以,要选择一个我正在使用以下代码的音频文件:

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

现在,我可以浏览音频文件并选择其中一个。

问题:如何在onActivityResult中读取已挑选文件的URI?

Solutions Collecting From Web of "拿起一个音频文件android"

当您想要选择音频时,可以在项目中添加以下代码。

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

并在同一个Activity中覆盖onActivityResult,如下所示

 @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); } 
 final Uri uri=Uri.parse(Environment.getExternalStorageDirectory()+"/Audio/abc.mp3"); 

/Audio/abc.mp3替换your path of mp3 file on sdcard

别忘了检查外部存储是否已安装。 Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)

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