图像存储和元数据(2)

content://media/external/images/media/16

您可能注意到的第一件事情是它看上去像普通的URL,正如在Web浏览器中所使用的一样;但是,它不是以类似http(传输网页的协议)的字符串开始,而是以content作为开始。在Android中,当一个Uri以content开始时,它将由内容提供器(如MediaStore)使用。

2. 检索保存的图像

对于之前所获得的用来保存图像的相同Uri,同样也可以将其用于访问该图像。无须将该文件的完整路径传递给BitmapFactory,相反,我们可以通过内容解析器为图像打开一个InputStream,并将它传递给BitmapFactory。

Bitmap bmp = BitmapFactory.decodeStream(

getContentResolver().openInputStream(imageFileUri), null, bmpFactoryOptions);

3. 后期添加元数据

在将图像捕获到MediaStore中之后,如果希望将图像与更多的元数据关联,那么可以使用内容解析器的update方法。除了现在直接使用其Uri访问图像文件之外,它与之前所用的insert方法非常类似。

// 更新记录的标题和描述

ContentValues contentValues = new ContentValues(3);

contentValues.put(Media.DISPLAY_NAME, "This is a test title");

contentValues.put(Media.DESCRIPTION, "This is a test description");

getContentResolver().update(imageFileUri,contentValues,null,null);

1.2.2  更新CameraActivity以使用MediaStore存储图像和关联元数据

以下代码是上述示例的更新,它将在MediaStore中保存图像,然后允许添加标题和描述。此外,该版本包含几个UI元素,我们将基于用户在该应用程序的操作进程对这些元素的可见性进行管理。

读书导航