/** * @param context The {@link Context} to use. * @param name The name of the new playlist. * @return A new playlist ID. */ public static final long createPlaylist(final Context context, final String name) { if (name != null && name.length() > 0) { final ContentResolver resolver = context.getContentResolver(); final String[] projection = new String[]{ PlaylistsColumns.NAME }; final String selection = PlaylistsColumns.NAME + " = '" + name + "'"; Cursor cursor = resolver.query(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, projection, selection, null, null); if (cursor.getCount() <= 0) { final ContentValues values = new ContentValues(1); values.put(PlaylistsColumns.NAME, name); final Uri uri = resolver.insert(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, values); return Long.parseLong(uri.getLastPathSegment()); } if (cursor != null) { cursor.close(); cursor = null; } return -1; } return -1; }
private static int countPlaylist(final Context context, final long playlistId) { Cursor c = null; try { c = context.getContentResolver().query( MediaStore.Audio.Playlists.Members.getContentUri("external", playlistId), new String[]{ MediaStore.Audio.Playlists.Members.AUDIO_ID, }, null, null, MediaStore.Audio.Playlists.Members.DEFAULT_SORT_ORDER); if (c != null) { return c.getCount(); } } finally { if (c != null) { c.close(); c = null; } } return 0; }
public static final Cursor makePlaylistSongCursor(final Context context, final Long playlistID) { final StringBuilder mSelection = new StringBuilder(); mSelection.append(AudioColumns.IS_MUSIC + "=1"); mSelection.append(" AND " + AudioColumns.TITLE + " != ''"); return context.getContentResolver().query( MediaStore.Audio.Playlists.Members.getContentUri("external", playlistID), new String[]{ MediaStore.Audio.Playlists.Members._ID, MediaStore.Audio.Playlists.Members.AUDIO_ID, AudioColumns.TITLE, AudioColumns.ARTIST, AudioColumns.ALBUM_ID, AudioColumns.ARTIST_ID, AudioColumns.ALBUM, AudioColumns.DURATION, AudioColumns.TRACK, Playlists.Members.PLAY_ORDER, }, mSelection.toString(), null, MediaStore.Audio.Playlists.Members.DEFAULT_SORT_ORDER); }
/** * @param cursor The {@link Cursor} used to perform our query. * @return The song list for a MIME type. */ public static final long[] getSongListForCursor(Cursor cursor) { if (cursor == null) { return sEmptyList; } final int len = cursor.getCount(); final long[] list = new long[len]; cursor.moveToFirst(); int columnIndex = -1; try { columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Audio.Playlists.Members.AUDIO_ID); } catch (final IllegalArgumentException notaplaylist) { columnIndex = cursor.getColumnIndexOrThrow(BaseColumns._ID); } for (int i = 0; i < len; i++) { list[i] = cursor.getLong(columnIndex); cursor.moveToNext(); } cursor.close(); cursor = null; return list; }
/** * Returns The ID for a playlist. * * @param context The {@link Context} to use. * @param name The name of the playlist. * @return The ID for a playlist. */ public static final long getIdForPlaylist(final Context context, final String name) { Cursor cursor = context.getContentResolver().query( MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, new String[]{ BaseColumns._ID }, PlaylistsColumns.NAME + "=?", new String[]{ name }, PlaylistsColumns.NAME); int id = -1; if (cursor != null) { cursor.moveToFirst(); if (!cursor.isAfterLast()) { id = cursor.getInt(0); } cursor.close(); cursor = null; } return id; }
/** * @param context The {@link Context} to use. * @param id The id of the playlist. * @return The name for a playlist. */ public static final String getNameForPlaylist(final Context context, final long id) { Cursor cursor = context.getContentResolver().query( MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, new String[]{PlaylistsColumns.NAME}, BaseColumns._ID + "=?", new String[]{Long.toString(id)}, null); if (cursor != null) { try { if (cursor.moveToFirst()) { return cursor.getString(0); } } finally { cursor.close(); } } // nothing found return null; }
public static void makeInsertItems(final long[] ids, final int offset, int len, final int base) { if (offset + len > ids.length) { len = ids.length - offset; } if (mContentValuesCache == null || mContentValuesCache.length != len) { mContentValuesCache = new ContentValues[len]; } for (int i = 0; i < len; i++) { if (mContentValuesCache[i] == null) { mContentValuesCache[i] = new ContentValues(); } mContentValuesCache[i].put(Playlists.Members.PLAY_ORDER, base + offset + i); mContentValuesCache[i].put(Playlists.Members.AUDIO_ID, ids[offset + i]); } }
/** * Gets the number of songs for a playlist * * @param context The {@link Context} to use. * @param playlistId the id of the playlist * @return the # of songs in the playlist */ public static final int getSongCountForPlaylist(final Context context, final long playlistId) { Cursor c = context.getContentResolver().query( MediaStore.Audio.Playlists.Members.getContentUri("external", playlistId), new String[]{BaseColumns._ID}, MusicUtils.MUSIC_ONLY_SELECTION, null, null); if (c != null) { int count = 0; if (c.moveToFirst()) { count = c.getCount(); } c.close(); c = null; return count; } return 0; }
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { if (Audio.Artists.CONTENT_TYPE.equals(mimeType)) { menu.setHeaderTitle(R.string.image_edit_artists); getMenuInflater().inflate(R.menu.music_context_artistimage, menu); } else if (Audio.Albums.CONTENT_TYPE.equals(mimeType)) { menu.setHeaderTitle(R.string.image_edit_albums); getMenuInflater().inflate(R.menu.music_context_albumimage, menu); } else if (Playlists.CONTENT_TYPE.equals(mimeType)) { menu.setHeaderTitle(R.string.image_edit_playlist); getMenuInflater().inflate(R.menu.music_context_playlist_genreimage, menu); } else{ menu.setHeaderTitle(R.string.image_edit_genre); getMenuInflater().inflate(R.menu.music_context_playlist_genreimage, menu); } }
public void onSearchWeb(){ String query = ""; if (Audio.Artists.CONTENT_TYPE.equals(mimeType)) { query = getArtist(); } else if (Audio.Albums.CONTENT_TYPE.equals(mimeType)) { query = getAlbum() + " " + getArtist(); } else if (Playlists.CONTENT_TYPE.equals(mimeType)) { query = bundle.getString(PLAYLIST_NAME); } else{ Long id = bundle.getLong(BaseColumns._ID); query = MusicUtils.parseGenreName(this, MusicUtils.getGenreName(this, id, true)); } final Intent googleSearch = new Intent(Intent.ACTION_WEB_SEARCH); googleSearch.putExtra(SearchManager.QUERY, query); startActivity(googleSearch); }
/** * @param cursor * @return */ public static long[] getSongListForCursor(Cursor cursor) { if (cursor == null) { return sEmptyList; } int len = cursor.getCount(); long[] list = new long[len]; cursor.moveToFirst(); int colidx = -1; try { colidx = cursor.getColumnIndexOrThrow(Audio.Playlists.Members.AUDIO_ID); } catch (IllegalArgumentException ex) { colidx = cursor.getColumnIndexOrThrow(BaseColumns._ID); } for (int i = 0; i < len; i++) { list[i] = cursor.getLong(colidx); cursor.moveToNext(); } return list; }
/** * @param context * @param name * @return */ public static long createPlaylist(Context context, String name) { if (name != null && name.length() > 0) { ContentResolver resolver = context.getContentResolver(); String[] cols = new String[] { PlaylistsColumns.NAME }; String whereclause = PlaylistsColumns.NAME + " = '" + name + "'"; Cursor cur = resolver.query(Audio.Playlists.EXTERNAL_CONTENT_URI, cols, whereclause, null, null); if (cur.getCount() <= 0) { ContentValues values = new ContentValues(1); values.put(PlaylistsColumns.NAME, name); Uri uri = resolver.insert(Audio.Playlists.EXTERNAL_CONTENT_URI, values); return Long.parseLong(uri.getLastPathSegment()); } return -1; } return -1; }
/** * @param context * @return */ public static long getFavoritesId(Context context) { long favorites_id = -1; String favorites_where = PlaylistsColumns.NAME + "='" + "Favorites" + "'"; String[] favorites_cols = new String[] { BaseColumns._ID }; Uri favorites_uri = Audio.Playlists.EXTERNAL_CONTENT_URI; Cursor cursor = query(context, favorites_uri, favorites_cols, favorites_where, null, null); if (cursor.getCount() <= 0) { favorites_id = createPlaylist(context, "Favorites"); } else { cursor.moveToFirst(); favorites_id = cursor.getLong(0); cursor.close(); } return favorites_id; }
/** * @param ids * @param offset * @param len * @param base */ private static void makeInsertItems(long[] ids, int offset, int len, int base) { // adjust 'len' if would extend beyond the end of the source array if (offset + len > ids.length) { len = ids.length - offset; } // allocate the ContentValues array, or reallocate if it is the wrong // size if (sContentValuesCache == null || sContentValuesCache.length != len) { sContentValuesCache = new ContentValues[len]; } // fill in the ContentValues array with the right values for this pass for (int i = 0; i < len; i++) { if (sContentValuesCache[i] == null) { sContentValuesCache[i] = new ContentValues(); } sContentValuesCache[i].put(Playlists.Members.PLAY_ORDER, base + offset + i); sContentValuesCache[i].put(Playlists.Members.AUDIO_ID, ids[offset + i]); } }
/** * @param context * @param id */ public static void removeFromFavorites(Context context, long id) { long favorites_id; if (id < 0) { } else { ContentResolver resolver = context.getContentResolver(); String favorites_where = PlaylistsColumns.NAME + "='" + PLAYLIST_NAME_FAVORITES + "'"; String[] favorites_cols = new String[] { BaseColumns._ID }; Uri favorites_uri = Audio.Playlists.EXTERNAL_CONTENT_URI; Cursor cursor = resolver.query(favorites_uri, favorites_cols, favorites_where, null, null); if (cursor.getCount() <= 0) { favorites_id = createPlaylist(context, PLAYLIST_NAME_FAVORITES); } else { cursor.moveToFirst(); favorites_id = cursor.getLong(0); cursor.close(); } Uri uri = Playlists.Members.getContentUri(EXTERNAL, favorites_id); resolver.delete(uri, Playlists.Members.AUDIO_ID + "=" + id, null); } }
/** * @param playlist_id * @return playlist name */ public static String getPlaylistName(Context mContext, long playlist_id) { String where = BaseColumns._ID + "=" + playlist_id; String[] cols = new String[] { PlaylistsColumns.NAME }; Uri uri = Audio.Playlists.EXTERNAL_CONTENT_URI; Cursor cursor = mContext.getContentResolver().query(uri, cols, where, null, null); if (cursor == null){ return ""; } if (cursor.getCount() <= 0) return ""; cursor.moveToFirst(); String name = cursor.getString(0); cursor.close(); return name; }
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { if (Audio.Artists.CONTENT_TYPE.equals(mimeType)) { menu.setHeaderTitle(R.string.image_edit_artists); getMenuInflater().inflate(R.menu.context_artistimage, menu); } else if (Audio.Albums.CONTENT_TYPE.equals(mimeType)) { menu.setHeaderTitle(R.string.image_edit_albums); getMenuInflater().inflate(R.menu.context_albumimage, menu); } else if (Audio.Playlists.CONTENT_TYPE.equals(mimeType)) { menu.setHeaderTitle(R.string.image_edit_playlist); getMenuInflater().inflate(R.menu.context_playlist_genreimage, menu); } else{ menu.setHeaderTitle(R.string.image_edit_genre); getMenuInflater().inflate(R.menu.context_playlist_genreimage, menu); } }
public void onSearchWeb(){ String query = ""; if (Audio.Artists.CONTENT_TYPE.equals(mimeType)) { query = getArtist(); } else if (Audio.Albums.CONTENT_TYPE.equals(mimeType)) { query = getAlbum() + " " + getArtist(); } else if (Audio.Playlists.CONTENT_TYPE.equals(mimeType)) { query = bundle.getString(PLAYLIST_NAME); } else{ Long id = bundle.getLong(BaseColumns._ID); query = MusicUtils.parseGenreName(this, MusicUtils.getGenreName(this, id, true)); } final Intent googleSearch = new Intent(Intent.ACTION_WEB_SEARCH); googleSearch.putExtra(SearchManager.QUERY, query); startActivity(googleSearch); }
/** * @param which */ private void removePlaylistItem(int which) { mCursor.moveToPosition(which); long id = mCursor.getLong(mMediaIdIndex); if (mPlaylistId >= 0) { Uri uri = Playlists.Members.getContentUri(EXTERNAL, mPlaylistId); getActivity().getContentResolver().delete(uri, Playlists.Members.AUDIO_ID + "=" + id, null); } else if (mPlaylistId == PLAYLIST_QUEUE) { MusicUtils.removeTrack(id); reloadQueueCursor(); } else if (mPlaylistId == PLAYLIST_FAVORITES) { MusicUtils.removeFromFavorites(getActivity(), id); } mListView.invalidateViews(); }
/** * Check if we're viewing the contents of a playlist */ public void isEditMode() { if (getArguments() != null) { String mimetype = getArguments().getString(MIME_TYPE); if (Audio.Playlists.CONTENT_TYPE.equals(mimetype)) { mPlaylistId = getArguments().getLong(BaseColumns._ID); switch ((int)mPlaylistId) { case (int)PLAYLIST_QUEUE: mEditMode = true; break; case (int)PLAYLIST_FAVORITES: mEditMode = true; break; default: if (mPlaylistId > 0) { mEditMode = true; } break; } } } }
/** * Returns The ID for a playlist. * * @param context The {@link Context} to use. * @param name The name of the playlist. * @return The ID for a playlist. */ public static long getIdForPlaylist(final Context context, final String name) { Cursor cursor = context.getContentResolver().query( MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, new String[] { BaseColumns._ID }, PlaylistsColumns.NAME + "=?", new String[] { name }, PlaylistsColumns.NAME); int id = -1; if (cursor != null) { cursor.moveToFirst(); if (!cursor.isAfterLast()) { id = cursor.getInt(0); } cursor.close(); cursor = null; } return id; }
/** * @param context The {@link Context} to use. * @param name The name of the new playlist. * @return A new playlist ID. */ public static long createPlaylist(final Context context, final String name) { if (name != null && name.length() > 0) { final ContentResolver resolver = context.getContentResolver(); final String[] projection = new String[] { PlaylistsColumns.NAME }; final String selection = PlaylistsColumns.NAME + " = '" + name + "'"; Cursor cursor = resolver.query(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, projection, selection, null, null); int count = 1; if (cursor != null) { count = cursor.getCount(); cursor.close(); } if (count <= 0) { final ContentValues values = new ContentValues(1); values.put(PlaylistsColumns.NAME, name); final Uri uri = resolver.insert(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, values); return Long.parseLong(uri.getLastPathSegment()); } return -1; } return -1; }
/** * @param context The {@link Context} to use. * @param ids The id of the song(s) to add. * @param playlistid The id of the playlist being added to. */ public static void addToPlaylist(final Activity context, final long[] ids, final long playlistid) { final int size = ids.length; final ContentResolver resolver = context.getContentResolver(); final String[] projection = new String[] { "count(*)" }; final Uri uri = MediaStore.Audio.Playlists.Members.getContentUri("external", playlistid); Cursor cursor = resolver.query(uri, projection, null, null, null); cursor.moveToFirst(); final int base = cursor.getInt(0); cursor.close(); cursor = null; int numinserted = 0; for (int offSet = 0; offSet < size; offSet += 1000) { makeInsertItems(ids, offSet, 1000, base); numinserted += resolver.bulkInsert(uri, mContentValuesCache); } final String message = context.getResources().getQuantityString( R.plurals.NNNtrackstoplaylist, numinserted, numinserted); Toast.makeText((Activity) context, message, Toast.LENGTH_LONG).show(); context.getContentResolver().notifyChange(Uris.EXTERNAL_MEDIASTORE_PLAYLISTS, null); }
/** * Returns The ID for a playlist. * * @param context The {@link Context} to use. * @param name The name of the playlist. * @return The ID for a playlist. */ public static final long getIdForPlaylist(final Context context, final String name) { Cursor cursor = context.getContentResolver().query( MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, new String[] { BaseColumns._ID }, PlaylistsColumns.NAME + "=?", new String[] { name }, PlaylistsColumns.NAME); int id = -1; if (cursor != null) { cursor.moveToFirst(); if (!cursor.isAfterLast()) { id = cursor.getInt(0); } cursor.close(); cursor = null; } return id; }
/** * @param context The {@link Context} to use. * @param name The name of the new playlist. * @return A new playlist ID. */ public static final long createPlaylist(final Context context, final String name) { if (name != null && name.length() > 0) { final ContentResolver resolver = context.getContentResolver(); final String[] projection = new String[] { PlaylistsColumns.NAME }; final String selection = PlaylistsColumns.NAME + " = '" + name + "'"; Cursor cursor = resolver.query(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, projection, selection, null, null); if (cursor.getCount() <= 0) { final ContentValues values = new ContentValues(1); values.put(PlaylistsColumns.NAME, name); final Uri uri = resolver.insert(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, values); return Long.parseLong(uri.getLastPathSegment()); } if (cursor != null) { cursor.close(); cursor = null; } return -1; } return -1; }
/** * @param context The {@link Context} to use. * @param ids The id of the song(s) to add. * @param playlistid The id of the playlist being added to. */ public static void addToPlaylist(final Context context, final long[] ids, final long playlistid) { final int size = ids.length; final ContentResolver resolver = context.getContentResolver(); final String[] projection = new String[] { "count(*)" }; final Uri uri = MediaStore.Audio.Playlists.Members.getContentUri("external", playlistid); Cursor cursor = resolver.query(uri, projection, null, null, null); cursor.moveToFirst(); final int base = cursor.getInt(0); cursor.close(); cursor = null; int numinserted = 0; for (int offSet = 0; offSet < size; offSet += 1000) { makeInsertItems(ids, offSet, 1000, base); numinserted += resolver.bulkInsert(uri, mContentValuesCache); } final String message = context.getResources().getQuantityString( R.plurals.NNNtrackstoplaylist, numinserted, numinserted); Crouton.makeText((Activity)context, message, Crouton.STYLE_CONFIRM).show(); }
/** * @param context The {@link Context} to sue * @param playlistId The playlist Id * @return The track list for a playlist */ public static final long[] getSongListForPlaylist(final Context context, final String 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; }
private void getColumnIndices(Cursor cursor) { if (cursor != null) { mTitleIdx = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE); mArtistIdx = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST); mDurationIdx = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION); try { mAudioIdIdx = cursor.getColumnIndexOrThrow( MediaStore.Audio.Playlists.Members.AUDIO_ID); } catch (IllegalArgumentException ex) { mAudioIdIdx = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID); } if (mIndexer != null) { mIndexer.setCursor(cursor); } else if (!mActivity.mEditMode && mActivity.mAlbumId == null) { String alpha = mActivity.getString(R.string.fast_scroll_alphabet); mIndexer = new MusicAlphabetIndexer(cursor, mTitleIdx, alpha); } } }