Android:拍照后预览图片,保存前。

6

我已经成功地开发了一个完整的相机应用程序,但是在保存照片之前,我希望能够在屏幕上显示捕获的照片(它们不会被发送到图库)。我进行了广泛的谷歌搜索,但找不到相关的内容。我也不知道如何开始处理,因此如果您有任何建议或相关信息的链接,那将非常棒。谢谢!


你如何在没有访问图像的情况下拥有完整的相机应用程序?(即如何获取和保存图像?) - StenSoft
它正在保存到图库中。我的意思是,我希望图片显示出来,并提供保存或取消选项,以便返回相机重新拍摄。我对Android还比较新,如果我忽略了一个非常明显的答案,我很抱歉。 - SirNick92
所以你正在使用相机应用程序拍照片(不是你的应用程序在拍摄)? - StenSoft
哦,不,这是一个自定义应用程序。我有一个方法,现在创建一个图库目录,然后另一个方法将媒体文件保存到该目录中。 - SirNick92
如果您有一个接受媒体文件的方法,为什么不显示它并询问用户呢? - StenSoft
我想这是我的问题,我该如何显示它?我必须使用位图还是可以直接放在表面显示上? - SirNick92
1个回答

10

首先,我假设您正在使用原始的相机API,而不是Camera2。该功能确实内置于预览捕获中,因此我假设您的代码只是清除了预览太快。

在调用Camera.startPreview()以在活动表面上呈现实时预览之后,随着某个时间点调用Camera.takePicture()来触发图像捕获,并将结果返回给PictureCallback。一旦图像被捕获,相机预览表面即冻结在该帧上,直到重新启动为止。因此,只要您在onPictureTaken()内部不再调用Camera.startPreview()来重新启动该过程,则SurfaceView将保持冻结在您想让用户看到的帧上。

然后,如果他们想保存,您可以将JPEG数据写入磁盘,如果不需要则丢弃该数据。


伙计...我爱你。我想点赞,但我还需要一个声望 -_- 我猜现在只能接受答案了。 - SirNick92
现在(2019+)使用相机API 1而不是2有什么危害吗?例如在安装了Android 8+的新设备上。 - kevoroid
在锁定/解锁屏幕时,由于onResume中调用了startpreview,因此冻结的图像被实时摄像头替换。是否有办法在应用程序恢复时保留图像? - Arun Inbasekaran

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