Speichern von Dateien auf externem Speicher unter Nexus 7 und Abrufen vom PC

Für mein Projekt möchte ich in der Lage sein, Sensordaten in einer Datei zu speichern und zur weiteren Analyse von einem PC aus darauf zuzugreifen. Dies ist der Code, den ich bisher habe und der erfolgreich funktioniert:

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 nicht über externen Speicher verfügt (ich glaube, es verwendet eine Art Emulator, um mit den meisten Apps kompatibel zu sein, die externen Speicher in ihrem Code verwenden.)

Nach dem Ausführen dieses Codes mit dem Astro-Dateimanager auf dem Gerät wird eine "Sensor_Data.csv" -Datei an vier Speicherorten angezeigt: / sdcard, / storage / sdcard0, / storage / emulated / 0 und / storage / emulated / legacy. Und jeder von ihnen kann ich aus dem Gerät mit Texteditor oder Documentviewer öffnen und alle Daten sind da.

Das Problem ist, dass ich beim Anschließen des Nexus 7 an den PC nur "Interner Speicher" sehe, der beim Öffnen nur den Inhalt der virtuellen SD-Karte anzeigt, nicht den tatsächlichen internen Speicher, aber die CSV-Datei ist nicht vorhanden. Es gibt ein zusätzliches Verzeichnis "storage / emulated / legacy", aber auch kein Verzeichnis "sdcard0" oder "0". Wenn ich "Environment.getExternalStorageDirectory (). GetAbsolutePath ()" anmelde, um genau zu sehen, wie der Pfad lautet, erhalte ich / storage / emulated / 0

Ich habe erfolglos versucht, die Datei an einem anderen Ort im internen Speicher zu speichern, aber ich möchte sie lieber im "externen Speicher" belassen, damit die App mit den meisten Geräten kompatibel ist, die externen Speicher verwenden.

AKTUALISIEREN Nach der Verwendung von adb pull filename sind hier 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>

Der einzige Ort, der nicht funktioniert, ist /storage/emulated/0/Sensor_Data.csv, obwohl Astro ihn in allen vier Dateien sieht und LogCat anzeigt, dass er in / storage / emulated / 0 / gespeichert wird.

Habe auch gerade versucht zu speichern

root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);

Wieder kann ich es in Astro an den gleichen vier Orten sehen, aber wenn ich durch den Windows Explorer gehe und zum Download-Ordner navigiere, ist er nicht da.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage