Comment obtenir des chansons de l'album/Artiste en android,en utilisant MediametadataRetriever?

Tout d'abord, je suis un newbie et d'autre part je sais qu'il existe une solution pour les "Comment obtenir des chansons de l'album dans android?", mais c'est à l'aide du curseur et MediaStore et je l'ai utilisé MediametadataRetriever et son totalement différent, je n'ai pas utilisé hashmaps et tout et tout.....donc sa devient un peu difficile....merci de toutes les solutions pour cette???sans l'aide de hashmaps et mediastore???

voici le code que j'ai utilisé pour afficher toutes les chansons et ses artistes ..........

import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
import java.io.Serializable;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.MediaMetadataRetriever;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.ListFragment;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class FragmentSongs extends  Fragment implements Serializable {
AdapterView.AdapterContextMenuInfo info;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_song, container, false);
ListView SngList = (ListView) view.findViewById(R.id.SongList);
registerForContextMenu(SngList);
File f=new File("/sdcard/Music");
int j=0;int i=0;
final ArrayList<SongDetails> Songinfo = getSongsFromDirectory(f);
if (Songinfo.size()>0) {
for( j=0; j<Songinfo.size();j++) {
for ( i=j+1 ; i<Songinfo.size(); i++) { 
SongDetails a=Songinfo.get(i);
SongDetails b=Songinfo.get(j);
if (a.getSong().toLowerCase().compareTo(b.getSong().toLowerCase()) < 0) {
Songinfo.set(i,b );
Songinfo.set(j,a);
}
}
}
SngList.setOnItemClickListener(new OnItemClickListener() { 
public void onItemClick(AdapterView a, View v, int position, long id) {
Intent intent = new Intent(getActivity(), NowPlaying.class);
intent.putParcelableArrayListExtra("Data1",Songinfo);
intent.putExtra("Data2",position);
startActivity(intent);
}
});
SngList.setAdapter(new CustomAdapter(Songinfo));
return view;
} else {
return null;
}
}
public ArrayList<SongDetails> getSongsFromDirectory(File f) {
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
ArrayList<SongDetails> songs = new ArrayList<SongDetails>();
Bitmap bitmap2; 
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ab);
float ht_px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, getResources().getDisplayMetrics());
float wt_px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, getResources().getDisplayMetrics());
Bitmap bitmap3 = Bitmap.createScaledBitmap(bmp, (int) ht_px, (int) wt_px, true);
byte[] rawArt = null;
Bitmap art;
BitmapFactory.Options bfo=new BitmapFactory.Options();
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()) { 
mmr.setDataSource(files[i].getPath());
rawArt = mmr.getEmbeddedPicture();
SongDetails detail=new SongDetails(); 
if ( rawArt != null) {
bitmap2=BitmapFactory.decodeByteArray(rawArt, 0, rawArt.length, bfo);
bitmap2 = Bitmap.createScaledBitmap(bitmap2, (int) ht_px, (int) wt_px, true);
detail.setIcon(bitmap2);
} else {  
detail.setIcon(bitmap3);
}
detail.setSong(files[i].getName()); 
detail.setArtist(files[i].getName());
detail.setArtist( mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST)); 
detail.setAlbum( mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM)); 
detail.setPath2( files[i].getPath()) ;
songs.add(detail); 
} else if (files[i].isDirectory()) { 
songs.addAll(getSongsFromDirectory(files[i])); 
} 
}
return songs;
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);      
info = (AdapterContextMenuInfo) menuInfo;
menu.add(Menu.NONE, v.getId(), 0, "Play");
menu.add(Menu.NONE, v.getId(), 0, "Delete");
menu.add(Menu.NONE, v.getId(), 0, "Queue Item");                  
}
@Override
public boolean onContextItemSelected(MenuItem item) {
if (item.getTitle() == "Play") {
} else if (item.getTitle() == "Delete") {
} else if (item.getTitle() == "Queue Item") {
} else {
return false;
}
return true;
}
}
class Mp3Filter implements FileFilter {
public boolean accept(File file) {
return (file.isDirectory()||file.getName().endsWith(".mp3")|| file.getName().endsWith(".Mp3"));
}
}
Merci de ne nettoyer les sauts de ligne, l'indentation et {} de votre code. Actuellement, il est très difficile à lire. Veuillez également indiquer où dans le code de votre problème.
Eh bien il n'y a pas de problème dans le code......j'ai posté ce code pour ceux qui disent "où est le code que vous utilisez"ce que je fais c'est que je suis à la recherche de tous les fichiers, puis en affichant les chansons et leurs pochettes d'album , d'artiste et d'albums dans une liste personnalisée..il n'y a pas eu de problème jusqu'à maintenant...le code fonctionne très bien....mais je ne sais pas comment faire pour afficher toutes les chansons d'un artiste ou d'un album......je ne veux pas être l'aide de la chaîne de tri et de tous parce qu'il va faire mon code très lourd ....
Donc, si il n'y a pas des problèmes avec le code, vérifiez disponible exemples et de les utiliser pour créer ce que vous voulez.
Pouvez-vous me fournir un tel exemple?

OriginalL'auteur Ankit Srivastava | 2013-08-10