检索对于我的项目,我希望能够将传感器数据保存到一个文件,并能够从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更新中得到解决只是个时间问题。 –