我知道有很多线程,但我想我都读过它们。在我的案例中没有任何帮助。首先是我的代码:
File savePlace;
if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()))
savePlace = Environment.getExternalStorageDirectory();
File dir = new File (savePlace.getAbsolutePath() + "/DCIM/MY_APP");
dir.mkdirs();
String fileName = String.format("%d.jpg", System.currentTimeMillis());
File outFile = new File(dir, fileName);
outStream = new FileOutputStream(outFile);
outStream.write(data[0]);
outStream.flush();
outStream.close();
Log.d(TAG, "onPictureTaken - wrote bytes: " + data.length + " to " + outFile.getAbsolutePath());
现在我的清单:
<uses-feature android:name="android.hardware.camera" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
所以我无法弄清楚我的应用程序有什么问题。 我正在检查是否有卡以及我是否可以读/写它。我给了绝对的文件路径。但毕竟我的应用程序将文件保存到DCIM / MY_APP的内部存储。这是从最后的日志。
01-10 21:35:34.005: onPictureTaken - wrote bytes: 1 to /storage/emulated/0/DCIM/MY_APP/1420922134007.jpg
答案 0 :(得分:0)
Android SDK引用的内容internal storage和external storage都是板载闪存的一部分。 Android 4.4之前的Android SDK完全不支持removable storage(a.k.a。,“SD卡”)。
因此,它似乎是写到适当的地方。为什么你选择只在那里写一个字节,我不能说。
如果您希望存储数码照片,而不是手动将DCIM
放入目录名称,请使用Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)
,以获取设备在数码照片中的自然位置。
此外:
在getFD().sync()
之后FileOutputStream
flush()
上的close()
确保您在后台线程上执行所有此磁盘I / O
考虑使用MediaScannerConnection
和scanFile()
让您的文件被MediaStore
编入索引,这样当用户通过USB线将设备连接到桌面时,它就会显示出来操作系统和浏览外部存储