Get Album Art With Album Name Android

后端 未结 2 926
长发绾君心
长发绾君心 2020-12-08 05:46

I want to display album art with album name in listview. But i am not getting the way to display album art. I have tried from cover art on android.

Here is my Code :

相关标签:
2条回答
  • 2020-12-08 06:28

    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);
            }
    
    0 讨论(0)
  • 2020-12-08 06:43

    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();
            }
    
        }
    
    0 讨论(0)
提交回复
热议问题