0

음악 플레이어 앱을 만들려고합니다.장치의 내부 및 외부 저장 장치에서 송어 (앨범 아트)를 가져 오는 방법은 무엇입니까?

노래의 이미지와 노래 제목 및 아티스트 이름이 포함 된 목록보기를 원합니다.

이와 비슷한 것.

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

} 

는 여기에 내가 그들의 노래를 각각 songart를 ​​가져올 수있는 방법이 있다면 원하는 내 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;} 

} 

입니다.

답변

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

예 새로운 하나의 매개 변수가 추가됨에 따라 빈 클래스를 변경해야합니다. – Gaurav

+0

안녕하세요. 불편을 끼쳐 드려 죄송 합니다만,이 문제의 초보자입니다. 콘텐츠 리졸버 및 송 클래스 용 코드를 작성할 수 있습니까? 질문이 있으시면 시간이 있으십니까? –

관련 문제