/** * Returns the ID for an album. * * @param context The {@link Context} to use. * @param albumName The name of the album. * @param artistName The name of the artist * @return The ID for an album. */ public static final long getIdForAlbum(final Context context, final String albumName, final String artistName) { Cursor cursor = context.getContentResolver().query( MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, new String[]{ BaseColumns._ID }, AlbumColumns.ALBUM + "=? AND " + AlbumColumns.ARTIST + "=?", new String[]{ albumName, artistName }, AlbumColumns.ALBUM); 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 album. * @return The song count for an album. */ public static final int getSongCountForAlbumInt(final Context context, final long id) { int songCount = 0; if (id == -1) { return songCount; } Uri uri = ContentUris.withAppendedId(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, id); Cursor cursor = context.getContentResolver().query(uri, new String[]{AlbumColumns.NUMBER_OF_SONGS}, null, null, null); if (cursor != null) { cursor.moveToFirst(); if (!cursor.isAfterLast()) { if (!cursor.isNull(0)) { songCount = cursor.getInt(0); } } cursor.close(); cursor = null; } return songCount; }
/** * @param context The {@link Context} to use. * @param id The id of the album. * @return The release date for an album. */ public static final String getReleaseDateForAlbum(final Context context, final long id) { if (id == -1) { return null; } Uri uri = ContentUris.withAppendedId(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, id); Cursor cursor = context.getContentResolver().query(uri, new String[]{ AlbumColumns.FIRST_YEAR }, null, null, null); String releaseDate = null; if (cursor != null) { cursor.moveToFirst(); if (!cursor.isAfterLast()) { releaseDate = cursor.getString(0); } cursor.close(); cursor = null; } return releaseDate; }
/** * Create a Search Chooser */ public static void doSearch(Context mContext, Cursor mCursor, String Type) { CharSequence title = null; Intent i = new Intent(); i.setAction(MediaStore.INTENT_ACTION_MEDIA_SEARCH); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); String query = ""; if ( Type == TYPE_ALBUM ){ query = mCursor.getString(mCursor.getColumnIndexOrThrow(AlbumColumns.ALBUM)); } else if( Type == TYPE_ARTIST ){ query = mCursor.getString(mCursor.getColumnIndexOrThrow(ArtistColumns.ARTIST)); } else if( Type == TYPE_GENRE || Type == TYPE_PLAYLIST || Type == TYPE_SONG ){ query = mCursor.getString(mCursor.getColumnIndexOrThrow(MediaColumns.TITLE)); } title = ""; i.putExtra("", query); title = title + " " + query; title = "Search " + title; i.putExtra(SearchManager.QUERY, query); mContext.startActivity(Intent.createChooser(i, title)); }
/** * Returns the ID for an album. * * @param context The {@link Context} to use. * @param albumName The name of the album. * @param artistName The name of the artist * @return The ID for an album. */ public static long getIdForAlbum(final Context context, final String albumName, final String artistName) { Cursor cursor = context.getContentResolver().query( MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, new String[] { BaseColumns._ID }, AlbumColumns.ALBUM + "=? AND " + AlbumColumns.ARTIST + "=?", new String[] { albumName, artistName }, AlbumColumns.ALBUM); int id = -1; if (cursor != null) { cursor.moveToFirst(); if (!cursor.isAfterLast()) { id = cursor.getInt(0); } cursor.close(); cursor = null; } return id; }
/** * Returns the ID for an album. * * @param context The {@link Context} to use. * @param name The name of the album. * @return The ID for an album. */ public static final long getIdForAlbum(final Context context, final String name) { Cursor cursor = context.getContentResolver().query( MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, new String[] { BaseColumns._ID }, AlbumColumns.ALBUM + "=?", new String[] { name }, AlbumColumns.ALBUM); int id = -1; if (cursor != null) { cursor.moveToFirst(); if (!cursor.isAfterLast()) { id = cursor.getInt(0); } cursor.close(); cursor = null; } return id; }
/** * Returns the artist name for a album. * * @param context The {@link Context} to use. * @param name The name of the album. * @return The artist for an album. */ public static final String getAlbumArtist(final Context context, final String name) { Cursor cursor = context.getContentResolver().query( MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, new String[] { AlbumColumns.ARTIST }, AlbumColumns.ALBUM + "=?", new String[] { name }, AlbumColumns.ALBUM); String artistName = null; if (cursor != null) { cursor.moveToFirst(); if (!cursor.isAfterLast()) { artistName = cursor.getString(0); } cursor.close(); cursor = null; } return artistName; }
/** * @param context The {@link Context} to use. * @param name The name of the album. * @return The song count for an album. */ public static final String getSongCountForAlbum(final Context context, final String name) { if (name == null) { return null; } Cursor cursor = context.getContentResolver().query( MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, new String[] { AlbumColumns.NUMBER_OF_SONGS }, AlbumColumns.ALBUM + "=?", new String[] { name }, AlbumColumns.ALBUM); String songCount = null; if (cursor != null) { cursor.moveToFirst(); if (!cursor.isAfterLast()) { songCount = cursor.getString(0); } cursor.close(); cursor = null; } return songCount; }
/** * @param context The {@link Context} to use. * @param name The name of the album. * @return The release date for an album. */ public static final String getReleaseDateForAlbum(final Context context, final String name) { if (name == null) { return null; } Cursor cursor = context.getContentResolver().query( MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, new String[] { AlbumColumns.FIRST_YEAR }, AlbumColumns.ALBUM + "=?", new String[] { name }, AlbumColumns.ALBUM); String releaseDate = null; if (cursor != null) { cursor.moveToFirst(); if (!cursor.isAfterLast()) { releaseDate = cursor.getString(0); } cursor.close(); cursor = null; } return releaseDate; }
/** * @param context The {@link Context} to use. * @param artistId The Id of the artist the albums belong to. */ public static final Cursor makeArtistAlbumCursor(final Context context, final Long artistId) { return context.getContentResolver().query( MediaStore.Audio.Artists.Albums.getContentUri("external", artistId), new String[] { /* 0 */ BaseColumns._ID, /* 1 */ AlbumColumns.ALBUM, /* 2 */ AlbumColumns.ARTIST, /* 3 */ AlbumColumns.NUMBER_OF_SONGS, /* 4 */ AlbumColumns.FIRST_YEAR }, null, null, PreferenceUtils.getInstace(context).getArtistAlbumSortOrder()); }
/** * Creates the {@link Cursor} used to run the query. * * @param context The {@link Context} to use. * @return The {@link Cursor} used to run the album query. */ public static final Cursor makeAlbumCursor(final Context context) { return context.getContentResolver().query(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, new String[] { /* 0 */ BaseColumns._ID, /* 1 */ AlbumColumns.ALBUM, /* 2 */ AlbumColumns.ARTIST, /* 3 */ AlbumColumns.NUMBER_OF_SONGS, /* 4 */ AlbumColumns.FIRST_YEAR }, null, null, PreferenceUtils.getInstace(context).getAlbumSortOrder()); }
public String getAlbumArtistName() { synchronized (this) { if (mAlbumCursor == null) { return null; } return mAlbumCursor.getString(mAlbumCursor.getColumnIndexOrThrow(AlbumColumns.ARTIST)); } }
/** * @return A custom ContextMenu header */ public static View setHeaderLayout(String Type, Cursor cursor, Activity activity) { LayoutInflater inflater = activity.getLayoutInflater(); View header = inflater.inflate(R.layout.music_context_menu_header, null, false); // Artist image final ImageView mHanderImage = (ImageView)header.findViewById(R.id.header_image); String albumId="",artistName="",albumName=""; if(Type == TYPE_ALBUM){ albumName = cursor.getString(cursor.getColumnIndexOrThrow(AlbumColumns.ALBUM)); artistName = cursor.getString(cursor.getColumnIndexOrThrow(AlbumColumns.ARTIST)); albumId = cursor.getString(cursor.getColumnIndexOrThrow(BaseColumns._ID)); } else{ artistName = cursor.getString(cursor.getColumnIndexOrThrow(ArtistColumns.ARTIST)); } ImageInfo mInfo = new ImageInfo(); mInfo.type = Type; mInfo.size = SIZE_THUMB; mInfo.source = SRC_FIRST_AVAILABLE; mInfo.data = (Type == TYPE_ALBUM ? new String[]{ albumId , artistName, albumName } : new String[]{ artistName}); ImageProvider.getInstance(activity).loadImage( mHanderImage, mInfo ); // Set artist name TextView headerText = (TextView)header.findViewById(R.id.header_text); headerText.setText( (Type == TYPE_ALBUM ? albumName : artistName)); headerText.setBackgroundColor((activity).getResources().getColor(R.color.transparent_black)); return header; }
@Override public Cursor loadInBackground() { Cursor mediaCursor = getContext().getContentResolver().query(mUri, mProjection, mSelection, mSelectionArgs, mSortOrder); //Get cursor filled with Audio Id's String [] projection = new String[] { BaseColumns._ID, AlbumColumns.ALBUM }; Uri uri = Audio.Albums.EXTERNAL_CONTENT_URI; String sortOrder = Audio.Albums.DEFAULT_SORT_ORDER; Cursor albumCursor = getContext().getContentResolver().query(uri, projection, null, null, sortOrder); //Matrix cursor to hold final data to be returned to calling context MatrixCursor cursor = new MatrixCursor( new String[] { BaseColumns._ID, MediaColumns.TITLE, AudioColumns.ARTIST, AudioColumns.ALBUM, AudioColumns.ALBUM_ID}); //Map data from Audio Id cursor to the ALbumName Colum ContentQueryMap mQueryMap = new ContentQueryMap(albumCursor, AlbumColumns.ALBUM, false, null); Map<String, ContentValues> data = mQueryMap.getRows(); if (mediaCursor != null) { while(mediaCursor.moveToNext()) { String id = mediaCursor.getString(mediaCursor.getColumnIndexOrThrow(BaseColumns._ID)); String title = mediaCursor.getString(mediaCursor.getColumnIndexOrThrow(MediaColumns.TITLE)); String artist = mediaCursor.getString(mediaCursor.getColumnIndexOrThrow(AudioColumns.ARTIST)); String album = mediaCursor.getString(mediaCursor.getColumnIndexOrThrow(AudioColumns.ALBUM)); ContentValues tData = data.get(album); String albumid = (String) tData.get(BaseColumns._ID); cursor.addRow(new String[] {id, title, artist, album, albumid}); } mediaCursor.close(); } if (cursor != null) { // Ensure the cursor window is filled registerContentObserver(cursor, mObserver); } return cursor; }
public void setupFragmentData(){ mAdapter = new AlbumAdapter(getActivity(), R.layout.music_gridview_items, null, new String[] {}, new int[] {}, 0); mProjection = new String []{ BaseColumns._ID, AlbumColumns.ALBUM, AlbumColumns.ARTIST, AlbumColumns.ALBUM_ART }; mUri = Audio.Albums.EXTERNAL_CONTENT_URI; mSortOrder = Audio.Albums.DEFAULT_SORT_ORDER; mFragmentGroupId = 2; mType = TYPE_ALBUM; }
public void setupFragmentData(){ mAdapter =new ArtistAlbumAdapter(getActivity(), R.layout.music_listview_items, null, new String[] {}, new int[] {}, 0); mProjection = new String[] { BaseColumns._ID, AlbumColumns.ALBUM, AlbumColumns.NUMBER_OF_SONGS, AlbumColumns.ARTIST }; mSortOrder = Audio.Albums.DEFAULT_SORT_ORDER; long artistId = getArguments().getLong((BaseColumns._ID)); mUri = Audio.Artists.Albums.getContentUri(EXTERNAL, artistId); mFragmentGroupId = 7; mType = TYPE_ALBUM; }
public void setupViewData(Cursor mCursor){ mLineOneText = mCursor.getString(mCursor.getColumnIndexOrThrow(AlbumColumns.ALBUM)); mLineTwoText = mCursor.getString(mCursor.getColumnIndexOrThrow(AlbumColumns.ARTIST)); mGridType = TYPE_ALBUM; mImageData = new String[]{ mCursor.getString(mCursor.getColumnIndexOrThrow(BaseColumns._ID)) , mLineTwoText, mLineOneText }; mPlayingId = MusicUtils.getCurrentAlbumId(); mCurrentId = mCursor.getLong(mCursor.getColumnIndexOrThrow(BaseColumns._ID)); }
public void setupViewData( Cursor mCursor ){ mLineOneText = mCursor.getString(mCursor.getColumnIndexOrThrow(AlbumColumns.ALBUM)); int songs_plural = mCursor.getInt(mCursor.getColumnIndexOrThrow(AlbumColumns.NUMBER_OF_SONGS)); mLineTwoText =MusicUtils.makeAlbumsLabel(mContext, 0, songs_plural, true ); String artistName = mCursor.getString(mCursor.getColumnIndexOrThrow(AlbumColumns.ARTIST)); String albumId = mCursor.getString(mCursor.getColumnIndexOrThrow(BaseColumns._ID)); mImageData = new String[]{ albumId , artistName, mLineOneText }; mPlayingId = MusicUtils.getCurrentAlbumId(); mCurrentId = Long.parseLong(albumId); mListType = TYPE_ALBUM; }
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { super.onItemClick(parent, view, position, id); songsView.query(Media.EXTERNAL_CONTENT_URI, AlbumColumns.ALBUM_KEY + " = '" + getLastSelectedName() + "'"); getFlipper().setInAnimation(getContext(), R.anim.slide_in_left); getFlipper().setOutAnimation(getContext(), R.anim.slide_out_left); getFlipper().showNext(); }
/** * @return A custom ContextMenu header */ public static View setHeaderLayout(String Type, Cursor cursor, Activity activity) { LayoutInflater inflater = activity.getLayoutInflater(); View header = inflater.inflate(R.layout.context_menu_header, null, false); // Artist image final ImageView mHanderImage = (ImageView)header.findViewById(R.id.header_image); String albumId="",artistName="",albumName=""; if(Type == TYPE_ALBUM){ albumName = cursor.getString(cursor.getColumnIndexOrThrow(AlbumColumns.ALBUM)); artistName = cursor.getString(cursor.getColumnIndexOrThrow(AlbumColumns.ARTIST)); albumId = cursor.getString(cursor.getColumnIndexOrThrow(BaseColumns._ID)); } else{ artistName = cursor.getString(cursor.getColumnIndexOrThrow(ArtistColumns.ARTIST)); } ImageInfo mInfo = new ImageInfo(); mInfo.type = Type; mInfo.size = SIZE_THUMB; mInfo.source = SRC_FIRST_AVAILABLE; mInfo.data = (Type == TYPE_ALBUM ? new String[]{ albumId , artistName, albumName } : new String[]{ artistName}); ImageProvider.getInstance(activity).loadImage( mHanderImage, mInfo ); // Set artist name TextView headerText = (TextView)header.findViewById(R.id.header_text); headerText.setText( (Type == TYPE_ALBUM ? albumName : artistName)); headerText.setBackgroundColor((activity).getResources().getColor(R.color.transparent_black)); return header; }
/** * @param mContext * @param album_id * @param default_name * @return album name */ public static String getAlbumName(Context mContext, long album_id, boolean default_name) { String where = BaseColumns._ID + "=" + album_id; String[] cols = new String[] { AlbumColumns.ALBUM }; Uri uri = Audio.Albums.EXTERNAL_CONTENT_URI; Cursor cursor = mContext.getContentResolver().query(uri, cols, where, null, null); if (cursor == null){ return MediaStore.UNKNOWN_STRING; } if (cursor.getCount() <= 0) { if (default_name) return mContext.getString(R.string.unknown); else return MediaStore.UNKNOWN_STRING; } else { cursor.moveToFirst(); String name = cursor.getString(0); cursor.close(); if (name == null || MediaStore.UNKNOWN_STRING.equals(name)) { if (default_name) return mContext.getString(R.string.unknown); else return MediaStore.UNKNOWN_STRING; } return name; } }
public void setupFragmentData(){ mAdapter = new AlbumAdapter(getActivity(), R.layout.gridview_items, null, new String[] {}, new int[] {}, 0); mProjection = new String []{ BaseColumns._ID, AlbumColumns.ALBUM, AlbumColumns.ARTIST, AlbumColumns.ALBUM_ART }; mUri = Audio.Albums.EXTERNAL_CONTENT_URI; mSortOrder = Audio.Albums.DEFAULT_SORT_ORDER; mFragmentGroupId = 2; mType = TYPE_ALBUM; }
public void setupFragmentData(){ mAdapter =new ArtistAlbumAdapter(getActivity(), R.layout.listview_items, null, new String[] {}, new int[] {}, 0); mProjection = new String[] { BaseColumns._ID, AlbumColumns.ALBUM, AlbumColumns.NUMBER_OF_SONGS, AlbumColumns.ARTIST }; mSortOrder = Audio.Albums.DEFAULT_SORT_ORDER; long artistId = getArguments().getLong((BaseColumns._ID)); mUri = Audio.Artists.Albums.getContentUri(EXTERNAL, artistId); mFragmentGroupId = 7; mType = TYPE_ALBUM; }
@Override public Loader<Cursor> onCreateLoader(int id, Bundle args) { String[] projection = { BaseColumns._ID, AlbumColumns.ALBUM, AlbumColumns.ARTIST, AlbumColumns.ALBUM_ART }; Uri uri = Audio.Albums.EXTERNAL_CONTENT_URI; String sortOrder = Audio.Albums.DEFAULT_SORT_ORDER; return new CursorLoader(getActivity(), uri, projection, null, null, sortOrder); }
@Override public void onLoadFinished(Loader<Cursor> loader, Cursor data) { // Check for database errors if (data == null) { return; } mAlbumIdIndex = data.getColumnIndexOrThrow(BaseColumns._ID); mAlbumNameIndex = data.getColumnIndexOrThrow(AlbumColumns.ALBUM); mArtistNameIndex = data.getColumnIndexOrThrow(AlbumColumns.ARTIST); mAlbumAdapter.changeCursor(data); mCursor = data; }
@Override public Loader<Cursor> onCreateLoader(int id, Bundle args) { String[] projection = { BaseColumns._ID, AlbumColumns.ALBUM, AlbumColumns.NUMBER_OF_SONGS, AlbumColumns.ARTIST }; if (getArguments() != null) { long artistId = getArguments().getLong((BaseColumns._ID)); Uri uri = Audio.Artists.Albums.getContentUri(EXTERNAL, artistId); String sortOrder = Audio.Albums.DEFAULT_SORT_ORDER; return new CursorLoader(getActivity(), uri, projection, null, null, sortOrder); } return null; }
@Override public void onLoadFinished(Loader<Cursor> loader, Cursor data) { // Check for database errors if (data == null) { return; } mAlbumIdIndex = data.getColumnIndexOrThrow(BaseColumns._ID); mAlbumNameIndex = data.getColumnIndexOrThrow(AlbumColumns.ALBUM); mSongCountIndex = data.getColumnIndexOrThrow(AlbumColumns.NUMBER_OF_SONGS); mArtistNameIndex = data.getColumnIndexOrThrow(AlbumColumns.ARTIST); mArtistAlbumAdapter.changeCursor(data); mCursor = data; }