拍照并事后命名

时间:2018-05-27 14:21:29

标签: java android file android-camera-intent

我想用标准系统服务拍照

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);

和AFTERWARDS我想给它一个自定义名称和目录或路径(在我拍摄相机活动的照片之后应该在另一个活动中发生)

问题是,如果我创建一个包含所有属性(名称,路径)的文件并将其赋予意图,我不能在拍摄照片后在活动中执行此操作,而是在打开之前需要确定其属性意图(拍照)。 (正如Google文章中所述:https://developer.android.com/training/camera/photobasics#TaskPath

我应该只获取fullsize Bitmap然后打开其他活动,然后保存并确定其属性吗?

有没有办法按照文章中的建议去做,但不知怎的相反?(之后创建文件)

如果您有任何想法,请告诉我。

我告诉你任何帮助。 谢谢!

1 个答案:

答案 0 :(得分:1)

  

我想用标准系统服务拍照

您的代码正在启动数百个可能的相机应用程序中的任何一个。特定应用程序可能已由设备制造商预先安装,或者它可能是用户安装的应用程序。

  

问题是,如果我创建一个包含所有属性(名称,路径)的文件并将其赋予意图,我不能在拍摄照片后在活动中执行此操作,而是在打开之前需要确定其属性意图(拍照)。

正确。

  

我应该只获取fullsize Bitmap然后打开其他活动,然后保存并确定其属性吗?

没有办法让ACTION_IMAGE_CAPTURE直接给你一个“fullsize Bitmap”。您可以获取缩略图 - 尺寸Bitmap,也可以将完整尺寸的照片写入您选择的位置。

  

有没有办法按照文章中的建议去做,但不知怎的相反?(之后创建文件)

没有。但是,没有什么可以阻止您通过活动中的文件打开照片,然后修改该照片并将其写回。您可以覆盖原始文件,也可以写入新位置。

因此,举例来说,如果您担心自己不想让照片进入用户可访问的位置,直到您的活动完成,那么您可以将Uri传递给ACTION_IMAGE_CAPTURE指向getCacheDir()中的私人位置,然后让您的活动将照片的最终版本写入external storage上的文件。