1

私が使う

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 です。

画像: ここにリンクの説明を入力してください

4

1 に答える 1

2

SDカードのmp3ファイルを取得するには、私が開発したこの方法を使用してください....

詳細を取得するために、Audio.Media.EXTERNAL_CONTENT_URI の Android コンテンツ オブザーバーの変更を観察するという質問もしました。

このコードは、mnt/sdcradextSdCardの両方で機能します。

このコードでは、取得しました

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

 }
 }
于 2013-04-15T06:11:31.557 に答える