0

MediaStore의 각 앨범에 대한 앨범 아트 경로를 검색하려고합니다. 나는이처럼 내 커서를 검색 해요 : 고유 한 모든 앨범과 각각의 아티스트, 앨범 이름, ID 및 앨범 아트 경로가 유효한 커서를 반환MediaStore (및 Picasso)의 Android Album Art

String[] projection = new String[] {MediaStore.Audio.Albums._ID, 
            MediaStore.Audio.Albums.ALBUM_ART, 
            MediaStore.Audio.Albums.ALBUM, 
            MediaStore.Audio.Albums.ARTIST}; 

// Returns a new CursorLoader 
return new CursorLoader(getActivity(), 
         MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, 
         projection, 
         null, 
         null, 
         MediaStore.Audio.Albums.ALBUM + " ASC"); 

합니다. 그러나 앨범 아트 경로를 사용하는 방법을 알 수 없습니다. 나는 피카소에게이를 전달하기 위해 노력하고있어하지만 다시 오류가 발생합니다

/storage/emulated/0/Android/data/com.android.providers.media/albumthumbs/1420524553603 

: 여기가 ALBUM_ART 열에서 얻을 경로의 예입니다. 여기에 내가 그것을하고있어 방법은 다음과 같습니다

albumArtPath

Picasso.with(mContext).load(Uri.parseUri(albumArtPath)).into(imageView);

내가 (위 참조) 커서에서 얻는 경로입니다. 빈 ImageView로 끝나기 때문에 기본적으로 아무것도로드되지 않습니다. Picasso가 Mediastore 앨범 아트 경로로 작업하게하려면 어떻게해야합니까?

답변

3

URI가 아닌 파일 경로입니다.

이들 중 어떤 작동합니다 :

Picasso.with(mContext).load(new File(albumArtPath)).into(imageView); 
Picasso.with(mContext).load(Uri.parse("file://" + albumArtPath)).into(imageView); 
Picasso.with(mContext).load(Uri.fromFile(new File(albumArtPath))).into(imageView); 
+0

이가 OP의 문제를 해결해야하는 이유에 귀하의 게시물에 몇 가지 설명을 추가시겠습니까? 감사! – hichris123

+0

어, 그건 파일 경로이지 ​​URI가 아니기 때문입니다. 나는 실제로'Uri.parseUri'가 무엇인지 확신하지 못합니다. Uri 클래스의 표준 구현은 분명하지 않습니다. 다른 해결책은 'Picasso.with (this) .load (Uri.parse ("file : //"+ albumArtPath)). into (imageView);' – tachyonflux

+0

Perfect, thanks! :) 당신의 대답도 그렇게 생각하니? – hichris123