2017-08-25 64 views
1

首先,我可以獲得所有歌曲及其細節。所有我想是讓從URL中的歌曲的細節,因爲我可以從文件導航唯一的URL,這是我努力如何使用媒體商店從其uri獲取歌曲的音樂細節

public ArrayList<Songfileinfo> getPlayList(Context context, String uri) { 
    { 

     String sortOrder = null; 
     try { 
      String[] proj = {MediaStore.Audio.Media._ID, 
        MediaStore.Audio.Media.TITLE, 
        MediaStore.Audio.Media.ARTIST, 
        MediaStore.Audio.Media.DURATION, 
        MediaStore.Audio.Media.DATA, 
        MediaStore.Audio.Media.ALBUM, 
        MediaStore.Audio.Media.ALBUM_ID 
      }; 

      String selection = null; 

      String[] selectionArgs = {uri}; 


      Cursor audioCursor = context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, proj, selection, selectionArgs, sortOrder); 

      if (audioCursor != null) { 
       if (audioCursor.moveToFirst()) { 
        do { 
         int audioTitle = audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE); 
         int audioartist = audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST); 
         int audioduration = audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION); 
         int audiodata = audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA); 
         int audioalbum = audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM); 
         int audioalbumid = audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID); 
         int song_id = audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID); 


          Songfileinfo info = new Songfileinfo(); 
          info.setFile_uri(audioCursor.getString(audiodata)); 
          info.setTitle(audioCursor.getString(audioTitle)); 
          info.setDuration((audioCursor.getString(audioduration))); 
          info.setArtist(audioCursor.getString(audioartist)); 
          info.setAlbum(audioCursor.getString(audioalbum)); 
          info.setId(audioCursor.getLong(song_id)); 
          info.setAlbum_art((ContentUris.withAppendedId(albumArtUri, audioCursor.getLong(audioalbumid))).toString()); 
          songList.add(info); 


        } while (audioCursor.moveToNext()); 
       } 
      } 
      assert audioCursor != null; 
      audioCursor.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 


    return songList; 
} 

這是我想使用它不工作我的方法我得到的數組列表大小爲0我還試圖比較所有位置的列表中的字符串文件的位置,但仍然數組大小爲0.我不想使用媒體元數據檢索,因爲我不會得到專輯封面網址。任何關於如何獲得這個特定位置的細節的提示? 我想這樣也不過同樣的結果,通過比較該文件URI字符串

if (audioCursor.getString(audiodata).equals(uri)){ 

} 我試圖用媒體元數據恢復類,但它只是不會給圖像的URL,這將是位圖和因爲我的整個應用程序使用圖片網址,這對我來說很困難。

+0

哪種格式文件中的所有數據? MP3,MP4,FLV。 還是你想創建一個通用的方法? – AndroidStorm

+0

我將uri轉換爲字符串,所以它會比較所有格式,大多數都是奧迪歌曲 –

+0

我有通過它可以獲取所有歌曲的方法。但我想獲得我通過文件位置的歌曲的詳細信息 –

回答

0

我只是給它來獲取從URL

if (new File(audioCursor.getString(audiodata)).getName().equals(url.getName())) { 


          Songfileinfo info = new Songfileinfo(); 
          info.setFile_uri(audioCursor.getString(audiodata)); 
          info.setTitle(audioCursor.getString(audioTitle)); 
          info.setDuration((audioCursor.getString(audioduration))); 
          info.setArtist(audioCursor.getString(audioartist)); 
          info.setAlbum(audioCursor.getString(audioalbum)); 
          info.setId(audioCursor.getLong(song_id)); 
          info.setAlbum_art((ContentUris.withAppendedId(albumArtUri, audioCursor.getLong(audioalbumid))).toString()); 


          songList.add(info); 
         }