安卓:将位图保存到相册 ==> 时间创建错误

7
在我的Android应用程序中,我想将一个位图保存在画廊中。实际上,使用下面的代码可以正常工作。唯一的错误是当我在画廊中打开图像时,详细信息中创建的时间是错误的。因此,图像不在画廊中的正确顺序中。
有人有想法吗? 非常感谢帮助。
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
Bitmap combination = //get my bitmap!
//save in gallery
MediaStore.Images.Media.insertImage(exploreActivity.getContentResolver(),combination,"test_"+ timeStamp + ".jpg",timeStamp.toString());

这是详细信息的截图: 一个忙碌的猫咪
3个回答

10

在插入图片时,您需要定义DATE_TAKEN。这可以通过更改向图库添加图像的方式来完成,例如执行以下操作:

public static Uri addImageToGallery(Context context, String filepath, String title, String description) {    
    ContentValues values = new ContentValues();
    values.put(Media.TITLE, title);
    values.put(Media.DESCRIPTION, description); 
    values.put(Images.Media.DATE_TAKEN, System.currentTimeMillis());
    values.put(Images.Media.MIME_TYPE, "image/jpeg");
    values.put(MediaStore.MediaColumns.DATA, filepath);

    return context.getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);
}
如果您需要其他的指针,可以查看MediaStore.Images.Media.insertImage

感谢您的帮助。如果我理解正确,您的解决方案会创建一个新文件夹,并不像普通相机应用程序那样将图像保存在文件夹中?我希望它们能保存在与相机创建的图片相同的文件夹中。 - lukas
1
从ContentValues中删除MediaColumns.DATA条目,因为它指定了图像的位置。接下来将图像保存到getContentResolver().insert()返回的位置。如果您查看我提供的第二个链接(insertImage),它提供了如何完成此操作的示例。 - jimmithy
非常感谢!现在它按照我想要的方式工作了。感谢您的帮助。 - lukas
很高兴能够帮到您 :) 不要忘记将此答案标记为正确答案,以便其他寻找相同答案的人可以找到。 - jimmithy
@jimmithy,我有一个位图,而不是文件路径,那么我如何使用上述方法存储它。 - Ali Ansari
显示剩余3条评论

0
你是否正确导入了 java.util.Date 类?也许自动导入了 sql 中的类,这是一个常见的错误。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接