>> 중요 필드
MediaStore.Audio.Media
_ID : 미디어 ID
DATA : path
MediaStore.Audio.Playlists
_ID : 플레이리스트 아이디
NAME : 플레이리스트 이름
MediaStore.Audio.Playlists.Members
AUDIO_ID : 미디어 ID
>> 재생목록 생성
String name = "생성할 리스트 이름";
// Uri uri;
// context 의 resolver 얻기
ContentResolver resolver = getContentResolver();
// 해당 이름의 플레이 리스트가 있는지 검사
Cursor c = resolver.query( MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI,
null,
MediaStore.Audio.Playlists.NAME + "=?",
new String[] { name },
null );
c.moveToFirst();
if( !c.isAfterLast() ) {
// 해당 항목 존재 : 해당 리스트 생성하지 않음.
c.close();
return;
}
c.close();
ContentValues values = new ContentValues();
values.put( MediaStore.Audio.Playlists.NAME, 플레이리스트 이름 );
resolver.insert( MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, values );
>> 재생목록에 추가
String name = "얻어올 리스트 이름";
// 해당 플레이 리스트의 id 얻기
Cursor c = resolver.query( MeidaStore.Audio.Playlists.EXTERNAL_CONTENT_URI,
new String[] { MediaStore.Audio.Playlists._ID } ,
MediaStore.Audio.Playlists.NAME + "=?" ,
new String[] { name } ,
null );
c.moveToFirst();
int 리스트id = c.getInt(0);
c.close();
// uri 얻기
Uri uri = MediaStore.Audio.Playlists.Members.getContentUri( "external", 리스트id );
// 음악 id
// 별도의 쿼리를 통해 미디어의 id를 얻어 둔다.
// 미디어의 id 는 MediaStore.Audio.Media._ID 컬럼으로 쿼리.
// 위 두항목을 모두 넣어야 한다.
// 오디오 id 만 넣게 되면 SQLiteConstraintException 발생.
ContentValues values = new ContentValues();
values.put( MediaStore.Audio.Playlists.Members.PLAY_ORDER, 순서 );
values.put( MediaStore.Audio.Playlists.Members.AUDIO_ID , 오디오 id );
// 넣기
resolver.insert( uri, values ); // 여러항목이 있으면 bulkInsert();
>> 재생목록에서 미디어 제거
resolver.delete( MeidaStore.Audio.Playlists.Members.getContentUri("external", 리스트id) ,
MediaStore.Audio.Playlists.Members.AUDIO_ID + " = " + 오디오ID ,
null );
>> 재생목록 제거
resolver.delete( MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI,
MediaStore.Audio.Playlists._ID + " = " + 리스트ID , null );
'프로그래밍 > Android' 카테고리의 다른 글
MediaStore 썸네일 데이터 관련 정리 (0) | 2011.09.26 |
---|---|
뷰의 크기 변경,이동 (0) | 2011.09.23 |
리스트뷰 메쏘드 몇개 (0) | 2011.09.22 |
SQLite Database (0) | 2011.09.20 |
Edittext 관련 사항들 (0) | 2011.09.18 |
List adapter (0) | 2011.09.15 |
낙서 (0) | 2011.09.07 |
터치 이벤트 처리순서 (0) | 2011.09.01 |
천천히 로딩되는 리스트 아이템 (0) | 2011.08.22 |
이미지 클리핑 기초 (0) | 2011.08.18 |