Get Album Art With Album Name Android

跟風遠走 提交于 2019-11-28 05:08:59
Mohd Mufiz

use Below Code to get album art with song information. you can change slightly to display only album names instead of songs list.

 public class BrowseAudioActivity extends Activity implements
            AppConstants {
        private Context context;
        private ArrayList<AudioListModel> audioArrayList = new ArrayList<AudioListModel>();
        private AudioListAdapter audioListAdapter;
        private ListView audioListView;



/** Called when the activity is first created. */
        @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();
        }

    }

Very Simple code to get ALBUM_ART. Always remember you should have read storage permission.

        final Uri uri = MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI;

        final Cursor cursor = getContentResolver().query(uri, null, null, null, null);
        while (cursor.moveToNext()) {
            final String artist = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Albums.ARTIST));
            final String album = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Albums.ALBUM));
            final String albumart = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Albums.ALBUM_ART));
            arrayList.add(artist);
        }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!