2013-08-03 4 views
1

우선 나는 초보자입니다. 여기에 customlost에서 노래의 이름을 추가하는 코드가 있습니다. 내가 필요로하는 것은 mediastore (메타 데이터를 시도했지만 앱이 응답을 멈추었습니다)를 사용하는 일부 기능입니다. ...앨범 및 아티스트 정보로 mediastore.audio를 사용하여 맞춤 목록보기에 추가하는 방법은 무엇인가요?

공용 클래스 FragmentSongs는 조각을 확장 {

private MediaPlayer mp =new MediaPlayer(); 



    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

     View view = inflater.inflate(R.layout.fragment_a, container, false); 
     ListView SngList = (ListView) view.findViewById(R.id.SongList); 
     File f=new File("/sdcard"); 
     ArrayList<SongDetails> Songinfo = getSongsFromDirectory(f); 
     if (Songinfo.size()>0){ 
      SngList.setAdapter(new CustomAdapter(Songinfo)); 
      return view; 
     } 
     else return null; 

    } 


     public ArrayList<SongDetails> getSongsFromDirectory(File f) 
     {// MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever(); 

      ArrayList<SongDetails> songs = new ArrayList<SongDetails>(); 
      if (!f.exists() || !f.isDirectory()) 

      {  
       return songs; 
      } 
      File[] files = f.listFiles(new Mp3Filter()); 
      for(int i=0; i<files.length; i++) 
      { 

      if (files[i].isFile()){ 
      // metaRetriever.setDataSource(files[i].getName()); 
      //metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST); 
      SongDetails detail=new SongDetails(); 
      detail.setIcon(R.drawable.ic_launcher); 
      String fileName = files[i].getName(); 
      detail.setSong(files[i].getName()); 

      detail.setArtist(files[i].getName()); 
      detail.setAlbum(files[i].getName()); 
      songs.add(detail); 
      }else if (files[i].isDirectory()){ 
      songs.addAll(getSongsFromDirectory(files[i])); 
      } 

      } 

      return songs; 



    } } 
class Mp3Filter implements FileFilter{ 
    public boolean accept(File file){ 
     return (file.isDirectory()||file.getName().endsWith(".MP3")|| file.getName().endsWith(".mp3")); 
    } 

답변

0

정확한 문제는 있지만 사용자 지정 목록에 노래 제목을 추가 할 찾고 있다면, 왜이

같은 것을 사용하지 무엇인지 확실하지
final String track_id = MediaStore.Audio.Media._ID; 
    final String track_no =MediaStore.Audio.Media.TRACK; 
    final String track_name =MediaStore.Audio.Media.TITLE; 
    final String artist = MediaStore.Audio.Media.ARTIST; 
    final String duration = MediaStore.Audio.Media.DURATION; 
    final String album = MediaStore.Audio.Media.ALBUM; 
    final String composer = MediaStore.Audio.Media.COMPOSER; 
    final String year = MediaStore.Audio.Media.YEAR; 
    final String path = MediaStore.Audio.Media.DATA; 
    Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 
public Cursor getTrackTrackcursor(Context context, Cursor cursor) 
{ 
    // gets all tracks 
    ContentResolver cr = context.getContentResolver(); 
    final String[]columns={track_id, track_no, artist, track_name,album, duration, path, year, composer}; 
    cursor = cr.query(uri,columns,null,null,null); 
    return cursor; 
} 

희망이 도움이

+0

당신의 시간 동안 잘하지만 어떻게 그것을 내 목록에 추가 할 수 있습니까? –

+0

일단 커서가 있으면 커서를 이동합니다. cursor.movefirst(), cursor.movenext() 등. 각 루프에 데이터 cursor.getString ()을 어댑터 listitems.org에 추가하면 걸려 있는지 알 수 있습니다. – Theo

+0

코드를 조금 더 설명 할 수 있습니까? 만약이 커서를 조각 내에서 구현하려고한다면 –