Wie bekomme ich mit MediametadataRetriever Songs von Album / Interpret in Android?

Erstens bin ich ein Neuling und zweitens weiß ich, dass es eine Lösung für "Wie bekomme ich Songs vom Album in Android?" Aber das ist durch die Verwendung von Cursor und MediaStore und ich habe MediametadataRetriever verwendet und es ist völlig anders. Ich habe keine Hashmaps und alles verwendet hashmaps und mediastore ???

Hier ist der Code, mit dem ich alle Songs und deren Interpreten angezeigt habe ..........

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"));
    }
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage