【发布时间】:2013-12-31 09:01:05
【问题描述】:
我有一个可以从相机拍照的应用程序,但是当用户将内部存储设置为默认时,我遇到了外部存储问题。
当我检查外部存储上的可用空间时,它返回 0 字节空闲,但内部存储有 10GB 可用空间。这是我的代码。
Intent takePictureIntent = new Intent(
MediaStore.ACTION_IMAGE_CAPTURE);
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
double sdAvailSize = (double)stat.getAvailableBlocks()
* (double)stat.getBlockSize();
if(!Utils.isExternalStorageWritable()) {
Toast.makeText(AddActivity.this, R.string.external_storage_not_available, Toast.LENGTH_LONG).show();
}
else if(sdAvailSize / 1024L > 10000) {
Toast.makeText(AddActivity.this, R.string.not_enough_free_space, Toast.LENGTH_LONG).show();
}
else {
File exportDir = new File(Environment.getExternalStorageDirectory()
.getAbsolutePath() + APP_PATH_SD_CARD, "");
if (!exportDir.exists()) {
exportDir.mkdirs();
}
imagePath = Calendar.getInstance().getTimeInMillis() + ".jpg";
final File file = new File(exportDir, imagePath);
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Create the storage directory if it does not exist
if (! file.exists()){
Log.d("App", "failed to create directory");
}
System.out.println("Dir exists: " + exportDir.exists());
System.out.println("File exists: " + file.exists());
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(file));
startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
}
当我不检查可用空间并开始拍照活动时,我可以拍照,但“确定”按钮不起作用。
当用户没有 SD 卡时,存储图像文件的最佳方式是什么?
提前致谢。
【问题讨论】:
标签: android file android-camera