/*
* 保存文件昙衅,文件名為當(dāng)前日期
*/
public boolean saveBitmap(Bitmap bitmap, String bitName) {
String fileName;
File file;
String brand = Build.BRAND;
if (brand.equals("xiaomi")) { // 小米手機brand.equals("xiaomi")
fileName = Environment.getExternalStorageDirectory().getPath() + "/DCIM/Camera/" + bitName;
} else if (brand.equalsIgnoreCase("Huawei")) {
fileName = Environment.getExternalStorageDirectory().getPath() + "/DCIM/Camera/" + bitName;
} else { // Meizu 、Oppo
fileName = Environment.getExternalStorageDirectory().getPath() + "/DCIM/" + bitName;
}
// fileName = Environment.getExternalStorageDirectory().getPath() + "/DCIM/Camera/" + bitName;
if (Build.VERSION.SDK_INT >= 29) {
// boolean isTrue = saveSignImage(bitName, bitmap);
saveSignImage(bitName,bitmap);
return true;
// file= getPrivateAlbumStorageDir(NewPeoActivity.this, bitName,brand);
// return isTrue;
} else {
Log.v("saveBitmap brand", "" + brand);
file =new File(fileName);
}
if (file.exists()) {
file.delete();
}
FileOutputStream out;
try {
out = new FileOutputStream(file);
// 格式為 JPEG求泰,照相機拍出的圖片為JPEG格式的唯沮,PNG格式的不能顯示在相冊中
if (bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out)) {
out.flush();
out.close();
// 插入圖庫
if(Build.VERSION.SDK_INT >= 29){
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.DATA, file.getAbsolutePath());
values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
Uri uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
}else{
MediaStore.Images.Media.insertImage(this.getContentResolver(), file.getAbsolutePath(), bitName, null);
}
}
} catch (FileNotFoundException e) {
Log.e("FileNotFoundException", "FileNotFoundException:" + e.getMessage().toString());
e.printStackTrace();
return false;
} catch (IOException e) {
Log.e("IOException", "IOException:" + e.getMessage().toString());
e.printStackTrace();
return false;
} catch (Exception e) {
Log.e("IOException", "IOException:" + e.getMessage().toString());
e.printStackTrace();
return false;
// 發(fā)送廣播孝冒,通知刷新圖庫的顯示
}
// if(Build.VERSION.SDK_INT >= 29){
// copyPrivateToDownload(this,file.getAbsolutePath(),bitName);
// }
this.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + fileName)));
return true;
}
//將文件保存到公共的媒體文件夾
//這里的filepath不是絕對路徑颅和,而是某個媒體文件夾下的子路徑,和沙盒子文件夾類似
//這里的filename單純的指文件名赖阻,不包含路徑
public void saveSignImage(/*String filePath,*/String fileName, Bitmap bitmap) {
try {
//設(shè)置保存參數(shù)到ContentValues中
ContentValues contentValues = new ContentValues();
//設(shè)置文件名
contentValues.put(MediaStore.Images.Media.DISPLAY_NAME, fileName);
//兼容Android Q和以下版本
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
//android Q中不再使用DATA字段框杜,而用RELATIVE_PATH代替
//RELATIVE_PATH是相對路徑不是絕對路徑
//DCIM是系統(tǒng)文件夾浦楣,關(guān)于系統(tǒng)文件夾可以到系統(tǒng)自帶的文件管理器中查看,不可以寫沒存在的名字
contentValues.put(MediaStore.Images.Media.RELATIVE_PATH, "DCIM/");
//contentValues.put(MediaStore.Images.Media.RELATIVE_PATH, "Music/signImage");
} else {
contentValues.put(MediaStore.Images.Media.DATA, Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getPath());
}
//設(shè)置文件類型
contentValues.put(MediaStore.Images.Media.MIME_TYPE, "image/JPEG");
//執(zhí)行insert操作霸琴,向系統(tǒng)文件夾中添加文件
//EXTERNAL_CONTENT_URI代表外部存儲器椒振,該值不變
Uri uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
if (uri != null) {
//若生成了uri,則表示該文件添加成功
//使用流將內(nèi)容寫入該uri中即可
OutputStream outputStream = getContentResolver().openOutputStream(uri);
if (outputStream != null) {
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, outputStream);
outputStream.flush();
outputStream.close();
}
}
} catch (Exception e) {
}
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者