我试图使一个应用程序,检测运动和拍照时,运动被检测到。当我不尝试将图片保存到目录(文件夹)时,它正在保存图片。但是当我尝试使用这个目录时,图片没有被保存,即使目录被成功创建。我应该对以下代码进行哪些更改才能使其正常工作:
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);
}
}
3条答案
按热度按时间hjzp0vay1#
请尝试以下代码:
这段代码是我的工作..保存图像到目录。
ozxc1zmp2#
首先你错过了xyz之前的fileseperator
你的功能就变成了
}
marshmello附带runtimepermissions,以便您将文件保存在外部目录中,您需要首先请求权限,如下面的代码所示
}
权限结果回调
保存呼叫前
isStoragePermissionsGranted()
如果它回来了true
继续保存文件。nbysray53#
你必须得到
permission
中运行时的外部存储android 6.0
上面写在SD卡上读取运行时权限
加载项清单.xml
用下面的函数替换你的函数