2

在我的Android應用程序中,我想從SD卡中獲取歌曲,但我無法獲取該特定文件的路徑。我正在使用不支持android api level 7以下方法。從SD卡中獲取歌曲的路徑在android中

Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_MUSIC); 

我也曾嘗試下面的代碼:

path = Environment.getExternalStorageDirectory(); 

,但我不知道如何指定音樂file.Please的路徑提出了一些solution.Thanx。

+0

您的文件位於SDCard上? –

+0

歌曲應該從/ sdcard目錄中的任何文件夾中提取。 – zanky

回答

5

從SD卡獲取路徑和歌曲名稱。您可以從MediaStore找到歌曲的路徑。

媒體提供程序包含內部和外部存儲設備上所有可用媒體的元數據。

private String[] STAR = { "*" }; 

public void ListAllSongs() 
    { 
     Cursor cursor; 
     Uri allsongsuri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 
     String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0"; 

     if (isSdPresent()) { 
      cursor = getContentResolver().query(allsongsuri, STAR, selection, null, null); 

      if (cursor != null) { 
       if (cursor.moveToFirst()) { 
        do { 
         String songname = cursor 
           .getString(cursor 
             .getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME)); 
         int song_id = cursor.getInt(cursor 
           .getColumnIndex(MediaStore.Audio.Media._ID)); 

         String fullpath = cursor.getString(cursor 
           .getColumnIndex(MediaStore.Audio.Media.DATA)); 

         String albumname = cursor.getString(cursor 
           .getColumnIndex(MediaStore.Audio.Media.ALBUM)); 

        } while (cursor.moveToNext()); 
       } 
       cursor.close(); 
      } 
     } 
    } 


public static boolean isSdPresent() 
{ 
    return android.os.Environment.getExternalStorageState().equals(
       android.os.Environment.MEDIA_MOUNTED); 
} 
+0

我可以知道投票的原因嗎? –

+2

牆/一段代碼沒有解釋。 –

+0

@LalitPoptani現在可以嗎? –

1

可以掃描整個SD卡的任何文件格式,在這裏我用MP3和MP4。
你可以用它來處理你需要的任何格式。

/** To store the available media files */ 
    private List<String> mediaList = new ArrayList<String>(); 

    externalStoragePath = Environment.getExternalStorageDirectory() 
       .getAbsolutePath(); 

     targetDir = new File(externalStoragePath); 

     Log.d(" externalStoragePath ::: ", targetDir.getAbsolutePath()); 
public File[] mediaFiles = targetDir.listFiles(); 

/** 
    * scanFiles 
    * 
    * @param scanFiles 
    */ 
    public void scanFiles(File[] scanFiles) { 

     if (scanFiles != null) { 
      for (File file : scanFiles) { 

       if(mediaList.size() > 4){ 
        return; 
       } 

       if (file.isDirectory()) { 
        // Log.d(" scaned File ::isDirectory: ", 
        // file.getAbsolutePath()); 
        scanFiles(file.listFiles()); 

       } else { 

        addToMediaList(file); 

       } 

      } 
     } else { 

      Log.d(SCANNER, 
        " *************** No file is available ***************"); 

     } 
    } 



/** 
    * 
    * @param file 
    */ 

    private void addToMediaList(File file) { 

     if (file != null) { 

      String path = file.getAbsolutePath(); 

      int index = path.lastIndexOf("."); 

      String extn = path.substring(index + 1, path.length()); 

      if (extn.equalsIgnoreCase("mp4") || extn.equalsIgnoreCase("mp3")) {// || 

       Log.d(" scanned File ::: ", file.getAbsolutePath() 
         + " file.getPath() " + file.getPath());// extn.equalsIgnoreCase("mp3")) 
                    // { 
       Log.d(SCANNER, " ***** above file is added to list "); 
       mediaList.add(path); 


      } 
     } 

    } 
相關問題