檢索對於我的項目,我希望能夠將傳感器數據保存到一個文件,並能夠從PC訪問其進行進一步的分析。這是代碼我到目前爲止,它的工作原理成功:將文件保存在Nexus 7和PC
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();
的問題是,Nexus的7實際上沒有外部存儲(我相信它使用某種形式的仿真器,以便與大多數兼容在代碼中使用外部存儲的應用程序。)
運行此代碼後,使用設備上的Astro文件管理器,我在四個位置中看到一個「Sensor_Data.csv」文件:/ sdcard,/ storage/sdcard0,/storage/emulated/0和/ storage/emulated/legacy。我可以在設備內使用texteditor或documentviewer打開每個設備,所有數據都在那裏。
問題是,當我連接Nexus 7到PC時,我只看到「內部存儲器」,打開時實際上只顯示虛擬SD卡的內容,而不是實際的內部存儲器,但.csv文件不是'那裏。還有一個額外的目錄「存儲/模擬/遺留」,但沒有任何內容,也沒有「sdcard0」或「0」文件夾。當我記錄「Environment.getExternalStorageDirectory()。getAbsolutePath()」以確切地看到什麼路徑是我得到/存儲/模擬/ 0
我試過在內部存儲的其他地方保存文件沒有成功,但我寧願將其保存在「外部存儲器」中,以便該應用程序與使用外部存儲的大多數設備兼容。
UPDATE 因此,使用亞行拉名後面這裏的結果:
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>
所以,不工作的唯一位置是/storage/emulated/0/Sensor_Data.csv甚至雖然天文看到它在所有四個logcat的顯示,它被保存在/存儲/模擬/ 0/
也只是試圖保存到
root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
再次我可以看到它在Astro在相同的四個位置,但是當我通過Windows資源管理器,然後導航到下載文件夾它不存在。
我發現soultion。這是和7的Nexus 4的錯誤 http://stackoverflow.com/questions/13737261/nexus-4-not-showing-files-via-mtp – billtian
真棒,很好的瞭解,這僅僅是一個nexus 7的錯誤,而不是應用程序,這意味着它應該可以在任何其他使用實際SD卡的Android設備上正常工作。我會盡快測試出除nexus 7/4之外的應用程序以確認。希望這個bug在android更新中得到解決只是個時間問題。 –