2013-04-15 2 views
1

나는ext-sdcard에서 음악을 쿼리하는 방법은 무엇입니까?

, 장치에서 네가 윌리엄 이니 음악을

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"가 동시에있을 때 음악을 쿼리하는 방법은 무엇입니까?

편집 : 죄송합니다, 내 말은/extSdCard

extSdCard가 손으로 제거 할 수있는 실제의 sdcard입니다 내가 MNT/SDCARD

음악을 얻을 수 있습니다하지만 난 MNT 음악을 얻을 수있다 장치

사진 : enter link description here

+0

외부 저장소를 읽을 수있는 권한을 추가 했습니까? – Lucifer

+0

14:32에 내 질문 편집 – user1531240

답변

2

를 사용하여 SD 카드의 MP3 파일을 받고 저에 의해 develop3ed이 방법 ....

나는 또한이 코드는 작동 것이다 질문 Observing changes in android content observer for Audio.Media.EXTERNAL_CONTENT_URI

을 요청했습니다 설명하기 위해

모두 MNT/sdcradextSdCard 내가

  1. 를 검색 한이 코드에서

    파일 이름

  2. 파일 경로

  3. 시간 각 MP3 파일에 대한

  4. 기간

. 검색 할 수있는 필드가 너무 많습니다. 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; 
     } 
    } 

} 
} 
관련 문제