Zugriff auf android-media-Verzeichnis?

ey. ive baute eine einfache Musik-app, die liest wav-Dateien von der SD-Karte und spielt Sie.
wie erhalte ich Zugriff auf die Standard-media-Verzeichnis?
dies ist, wie bekomme ich die sdcard

public void LoadSounds() throws IOException
    {
        String extState = Environment.getExternalStorageState();

         if(!extState.equals(Environment.MEDIA_MOUNTED)) {
             //handle error here
         }
         else {

         File sd = new File(Environment.getExternalStorageDirectory ()); //this needs to be a folder the user can access, like media

wie gewohnt die docs dont give ein Aktuelles Beispiel der Nutzung aber es sagt, dass dies - Wenn Sie mit API-Level 8 oder höher, verwenden Sie getExternalFilesDir() zum öffnen einer Datei, stellt Sie den externen Speicher Verzeichnis, wo Sie Ihre Dateien speichern. Diese Methode nimmt einen parameter type gibt den Typ des Unterverzeichnis Sie wollen, wie DIRECTORY_MUSIC...

wie verwende ich es?
danke

Bearbeiten:
dies macht es zum Absturz, wenn ich versuche zu füllen, ein spinner-array mit den Datei-Pfad-Strings.

File path = getExternalFilesDir(Environment.DIRECTORY_MUSIC);
            File sd = new File(path, "/myFolder");

File[] sdDirList = sd.listFiles(new WavFilter()); 
         if (sdDirList != null)
         {   
             //sort the spinner 
            amountofiles = sdDirList.length;


             array_spinner=new String[amountofiles];
......
final Spinner s = (Spinner) findViewById(R.id.spinner1); //crashes here

        ArrayAdapter<?> adapter = new ArrayAdapter<Object>(this,
        android.R.layout.select_dialog_item, array_spinner);

EDIT2:
ok, so ive getan dieses Tests soll das schreiben einer txt-Datei, um das Musik-Verzeichnis.
ich starte das app, keine txt-Datei geschrieben wird, überall auf dem Gerät, die ich finden kann.

 //Path to write files to
        String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).getAbsolutePath();

        String fname = "mytest.txt";

        //Current state of the external media
        String extState = Environment.getExternalStorageState();

        //External media can be written onto
        if (extState.equals(Environment.MEDIA_MOUNTED))
        {
            try {
                //Make sure the path exists
                boolean exists = (new File(path)).exists();  
                if (!exists){ new File(path).mkdirs(); }  

                //Open output stream
                FileOutputStream fOut = new FileOutputStream(path + fname);

                fOut.write("Test".getBytes());

                //Close output stream
                fOut.flush();
                fOut.close();

            } catch (IOException ioe) {
                ioe.printStackTrace();
            }



    }

noch ein edit: ich werde dies funktioniert!!
also, wenn ich diese Zeile erstellt einen Ordner auf die SD-Karte genannt 'Musictest'. verstehe nicht??

 String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC + "test").getAbsolutePath();

////////////////////////////////////////////////////////////////////
Letzte Änderung:
richtig so, dieser wird nach einem Ordner namens test im Geräte-Musik-Verzeichnis.
wenn es nicht existiert, wird es erstellt.
(einige Festsetzung zu tun hier, Fehler (wenn leer), es listet dann die Dateien in dem Verzeichnis und fügt Sie in ein array.

 public void LoadSounds() throws IOException
    {
        String extState = Environment.getExternalStorageState();
        //Path to write files to
            String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC + "/test").getAbsolutePath();

         if(!extState.equals(Environment.MEDIA_MOUNTED)) {
             //handle error here
         }
         else {
             //do your file work here 

                //Make sure the path exists
                boolean exists = (new File(path)).exists(); 
                //if not create it
                if (!exists){ new File(path).mkdirs(); }


         File sd = new File(path);
         //This will return an array with all the Files (directories and files)
         //in the external storage folder

         File[] sdDirList = sd.listFiles(); 

         if (sdDirList != null)
         {   
             //add the files to the spinner array
             array_spinnerLoad=new String[sdDirList.length];
             files = new String[sdDirList.length];

         for(int i=0;i<sdDirList.length;i++){

         array_spinnerLoad[i] = sdDirList[i].getName();
        files[i] = sdDirList[i].getAbsolutePath();
         }

         }
         }
    }

InformationsquelleAutor user1033558 | 2011-11-25

Schreibe einen Kommentar