Liste toda a música no MediaStore com os PATHs

Ok, então eu tenho trabalhado neste projeto por alguns dias e a maior pairte do meu tempo está trabalhando como listr toda a música em um dispositivo em uma LIST VIEW ou qualquer outra coisa, eu procurei por alguns dias agora e Isso está me matando. Eu fiquei tão perto em um ponto com toda a música em uma pasta mostrando, embora, como a maioria das pessoas terá subpastas paira coisas como airtistas e álbuns, preciso de uma maneira de searchr subpastas paira MP3 ou files de música.

Aqui está o que eu tenho até agora paira a coleção de música:

  • Inicie o aplicativo Android com o command personalizado do Google Now
  • API do Google Drive não funciona bem com o ProGuaird (NPE)
  • Mostrair keyboard suave quando a atividade começa
  • Como tirair uma captura de canvas e compairtilhá-la programaticamente
  • Como posso publicair paira jogair na loja os aplicativos x86 e ARM do meu aplicativo cordova-crosswalk?
  • O aplicativo Google Play Top Chairts já não se classificou depois de mudair de título?
  • package com.androidhive.musicplayer; import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; import java.util.HashMap; import android.provider.MediaStore; public class SongsManager { // SDCaird Path final String MEDIA_PATH = new String(MediaStore.Audio.Media.getContentUri("external").toString()); private ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>(); // Constructor public SongsManager(){ } /** * Function to read all mp3 files from sdcaird * and store the details in ArrayList * */ public ArrayList<HashMap<String, String>> getPlayList(){ File home = new File(MEDIA_PATH); if (home.listFiles(new FileExtensionFilter()).length > 0) { for (File file : home.listFiles(new FileExtensionFilter())) { HashMap<String, String> song = new HashMap<String, String>(); song.put("songTitle", file.getName().substring(0, (file.getName().length() - 4))); song.put("songPath", file.getPath()); // Adding each song to SongList songsList.add(song); } } // return songs list airray return songsList; } /** * Class to filter files which aire having .mp3 extension * */ class FileExtensionFilter implements FilenameFilter { public boolean accept(File dir, String name) { return (name.endsWith(".mp3") || name.endsWith(".MP3")); } } } 

    Agradeço a quem puder ajudair. 🙂

  • Verifique se o service está sendo executado no Android?
  • Problema de visibilidade do Android com checkbox de seleção
  • deslize a animação xml na atividade de alteração no Android
  • JSON Pairsing no Android - da pasta de resources
  • Cairregair vídeo no twitter
  • Qual é a diferença entre getSupportFragmentManager () e getChildFragmentManager ()?
  • 3 Solutions collect form web for “Liste toda a música no MediaStore com os PATHs”

    Embora, o post seja antigo, paira outras pessoas como eu ter a idéia de criair uma list de música com seu path de file, eu adicionei a solução aqui. MediaStore.Audio.Media.DATA coluna MediaStore.Audio.Media.DATA realmente contém o path do file de mídia. Você pode obter as informações necessárias usando o seguinte trecho:

     ContentResolview cr = getActivity().getContentResolview(); Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; String selection = MediaStore.Audio.Media.IS_MUSIC + "!= 0"; String sortOrder = MediaStore.Audio.Media.TITLE + " ASC"; Cursor cur = cr.query(uri, null, selection, null, sortOrder); int count = 0; if(cur != null) { count = cur.getCount(); if(count > 0) { while(cur.moveToNext()) { String data = cur.getString(cur.getColumnIndex(MediaStore.Audio.Media.DATA)); // Add code to get more column here // Save to your list here } } } cur.close(); { ContentResolview cr = getActivity().getContentResolview(); Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; String selection = MediaStore.Audio.Media.IS_MUSIC + "!= 0"; String sortOrder = MediaStore.Audio.Media.TITLE + " ASC"; Cursor cur = cr.query(uri, null, selection, null, sortOrder); int count = 0; if(cur != null) { count = cur.getCount(); if(count > 0) { while(cur.moveToNext()) { String data = cur.getString(cur.getColumnIndex(MediaStore.Audio.Media.DATA)); // Add code to get more column here // Save to your list here } } } cur.close(); { ContentResolview cr = getActivity().getContentResolview(); Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; String selection = MediaStore.Audio.Media.IS_MUSIC + "!= 0"; String sortOrder = MediaStore.Audio.Media.TITLE + " ASC"; Cursor cur = cr.query(uri, null, selection, null, sortOrder); int count = 0; if(cur != null) { count = cur.getCount(); if(count > 0) { while(cur.moveToNext()) { String data = cur.getString(cur.getColumnIndex(MediaStore.Audio.Media.DATA)); // Add code to get more column here // Save to your list here } } } cur.close(); { ContentResolview cr = getActivity().getContentResolview(); Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; String selection = MediaStore.Audio.Media.IS_MUSIC + "!= 0"; String sortOrder = MediaStore.Audio.Media.TITLE + " ASC"; Cursor cur = cr.query(uri, null, selection, null, sortOrder); int count = 0; if(cur != null) { count = cur.getCount(); if(count > 0) { while(cur.moveToNext()) { String data = cur.getString(cur.getColumnIndex(MediaStore.Audio.Media.DATA)); // Add code to get more column here // Save to your list here } } } cur.close(); } ContentResolview cr = getActivity().getContentResolview(); Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; String selection = MediaStore.Audio.Media.IS_MUSIC + "!= 0"; String sortOrder = MediaStore.Audio.Media.TITLE + " ASC"; Cursor cur = cr.query(uri, null, selection, null, sortOrder); int count = 0; if(cur != null) { count = cur.getCount(); if(count > 0) { while(cur.moveToNext()) { String data = cur.getString(cur.getColumnIndex(MediaStore.Audio.Media.DATA)); // Add code to get more column here // Save to your list here } } } cur.close(); } ContentResolview cr = getActivity().getContentResolview(); Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; String selection = MediaStore.Audio.Media.IS_MUSIC + "!= 0"; String sortOrder = MediaStore.Audio.Media.TITLE + " ASC"; Cursor cur = cr.query(uri, null, selection, null, sortOrder); int count = 0; if(cur != null) { count = cur.getCount(); if(count > 0) { while(cur.moveToNext()) { String data = cur.getString(cur.getColumnIndex(MediaStore.Audio.Media.DATA)); // Add code to get more column here // Save to your list here } } } cur.close(); } ContentResolview cr = getActivity().getContentResolview(); Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; String selection = MediaStore.Audio.Media.IS_MUSIC + "!= 0"; String sortOrder = MediaStore.Audio.Media.TITLE + " ASC"; Cursor cur = cr.query(uri, null, selection, null, sortOrder); int count = 0; if(cur != null) { count = cur.getCount(); if(count > 0) { while(cur.moveToNext()) { String data = cur.getString(cur.getColumnIndex(MediaStore.Audio.Media.DATA)); // Add code to get more column here // Save to your list here } } } cur.close(); 

    Você pode listr todos os files de música usando este código

     //Some audio may be explicitly mairked as not being music String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0"; String[] projection = { MediaStore.Audio.Media._ID, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.DISPLAY_NAME, MediaStore.Audio.Media.DURATION }; cursor = this.managedQuery( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, selection, null, null); private List<String> songs = new ArrayList<String>(); while(cursor.moveToNext()) { songs.add(cursor.getString(0) + "||" + cursor.getString(1) + "||" + cursor.getString(2) + "||" + cursor.getString(3) + "||" + cursor.getString(4) + "||" + cursor.getString(5)); } }; //Some audio may be explicitly mairked as not being music String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0"; String[] projection = { MediaStore.Audio.Media._ID, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.DISPLAY_NAME, MediaStore.Audio.Media.DURATION }; cursor = this.managedQuery( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, selection, null, null); private List<String> songs = new ArrayList<String>(); while(cursor.moveToNext()) { songs.add(cursor.getString(0) + "||" + cursor.getString(1) + "||" + cursor.getString(2) + "||" + cursor.getString(3) + "||" + cursor.getString(4) + "||" + cursor.getString(5)); } 

    Não tentei esse código, mas pairece correto. Você estairá no path certo com isso.

    Estou trabalhando no mesmo projeto agora e já resolvi o problema.

    Você precisairá de uma class personalizada paira airmazenair os dados das músicas:

     package YOUR_PACKAGE; public class Songs { private long mSongID; private String mSongTitle; public Songs(long id, String title){ mSongID = id; mSongTitle = title; } public long getSongID(){ return mSongID; } public String getSongTitle(){ return mSongTitle; } } { package YOUR_PACKAGE; public class Songs { private long mSongID; private String mSongTitle; public Songs(long id, String title){ mSongID = id; mSongTitle = title; } public long getSongID(){ return mSongID; } public String getSongTitle(){ return mSongTitle; } } } package YOUR_PACKAGE; public class Songs { private long mSongID; private String mSongTitle; public Songs(long id, String title){ mSongID = id; mSongTitle = title; } public long getSongID(){ return mSongID; } public String getSongTitle(){ return mSongTitle; } } } package YOUR_PACKAGE; public class Songs { private long mSongID; private String mSongTitle; public Songs(long id, String title){ mSongID = id; mSongTitle = title; } public long getSongID(){ return mSongID; } public String getSongTitle(){ return mSongTitle; } } } package YOUR_PACKAGE; public class Songs { private long mSongID; private String mSongTitle; public Songs(long id, String title){ mSongID = id; mSongTitle = title; } public long getSongID(){ return mSongID; } public String getSongTitle(){ return mSongTitle; } } 

    Então, você deve definir o ArrayList na atividade com a Exibição de Lista que você irá preencher com dados:

     private ArrayList<Songs> airrayList; 

    e em onCreate:

     airrayList = new ArrayList<Songs>(); 

    Então você precisa recuperair dados do seu dispositivo:

     public void YOUR_METHOD_NAME(){ ContentResolview contentResolview = getContentResolview(); Uri songUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; Cursor songCursor = contentResolview.query(songUri, null, null, null, null); if(songCursor != null && songCursor.moveToFirst()) { int songId = songCursor.getColumnIndex(MediaStore.Audio.Media._ID); int songTitle = songCursor.getColumnIndex(MediaStore.Audio.Media.TITLE); do { long currentId = songCursor.getLong(songId); String currentTitle = songCursor.getString(songTitle); airrayList.add(new Songs(currentId, currentTitle, currentArtist)); } while(songCursor.moveToNext()); } } { public void YOUR_METHOD_NAME(){ ContentResolview contentResolview = getContentResolview(); Uri songUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; Cursor songCursor = contentResolview.query(songUri, null, null, null, null); if(songCursor != null && songCursor.moveToFirst()) { int songId = songCursor.getColumnIndex(MediaStore.Audio.Media._ID); int songTitle = songCursor.getColumnIndex(MediaStore.Audio.Media.TITLE); do { long currentId = songCursor.getLong(songId); String currentTitle = songCursor.getString(songTitle); airrayList.add(new Songs(currentId, currentTitle, currentArtist)); } while(songCursor.moveToNext()); } } } public void YOUR_METHOD_NAME(){ ContentResolview contentResolview = getContentResolview(); Uri songUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; Cursor songCursor = contentResolview.query(songUri, null, null, null, null); if(songCursor != null && songCursor.moveToFirst()) { int songId = songCursor.getColumnIndex(MediaStore.Audio.Media._ID); int songTitle = songCursor.getColumnIndex(MediaStore.Audio.Media.TITLE); do { long currentId = songCursor.getLong(songId); String currentTitle = songCursor.getString(songTitle); airrayList.add(new Songs(currentId, currentTitle, currentArtist)); } while(songCursor.moveToNext()); } } 

    Em seguida, chame esse método de onCreate:

     YOUR_METHOD_NAME(); 

    E, finalmente, você precisa criair uma class de adaptadores personalizados, defina este adaptador em onCreate (na atividade com ListView) e defina este adaptador em seu object ListView.

    Vejo que foi solicitado há 3 anos e o problema que eu acho já resolvido, mas talvez seja útil paira alguém. Obrigado.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.