Zapisywanie plików w pamięci zewnętrznej na Nexusie 7 i pobieranie z komputera

W moim projekcie chcę mieć możliwość zapisywania danych z czujnika do pliku i mieć do niego dostęp z komputera w celu dalszej analizy. To jest kod, który mam do tej pory i działa pomyślnie:

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();

Problem polega na tym, że Nexus 7 nie ma zewnętrznej pamięci masowej (uważam, że używa jakiegoś emulatora, aby być kompatybilnym z większością aplikacji, które wykorzystują pamięć zewnętrzną w swoim kodzie).

Po uruchomieniu tego kodu za pomocą menedżera plików Astro na urządzeniu widzę plik „Sensor_Data.csv” w czterech lokalizacjach: / sdcard, / storage / sdcard0, / storage / emulated / 0 i / storage / emulated / legacy. I każdy z nich mogę otworzyć z poziomu urządzenia za pomocą edytora tekstu lub przeglądarki dokumentów i wszystkie dane tam są.

Problem polega na tym, że kiedy podłączam Nexusa 7 do komputera, widzę tylko „Pamięć wewnętrzna”, która po otwarciu pokazuje mi tylko zawartość wirtualnej karty SD, a nie rzeczywistą pamięć wewnętrzną, ale nie ma pliku .csv. Istnieje dodatkowy katalog „storage / emulated / legacy”, ale tam również nic, a także foldery „sdcard0” lub „0”. Kiedy loguję „Environment.getExternalStorageDirectory (). GetAbsolutePath ()”, aby zobaczyć dokładnie, jaką ścieżką jest I get / storage / emulated / 0

Próbowałem zapisać plik w innym miejscu w pamięci wewnętrznej bez powodzenia, ale wolałbym zachować go w „pamięci zewnętrznej”, aby aplikacja była zgodna z większością urządzeń korzystających z pamięci zewnętrznej.

AKTUALIZACJA Więc po użyciu adb pull nazwy tutaj są wyniki:

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>

Tak więc jedyną lokalizacją, która nie działa, jest /storage/emulated/0/Sensor_Data.csv, nawet jeśli Astro widzi to we wszystkich czterech, a LogCat pokazuje, że jest zapisywany do / storage / emulated / 0 /

Właśnie próbowałem zapisać do

root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);

znów widzę to w Astro w tych samych czterech lokalizacjach, ale kiedy przechodzę przez Eksploratora Windows i przechodzę do folderu pobierania, nie ma go tam.

questionAnswers(3)

yourAnswerToTheQuestion