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
Du musst angemeldet sein, um einen Kommentar abzugeben.
wie gesagt in den docs, getExternalFilesDir() zurück Datei. Und kann das File-Objekt repräsentieren entweder die Datei oder das Verzeichnis.
Daher:
Geben Sie das Objekt, um mit zu spielen.
toll. wenn es geholfen hat, vergessen Sie nicht zu Stimmen und markieren Sie als Antwort akzeptiert: meta.stackexchange.com/questions/5234/...
ah Sprach zu früh, es nur abstürzt, ich hatte auch um eine Zeichenfolge. Datei sd = new File(getExternalFilesDir(Umfeld.DIRECTORY_MUSIC), mysteryString);
was ist die Fehlermeldung?
ich fülle einen spinner adapter mit den Namen der Dateien, stürzt er ab hier. wenn ich eine Zeichenfolge für die Datei (ich weiß, existiert sdcard/myfolder) funktioniert es.
InformationsquelleAutor ariefbayu