android.provider.MediaStore.Audio.Playlists.Members.getContentUri("external",mPlaylistId);
위 구문을 사용하면 mPlaylistId [playlist_id]에 해당 하는 재생목록의 음악들을 검색할수 있는 Uri가 만들어진다.
"external" 문자열은 무슨 내용인지 잘모른다. 하지만 "external"로 넣어서 올바른 값을 리턴받았다는 사실에 주목하자.
Uri audioExternalPlayListUri = android.provider.MediaStore.Audio.Playlists.Members.getContentUri("external",mPlaylistId);
CursorLoader tmp = new CursorLoader(this, // Context
audioExternalPlayListUri, // Table to query
mProjection, // Projection to return
null, // No selection clause
null, // No selection arguments
android.provider.MediaStore.Audio.Playlists.Members.PLAY_ORDER +" ASC" // Default sort order
위 uri로 검색하면 실제로는 Media Provider의 audio_playlists_map, audio 두 테이블이 inner 조인을 한다
일부러 mProjection에 잘못된 컬럼값을 입력하여 sql 에러 문을 확인해보았다.
03-14 14:39:16.509 E 3921 3953 AndroidRuntime:
Caused by: android.database.sqlite.SQLiteException: no such column: members (code 1, while compiling:
SELECT audio_playlists_map._id AS _id, audio_id, members, play_order, play_order, playlist_id
FROM audio_playlists_map, audio
WHERE (audio._id = audio_id AND playlist_id=?)
결국엔 위에서 넣은 Uri를 사용하면 audio_playlists_map테이블과 audio에 있는 컬럼들을 모두 조회할수있다.
private String[] mProjection = new String[] {
/*audio_playlists_map*/
android.provider.MediaStore.Audio.Playlists.Members._ID,
android.provider.MediaStore.Audio.Playlists.Members.AUDIO_ID,
//android.provider.MediaStore.Audio.Playlists.Members.CONTENT_DIRECTORY, 이것 없음
//android.provider.MediaStore.Audio.Playlists.Members.DEFAULT_SORT_ORDER, play_order와 같음
android.provider.MediaStore.Audio.Playlists.Members.PLAY_ORDER,
android.provider.MediaStore.Audio.Playlists.Members.PLAYLIST_ID,
/*audio*/
android.provider.MediaStore.Audio.Media.TITLE,
android.provider.MediaStore.Audio.Media.ARTIST,
android.provider.MediaStore.Audio.Media.DURATION,
android.provider.MediaStore.Audio.Media.ALBUM_ID,
android.provider.MediaStore.Audio.Media.DATA,
};
PlayList 항목에 들어있는 MusicList를 쉽게 구할 수 있다.
'PROGRAMING > Android' 카테고리의 다른 글
slide touch button , 알람에 ,월,화,수,목,금,토, 슬라이드 터치.(drag touch) (0) | 2013.03.25 |
---|---|
PlayList특정 재생 항목의 Music들의 재생순서 변경하기 moveItem 사용 (0) | 2013.03.15 |
Intent로 Activity 열기 getIntent로 전달된 값 받기 (0) | 2013.03.14 |
thread를 돌려서 callback으로 데이터 얻어오기 (0) | 2013.03.12 |
Android log 저장방법 UncaughtExceptionHandler 구현과 android.app.application (0) | 2013.03.06 |