0

我正在嘗試製作音樂播放器應用程序。如何從設備的內部和外部存儲器中獲取songart(AlbumArt)?

我想要一個帶有歌曲圖像和歌名和歌手名字的列表視圖。

就是這樣。

enter image description here

我已經想通了SONGNAME和SONGTITLE使用內容解析器,但我不知道如何顯示歌曲的各自的藝術。

這是我的ListSong.java,它用於從設備獲取歌曲。

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()); 
     } 
    } 

} 

的,這裏是我SongInfo(Song.java)

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;} 

} 

我只是想,如果有任何的方式來各自songart獲取他們的歌。

回答

0

與下面的代碼試圖讓鬆藝:

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

如果我還因爲它存儲的歌曲信息編輯宋級。 –

+0

是的,你需要改變你的bean類作爲一個新的參數添加。 – Gaurav

+0

嘿對不起,但我是這個東西的初學者,你能否完全寫出內容解析器和宋課的代碼,就像我在我的問題中寫的一樣,如果你有時間的話。 –

相關問題