본문 바로가기

프로그래밍/Android

MediaStore 오디오 재생목록

 

>> 중요 필드

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