0

J'essaie de faire une application de lecteur de musique.Comment extraire songart (AlbumArt) de la mémoire interne et externe de l'appareil?

Je veux une liste avec une image de la chanson et le nom de la chanson et de l'artiste.

Quelque chose comme ça.

enter image description here

J'ai compris le songName et songtitle en utilisant le contenu du résolveur, mais je ne sais pas comment afficher l'art respectif de cette chanson.

Voici ma ListSong.java qui est utilisée pour récupérer des chansons de l'appareil.

public class ListSong extends Fragment { 

    private ArrayList<Song> songList; 
    private ListView songView; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.listsongs, container, false); 

     songView = (ListView)rootView.findViewById(R.id.songsList); 
     songList = new ArrayList<Song>(); 

     getSongList(); 

     SongAdapter songAdt = new SongAdapter(getActivity(), songList); 
     songView.setAdapter(songAdt); 

     return rootView; 

    } 

    public void getSongList(){ 
     ContentResolver musicResolver = getActivity().getContentResolver(); 
     Uri musicUri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 
     Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null); 
     if(musicCursor!=null && musicCursor.moveToFirst()){ 
      //get columns 
      int titleColumn = musicCursor.getColumnIndex 
        (android.provider.MediaStore.Audio.Media.TITLE); 
      int idColumn = musicCursor.getColumnIndex 
        (android.provider.MediaStore.Audio.Media._ID); 
      int artistColumn = musicCursor.getColumnIndex 
        (android.provider.MediaStore.Audio.Media.ARTIST); 
      //add songs to list 
      do { 
       long thisId = musicCursor.getLong(idColumn); 
       String thisTitle = musicCursor.getString(titleColumn); 
       String thisArtist = musicCursor.getString(artistColumn); 
       songList.add(new Song(thisId, thisTitle, thisArtist)); 
      } 
      while (musicCursor.moveToNext()); 
     } 
    } 

} 

Un voici mon SongInfo (Song.java) Classe

public class Song { 

    private long id; 
    private String title; 
    private String artist; 

    public Song(long songID, String songTitle, String songArtist) { 
     this.id = songID; 
     this.title = songTitle; 
     this.artist = songArtist; 
    } 

    public long getID(){return id;} 
    public String getTitle(){return title;} 
    public String getArtist(){return artist;} 

} 

Je veux juste s'il y a un moyen de chercher songart respectifs à leurs chansons.

Répondre

0

Essayez avec le code suivant pour obtenir Art Song:

ContentResolver musicResolver = getContentResolver(); 
Uri musicUri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 
Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null); 
int albumIDColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID); 
long thisAlbumID = musicCursor.getLong(albumIDColumn); 
Cursor cursor = musicResolver.query(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, 
         new String[]{MediaStore.Audio.Albums._ID, MediaStore.Audio.Albums.ALBUM_ART}, 
         MediaStore.Audio.Albums._ID + "=?", 
         new String[]{String.valueOf(thisAlbumID)}, 
         null);   
String imagePath = ""; 
if (cursor.moveToFirst()) { 
    imagePath = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Albums.ALBUM_ART)); 
} 
+0

Dois-je modifier également la classe chanson car il stocke la chanson info. –

+0

Oui, vous devez modifier votre classe de bean en ajoutant un nouveau paramètre. – Gaurav

+0

Hey Désolé de déranger, mais je suis un débutant dans ce domaine, pouvez-vous juste écrire le code pour le Content Resolver et la classe Song comme je l'ai écrit dans ma question, Si vous avez le temps. –