如何从ext-sdcard查询音乐?

时间:2013-04-15 06:07:17

标签: android

我用

Uri deviceMusic = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0";
String sortOrder = MediaStore.Audio.Media.DISPLAY_NAME;
Cursor cursor = this.getContentResolver().query(deviceMusic, null,
            selection, null, sortOrder);

从设备查询音乐,

但它无法在“extSdCard”中找到音乐。

那么,如何在设备同时具有mnt / sdcrad和“extSdCard”的情况下查询音乐?

编辑: 对不起,我的意思是我可以在mnt / sdcard中获取音乐

但我无法在mnt / extSdCard中获取音乐

extSdCard是一个真正的SD卡,可以在设备上手动删除

图片 enter link description here

1 个答案:

答案 0 :(得分:2)

使用此方法develop3ed由我....获取SD卡的mp3文件

为了详细说明,我还提出了一个问题 Observing changes in android content observer for Audio.Media.EXTERNAL_CONTENT_URI

此代码适用于 mnt / sdcrad extSdCard

在此代码中,我已检索到

  1. 档案名称

  2. 档案路径

  3. 时间

  4. 持续时间

  5. 为每个mp3文件。您可以检索的字段数量很多,请参阅此http://developer.android.com/reference/android/provider/MediaStore.Audio.AudioColumns.html

          private void showAllAudio() {
         Cursor mCursor = null;
    
         try {
             mCursor = context.getContentResolver().query(
                 Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, "_id");
    
             System.out.println("Cursor count is " + mCursor.getCount());
    
             if (mCursor.getCount() != 0) {
    
                 do {
    
    
                     long date = mCursor.getLong(mCursor
                         .getColumnIndexOrThrow(Audio.Media.DATE_ADDED));
    
                     String Duration = mCursor.getString(mCursor
                         .getColumnIndexOrThrow(Audio.Media.DURATION));
                     String DISPLAY_NAME = mCursor.getString(mCursor
                         .getColumnIndexOrThrow(Audio.Media.DISPLAY_NAME));
                     String DATA = mCursor.getString(mCursor
                         .getColumnIndexOrThrow(Audio.Media.DATA));
                     double TIME_STAMP = mCursor.getInt(mCursor
                         .getColumnIndexOrThrow(Audio.Media.DATE_ADDED));
    
    
                     System.out.println("Name:" + DISPLAY_NAME);
                     System.out.println("data " + DATA);
                     System.out.println("time " + TIME_STAMP);
                     System.out.println("time " + Duration);
                 } while (mCursor.moveToNext());
    
             }
         } catch (Exception e) {
             e.printStackTrace();
         } finally {
             if (mCursor != null) {
                 mCursor.close();
                 mCursor = null;
             }
         }
    
     }
     }