【问题标题】:How to query music from ext-sdcard?如何从 ext-sdcard 中查询音乐?
【发布时间】:2013-04-15 06:07:16
【问题描述】:

我用

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 是真正的 sdcard,可以在设备上手动移除

图片: enter link description here

【问题讨论】:

  • 您是否添加了读取外部存储的权限?
  • 在 14:32 编辑我的问题

标签: android


【解决方案1】:

使用我开发的这个方法....获取sd卡的mp3文件

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

此代码适用于 mnt/sdcrad 和 extSdCard

在我检索到的这段代码中

  1. 文件名

  2. 文件路径

  3. 时间

  4. 持续时间

对于每个 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;
         }
     }

 }
 }

【讨论】:

    猜你喜欢
    • 2014-05-18
    • 1970-01-01
    • 2018-10-05
    • 2015-06-29
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    相关资源
    最近更新 更多