我简直不能相信我已经为这个简单的问题挣扎了几个小时了,但是我无法使它正常运行。原则上,我想要的功能是:
用户点击按钮。触发一个ACTION_IMAGE_CAPTURE意图并打开默认的相机应用程序。用户拍照后返回到我的应用程序。我的应用程序显示缩略图。点击缩略图会打开图像查看器。
实际上非常简单。通过这个指南,似乎只需要复制和粘贴就可以了:https://developer.android.com/training/camera/photobasics.html。但魔鬼在细节中。
目前,它确实可以工作,但性能很差,因为我会即时创建缩略图(在我的实际应用程序中,我为RecyclerView中每个条目显示多个缩略图)。我希望有一种简单的方法,我在浏览了数十个Stack Overlow问题后忽略了它。
理想情况下,我希望触发我的ACTION_IMAGE_CAPTURE意图,让默认的相机应用程序生成缩略图,在系统的缩略图和图像内容提供程序中存储缩略图和图像,并最终在onActivityResult()中获取相应的content:// URIs。那将是非常好的……
现在,我面临的问题如下:
1.调用onActivityResult()中的结果意图的getData()时收到的URI始终为null,无论是否给出MediaStore.EXTRA_OUTPUT值。
2.当省略MediaStore.EXTRA_OUTPUT额外时,我会以位图形式而不是content:// URI形式获得缩略图。因此,如果不想在下次启动我的活动时生成它,我必须自己保存缩略图。
3.如果将内容:// URI传递给相机以保存图像,则不理解为什么我不会获得缩略图。我的意思是,相机已经将图像加载到内存中,并可以轻松生成缩略图。但是,相反,我必须再次从磁盘加载多个MB才能生成缩略图。即使在之后保存缩略图,这似乎也是一种巨大的浪费。
4.我读过一些相机应用程序实际上会在任何情况下创建缩略图并将其提供给画廊或其他东西。但是似乎没有标准化。
所以,我想我的两个content:// URIs的愿望根本行不通。但是,在我继续自己生成(最终重复)缩略图并在我的应用程序中进行持久化和缓存之前,我想问:
有没有我不知道的简单方法?是否可能检索图像和缩略图,还是我必须自己生成缩略图?
注意:我希望通过让安卓将其添加到媒体数据库中,使我的应用程序拍摄的照片可以在画廊中使用。我无法想象每个访问该媒体数据库(如画廊)的应用程序都会创建自己的缩略图集合,对吧?
提前感谢!
用户点击按钮。触发一个ACTION_IMAGE_CAPTURE意图并打开默认的相机应用程序。用户拍照后返回到我的应用程序。我的应用程序显示缩略图。点击缩略图会打开图像查看器。
实际上非常简单。通过这个指南,似乎只需要复制和粘贴就可以了:https://developer.android.com/training/camera/photobasics.html。但魔鬼在细节中。
目前,它确实可以工作,但性能很差,因为我会即时创建缩略图(在我的实际应用程序中,我为RecyclerView中每个条目显示多个缩略图)。我希望有一种简单的方法,我在浏览了数十个Stack Overlow问题后忽略了它。
理想情况下,我希望触发我的ACTION_IMAGE_CAPTURE意图,让默认的相机应用程序生成缩略图,在系统的缩略图和图像内容提供程序中存储缩略图和图像,并最终在onActivityResult()中获取相应的content:// URIs。那将是非常好的……
现在,我面临的问题如下:
1.调用onActivityResult()中的结果意图的getData()时收到的URI始终为null,无论是否给出MediaStore.EXTRA_OUTPUT值。
2.当省略MediaStore.EXTRA_OUTPUT额外时,我会以位图形式而不是content:// URI形式获得缩略图。因此,如果不想在下次启动我的活动时生成它,我必须自己保存缩略图。
3.如果将内容:// URI传递给相机以保存图像,则不理解为什么我不会获得缩略图。我的意思是,相机已经将图像加载到内存中,并可以轻松生成缩略图。但是,相反,我必须再次从磁盘加载多个MB才能生成缩略图。即使在之后保存缩略图,这似乎也是一种巨大的浪费。
4.我读过一些相机应用程序实际上会在任何情况下创建缩略图并将其提供给画廊或其他东西。但是似乎没有标准化。
所以,我想我的两个content:// URIs的愿望根本行不通。但是,在我继续自己生成(最终重复)缩略图并在我的应用程序中进行持久化和缓存之前,我想问:
有没有我不知道的简单方法?是否可能检索图像和缩略图,还是我必须自己生成缩略图?
注意:我希望通过让安卓将其添加到媒体数据库中,使我的应用程序拍摄的照片可以在画廊中使用。我无法想象每个访问该媒体数据库(如画廊)的应用程序都会创建自己的缩略图集合,对吧?
提前感谢!