PlayList특정 재생 항목의 Music들의 재생순서 변경하기 moveItem 사용
http://developer.android.com/reference/android/provider/MediaStore.Audio.Playlists.Members.html#moveItem(android.content.ContentResolver, long, int, int)
public static final boolean moveItem (ContentResolver res, long playlistId, int from, int to)
Convenience method to move a playlist item to a new location
Parameters
res | The content resolver to use |
---|---|
playlistId | The numeric id of the playlist |
from | The position of the item to move |
to | The position to move the item to |
Returns
- true on success
시나리오
1. PlayList에서 재생목록 하나를 선택 하면 Activity가 하나 열리고 그안에는 선택된 재생목록에 포함된 Music들이 ListView에 보여진다.
2. ListView에 표시되는 음악들은 android.provider.MediaStore.Audio.Playlists.Members.PLAY_ORDER +" ASC"
PLAY_ORDER 컬럼에 대해 오름차순 정렬되어있다. [(위 행)1,2,3,4,5(아래 행)]
2. ListView에 표시되는 음악들은 위, 아래표시가 되어있는 button을 두개 같는다.
3. 위 버튼을 누르면 해당 항목의 PLAY_ORDER 값은 바로 위 항목과 변경된다.
4. 아래 버튼을 누르면 해당 항목의 PLAY_ORDER 값은 바로 아래 항목과 변경된다.
구현
1) ListView에 사용할 CursorLoader PLAY_ORDER컬럼으로 오름차순 정렬했다.
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
2) 위, 아래 버튼 ListView 구현
/*bindView*/
long PlayOrder = cursor.getLong(cursor.getColumnIndex(android.provider.MediaStore.Audio.Playlists.Members.PLAY_ORDER));
holder.btnUp.setTag(PlayOrder);
holder.btnDn.setTag(PlayOrder);
3) 위, 아래 버튼 클릭 액션 구현
@Override
public void onClick(View v) {
LOG.i(CLASSNAME, "onClick v.getId() : " +v.getId());
if(v.getId()==R.id.btnUp){
LOG.i(CLASSNAME, "onClick btnUp");
long position= (long)(Long)v.getTag();
int to = (int) (position-1);
int from = (int) position;
LOG.i(CLASSNAME, "onClick btnUp mPlaylistId : "+mPlaylistId+", position : " +position+" , from : "+from+" , to : "+to);
boolean result = MediaStore.Audio.Playlists.Members.moveItem(getContentResolver(), mPlaylistId, from, to);
LOG.i(CLASSNAME, "onClick btnUp result : " +result);
} else if(v.getId()==R.id.btnDn){
LOG.i(CLASSNAME, "onClick btnDn");
long position= (long)(Long)v.getTag();
int to = (int) (position+1);
int from = (int) position;
LOG.i(CLASSNAME, "onClick btnDn mPlaylistId : "+mPlaylistId+", position : " +position+" , from : "+from+" , to : "+to);
boolean result = MediaStore.Audio.Playlists.Members.moveItem(getContentResolver(), mPlaylistId, from, to);
LOG.i(CLASSNAME, "onClick btnDn result : " +result);
}
}
mPlaylistId는 재생목록에 대한 _id이다.
* 특정 재생목록에 대한 id에 대해서 from,to에 해당하는 PLAY_ORDER의 컬럼 값을 교체하여 재생 순서를 변경하게된다.
'PROGRAMING > Android' 카테고리의 다른 글
slide touch button , 알람에 ,월,화,수,목,금,토, 슬라이드 터치.(drag touch) (0) | 2013.03.25 |
---|---|
Playlists.Members.getContentUri와 PlayList안의 음악들 조회 (0) | 2013.03.14 |
Intent로 Activity 열기 getIntent로 전달된 값 받기 (0) | 2013.03.14 |
thread를 돌려서 callback으로 데이터 얻어오기 (0) | 2013.03.12 |
Android log 저장방법 UncaughtExceptionHandler 구현과 android.app.application (0) | 2013.03.06 |