以下来自Apollo播放器
1.播放列表(audio_playlists)
数据库建View
db.execSQL("CREATE VIEW audio_playlists AS SELECT _id," + PLAYLIST_COLUMNS +
" FROM files WHERE " + FileColumns.MEDIA_TYPE + "="
+ FileColumns.MEDIA_TYPE_PLAYLIST + ";");
默认添加两项列表:
/* Adds the favorites and last added playlists */
private void makeDefaultPlaylists() {
final Resources resources = getContext().getResources();
/* Favorites list */
final Playlist favorites = new Playlist(-1,
resources.getString(R.string.playlist_favorites));
mPlaylistList.add(favorites);
/* Last added list */
final Playlist lastAdded = new Playlist(-2,
resources.getString(R.string.playlist_last_added));
mPlaylistList.add(lastAdded);
}
得到用户添加的播放列表(比如:我的录音):
public static final Cursor makePlaylistCursor(final Context context) {
return context.getContentResolver().query(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI,
new String[] {
/* 0 */
BaseColumns._ID,
/* 1 */
PlaylistsColumns.NAME
}, null, null, MediaStore.Audio.Playlists.DEFAULT_SORT_ORDER);
}
(1)收藏夹数据取自自己的数据库。
(2)最后添加
public static final Cursor makeLastAddedCursor(final Context context) {
final int fourWeeks = 4 * 3600 * 24 * 7;
final StringBuilder selection = new StringBuilder();
selection.append(AudioColumns.IS_MUSIC + "=1");
selection.append(" AND " + AudioColumns.TITLE + " != ''"); //$NON-NLS-2$
selection.append(" AND " + MediaStore.Audio.Media.DATE_ADDED + ">"); //$NON-NLS-2$
selection.append(System.currentTimeMillis() / 1000 - fourWeeks);
return context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
new String[] {
/* 0 */
BaseColumns._ID,
/* 1 */
AudioColumns.TITLE,
/* 2 */
AudioColumns.ARTIST,
/* 3 */
AudioColumns.ALBUM
}, selection.toString(), null, MediaStore.Audio.Media.DATE_ADDED + " DESC");
}
(3)自定义分类
public static final long[] getSongListForPlaylist(final Context context, final long playlistId) {
final String[] projection = new String[] {
MediaStore.Audio.Playlists.Members.AUDIO_ID
};
Cursor cursor = context.getContentResolver().query(
MediaStore.Audio.Playlists.Members.getContentUri("external",
Long.valueOf(playlistId)), projection, null, null,
MediaStore.Audio.Playlists.Members.DEFAULT_SORT_ORDER);
if (cursor != null) {
final long[] list = getSongListForCursor(cursor);
cursor.close();
cursor = null;
return list;
}
return sEmptyList;
}