如何在图库中保存照片
How to save a photo in gallery
你好,我在 phone 屏幕上使用 ss 制作应用程序,但是这个应用程序将所有照片存储在内部存储的本地文件中,当我在 phone 中打开我的画廊时,每张照片都没有显示。
那么如何将每张照片存储在图库文件夹中?
这里我拿SS
private void takeAScreenshot() {
Date now = new Date();
android.text.format.DateFormat.format("yyyy-MM-dd_hh:mm:ss", now);
try {
String mPath = Environment.getExternalStorageDirectory().toString()
+ "/" + now + ".jpg";
View v1 = getWindow().getDecorView().getRootView();
v1.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
File imageFile = new File(mPath);
FileOutputStream outputStream = new FileOutputStream(imageFile);
int quality = 100;
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
outputStream.flush();
outputStream.close();
} catch (Throwable e) {
e.printStackTrace();
}
}
我检查权限
我还找到了 aparat 保存文件的位置:
/storage/emulated/0/DCIM/Camera/img_name.jpg
我找到了这个,并且有效:
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.DATE_TAKEN, System.currentTimeMillis());
values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
values.put(MediaStore.MediaColumns.DATA, mPath)
但图像保存在图库文件夹和内部存储中,帮助
尝试添加这个:
MediaStore.Images.Media.insertImage(getContentResolver(), yourBitmap, yourTitle , yourDescription);
填写您的位图、标题和描述的详细信息,或者将其保留为“”。
保存后使用MediaScanner。
private void takeAScreenshot() {
Date now = new Date();
android.text.format.DateFormat.format("yyyy-MM-dd_hh:mm:ss", now);
try {
String mPath = Environment.getExternalStorageDirectory().toString()
+ "/" + now + ".jpg";
View v1 = getWindow().getDecorView().getRootView();
v1.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
File imageFile = new File(mPath);
FileOutputStream outputStream = new FileOutputStream(imageFile);
int quality = 100;
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
outputStream.flush();
outputStream.close();
} catch (Throwable e) {
e.printStackTrace();
}
MediaScannerConnection.scanFile(ActivityName.this,
new String[]{imageFile.toString()}, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(final String path, final Uri uri) {
ActivityName.this.runOnUiThread(new Runnable() {
public void run() {
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM,
uri);
shareIntent.setType("image/jpeg");
startActivity(Intent.createChooser(shareIntent,
"choose one"));
}
});
}
});
}
你好,我在 phone 屏幕上使用 ss 制作应用程序,但是这个应用程序将所有照片存储在内部存储的本地文件中,当我在 phone 中打开我的画廊时,每张照片都没有显示。
那么如何将每张照片存储在图库文件夹中?
这里我拿SS
private void takeAScreenshot() {
Date now = new Date();
android.text.format.DateFormat.format("yyyy-MM-dd_hh:mm:ss", now);
try {
String mPath = Environment.getExternalStorageDirectory().toString()
+ "/" + now + ".jpg";
View v1 = getWindow().getDecorView().getRootView();
v1.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
File imageFile = new File(mPath);
FileOutputStream outputStream = new FileOutputStream(imageFile);
int quality = 100;
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
outputStream.flush();
outputStream.close();
} catch (Throwable e) {
e.printStackTrace();
}
}
我检查权限
我还找到了 aparat 保存文件的位置:
/storage/emulated/0/DCIM/Camera/img_name.jpg
我找到了这个,并且有效:
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.DATE_TAKEN, System.currentTimeMillis());
values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
values.put(MediaStore.MediaColumns.DATA, mPath)
但图像保存在图库文件夹和内部存储中,帮助
尝试添加这个:
MediaStore.Images.Media.insertImage(getContentResolver(), yourBitmap, yourTitle , yourDescription);
填写您的位图、标题和描述的详细信息,或者将其保留为“”。
保存后使用MediaScanner。
private void takeAScreenshot() {
Date now = new Date();
android.text.format.DateFormat.format("yyyy-MM-dd_hh:mm:ss", now);
try {
String mPath = Environment.getExternalStorageDirectory().toString()
+ "/" + now + ".jpg";
View v1 = getWindow().getDecorView().getRootView();
v1.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
File imageFile = new File(mPath);
FileOutputStream outputStream = new FileOutputStream(imageFile);
int quality = 100;
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
outputStream.flush();
outputStream.close();
} catch (Throwable e) {
e.printStackTrace();
}
MediaScannerConnection.scanFile(ActivityName.this,
new String[]{imageFile.toString()}, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(final String path, final Uri uri) {
ActivityName.this.runOnUiThread(new Runnable() {
public void run() {
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM,
uri);
shareIntent.setType("image/jpeg");
startActivity(Intent.createChooser(shareIntent,
"choose one"));
}
});
}
});
}