【发布时间】:2017-01-04 06:42:05
【问题描述】:
我正在尝试制作一个检测运动并在检测到运动时拍照的应用。当我不尝试将图片保存在目录(文件夹)中时,它会保存图片。但是当我尝试使用目录时,即使目录创建成功,图片也没有保存。 我应该对以下代码进行哪些更改才能使其正常工作:
private void createDirectoryAndSaveFile(String name, Bitmap bitmap) {
File folder = new File(Environment.getExternalStorageDirectory() +
File.separator + "XYX APP");
boolean success = true;
if (!folder.exists()) {
success = folder.mkdirs();
}
if (success) {
// Do something on success
} else {
// Do something else on failure
}
File photo = new File(new File(Environment.getExternalStorageDirectory()+"XYZ APP/"), name+ ".jpg");
if (photo.exists()) {
photo.delete();
}
try {
FileOutputStream out = new FileOutputStream(photo.getPath());
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
注意:文件名按如下指令生成:
String name = "MotDet_"+String.valueOf(System.currentTimeMillis());
if (bitmap != null) createDirectoryAndSaveFile(name, bitmap);
更新 它适用于以下代码,但不适用于上面的代码:
private void save(String name, Bitmap bitmap) {
File photo = new File(Environment.getExternalStorageDirectory(), name + ".jpg");
if (photo.exists()) photo.delete();
try {
FileOutputStream fos = new FileOutputStream(photo.getPath());
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.close();
} catch (java.io.IOException e) {
Log.e("PictureDemo", "Exception in photoCallback", e);
}
}
【问题讨论】:
-
你在 marshmello 中测试吗?
-
@Jayanth Yes on s7 edge
-
@Jayanth 你看到我更新的问题了吗?它适用于该代码,但在我尝试制作目录时不起作用
-
尝试替换行 File photo = new File(new File(Environment.getExternalStorageDirectory()+"XYZ APP/"), name+".jpg");与我的答案中的行
-
用这一行 File photo = new File(folder.getAbsolutePath()+"/XYZ APP/"+ name+ ".jpg");
标签: java android android-camera android-sdcard android-image