use the code below to get the album cover with information about the song. you can change a little to display only album names, not a list of tracks.
public class BrowseAudioActivity extends Activity implements AppConstants { private Context context; private ArrayList<AudioListModel> audioArrayList = new ArrayList<AudioListModel>(); private AudioListAdapter audioListAdapter; private ListView audioListView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); setContentView(R.layout.audio_list); UtilityClass.addActivityToStack(this); context = this; audioListView = (ListView) findViewById(R.id.list_audio); new GetAudioListAsynkTask(context).execute((Void) null); } private void initLayout() { final Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; final String[] cursor_cols = { MediaStore.Audio.Media._ID, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.ALBUM, MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.ALBUM_ID, MediaStore.Audio.Media.DURATION }; final String where = MediaStore.Audio.Media.IS_MUSIC + "=1"; final Cursor cursor = context.getContentResolver().query(uri, cursor_cols, where, null, null); while (cursor.moveToNext()) { String artist = cursor.getString(cursor .getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST)); String album = cursor.getString(cursor .getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM)); String track = cursor.getString(cursor .getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE)); String data = cursor.getString(cursor .getColumnIndexOrThrow(MediaStore.Audio.Media.DATA)); Long albumId = cursor.getLong(cursor .getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID)); int duration = cursor.getInt(cursor .getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION)); Uri sArtworkUri = Uri .parse("content://media/external/audio/albumart"); Uri albumArtUri = ContentUris.withAppendedId(sArtworkUri, albumId); Logger.debug(albumArtUri.toString()); Bitmap bitmap = null; try { bitmap = MediaStore.Images.Media.getBitmap( context.getContentResolver(), albumArtUri); bitmap = Bitmap.createScaledBitmap(bitmap, 30, 30, true); } catch (FileNotFoundException exception) { exception.printStackTrace(); bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.audio_file); } catch (IOException e) { e.printStackTrace(); } AudioListModel audioListModel = new AudioListModel(); audioListModel.setArtist(artist); audioListModel.setBitmap(bitmap); audioListModel.setAlbum(album); audioListModel.setTrack(track); audioListModel.setData(data); audioListModel.setAlbumId(albumId); audioListModel.setDuration(duration); audioListModel.setAlbumArtUri(albumArtUri); audioArrayList.add(audioListModel); } } public String getRealPathFromURI(Uri contentUri) { String[] proj = { MediaStore.Images.Media.DATA }; Cursor cursor = context.getContentResolver().query(contentUri, proj, null, null, null); int column_index = cursor .getColumnIndexOrThrow(MediaStore.Audio.Media.DATA); cursor.moveToFirst(); return cursor.getString(column_index); } private class GetAudioListAsynkTask extends AsyncTask<Void, Void, Boolean> { private Context context; private CustomProgressDialog progressDialog; public GetAudioListAsynkTask(Context context) { this.context = context; } @Override protected void onPreExecute() { progressDialog = new CustomProgressDialog(context, AUDIO_LOADING_HEADING, AUDIO_LOADING_MSG); progressDialog.setCancelable(false); progressDialog.show(); super.onPreExecute(); } @Override protected Boolean doInBackground(Void... params) { try { initLayout(); return true; } catch (Exception e) { return false; } } @Override protected void onPostExecute(Boolean result) { progressDialog.dismiss(); audioListAdapter = new AudioListAdapter(context, audioArrayList); audioListView.setAdapter(audioListAdapter); audioListView .setOnItemClickListener(new AudioListItemClickListener( context, audioArrayList)); } } @Override protected void onPause() { super.onPause(); overridePendingTransition(0, 0); } @Override protected void onDestroy() { super.onDestroy(); UtilityClass.removeActivityOnFinish(this); } @Override public void onBackPressed() { super.onBackPressed(); finish(); } }
source share