Speichern von Dateien auf externen Speicher am Nexus 7 und das abrufen von PC

Für mein Projekt ich will im Stande sein zu speichern-sensor-Daten in eine Datei, und in der Lage sein, um es auf einem PC für weitere Analyse. Dies ist der code, den ich habe, so weit und es funktioniert erfolgreich:

File root = Environment.getExternalStorageDirectory();
File csvfile = new File(root, "Sensor_Data.csv");
FileWriter writer = new FileWriter(csvfile, true);
writer.append("Time");
writer.append(',');
writer.append("Position");
writer.append('\n');
Number data[] = new Number[4000];
for (int i = 0; i<4000; i+=2){
    posHistory.toArray(data);
        writer.append(String.valueOf(data[i]));
    writer.append(',');
        writer.append(String.valueOf(data[i+1]));
    writer.append('\n');
}
writer.flush();
writer.close();

Das problem ist, dass das Nexus 7 tatsächlich nicht externen Speicher (ich glaube, es nutzt eine Art emulator, um kompatibel mit den meisten apps, die Verwendung von externen Speicher in Ihrem code.)

Nachdem Sie diesen code ausführen, mit Astro File manager auf dem Gerät, sehe ich eine "Sensor_Data.csv" - Datei in vier Standorten aus: /sdcard, /storage/sdcard0, /storage/emulated/0 und /storage/emulated/legacy. Und jeder von Ihnen kann ich offen aus in dem Gerät mit texteditor oder documentviewer und alle Daten sind da.

Das problem ist, dass wenn ich eine Verbindung mit dem Nexus 7 an den PC, sehe ich nur "Internal storage", welche beim öffnen tatsächlich zeigt mir nur die virtuelle SD-Karten-Inhalt, nicht die tatsächlichen, internen Speicher, aber die .csv-Datei gibt es nicht. Es ist ein zusätzliches Verzeichnis "storage/emulated/legacy", aber nichts da, und keine "sdcard0" oder "0" - Ordner. Wenn Ich Das Log " - Umgebung.getExternalStorageDirectory().getAbsolutePath ()", um zu sehen, genau das, was der Weg ist, bekomme ich " /storage/emulated/0

Habe ich versucht, speichern Sie die Datei an anderer Stelle in den internen Speicher ohne Erfolg, aber ich würde lieber halten Sie es in "externen Speicher", so dass die app ist kompatibel mit den meisten Geräten, die die Verwendung von externen Speicher.

UPDATE
So nach der Verwendung von adb pull mit dem Namen hier sind die Ergebnisse:

adb pull /storage/emulated/0/Sensor_Data.csv
remote object '/storage/emulated/0/Sensor_Data.csv' does not exist

adb pull /storage/emulated/legacy/Sensor_Data.csv
243 Kb/s <1495 bytes in 0.006s>

adb pull /storage/sdcard0/Sensor_Data.csv
243 Kb/s <1495 bytes in 0.006s>

adb pull /sdcard/Sensor_Data.csv
243 Kb/s <1495 bytes in 0.006s>

So, der einzige Ort, der nicht funktioniert, ist " /storage/emulated/0/Sensor_Data.csv-obwohl Astro sieht es in allen vier LogCat zeigt, dass es gespeichert wird nach /storage/emulated/0/

Auch nur versucht zu speichern, um

root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);

wieder ich sehe es in der Astro in den gleichen vier Standorten, aber wenn ich über den Windows-Explorer und navigieren Sie zu den downloads-Ordner seine dort nicht.

Ich fand die soultion nutzen. Dies ist ein bug des Nexus 4 und 7. stackoverflow.com/questions/13737261/...
Genial, gut zu wissen, dass dies nur ein bug des nexus 7, und nicht die app, was bedeutet, es sollte gut funktionieren auf jedem anderen android-Gerät mit einer aktuellen SD-Karte. Werde ich testen, meine app auf etwas anderes als nexus 7/4 bald zu bestätigen. Hoffentlich ist es nur eine Frage der Zeit, bis dieser bug wird behoben, in ein android-update.

InformationsquelleAutor David Lopez | 2013-01-15

Schreibe einen Kommentar