使用内置的Camera应用程序捕获图像(4)(1 / 1)

加入书签 本章报错

Android多媒体开发高级编程强烈推荐:

从意图中获取附加值

Bitmapbmp=๡B๦itmapextraທsget"data"ิ;

camera应用程序在其清单文件中指定了以下意图过滤器。这里显示ิ的意图过滤器包含在“cameraທ”活动标记内。

在实践中,我们可能不希望直接使用动作字符串ธ创建意图。在这种情况下,可以指定mediaທstore类中的常量A9๗_imAge_cນA๥pture。应该使用常量而非字符串本身的原因在于,如果该字符串生了改变当然常量也可能会不断ษ地改变,那么使用常量将使得我们的调用比之前๩使用字符串更有利于未来的变化。

把所有这些都先搁在一边,让我们开始学习๤本书吧!

imv=imagevie9๗findvie9๗Byidridreturnedimaທgevie9๗;

imvsetimaທgeB๦itmapbmp;๙

当运行这个示ิ例时,您可能会注意到เ结果图像很小在我的手机上,它的宽为1้21像素,高为1้6๔2像素า。其他设备会具有不同的默认大小。这不是一个ฐbug——相反,它是经过精心设计的。当通过一个意图触时,cນaທmera应用程序不会将全尺寸的图像返回给主ว调活动。通常,这样做需要大量的内存,而移动设备一般会在内存方แ面受限。相反,cນaທmera应用程序将在返回的意图中返回一幅很小的缩略图,如图1-2所示。

为了绕过大小限制,从Android15开始,在大多数设备上可以将一个ฐ附加值传递给触cນamera应用程序的意图。这个附加值的名称在mediastore类中ณ指定,它是一个ฐ常量,称为extrA_output。这个附加值采用名-值对的形式将以uri的方แ式指示ิcamera应用程序您想要将捕获的图像保存在什么位置。

以下代码片段指示ิcaທmera应用程序应该将图像保存到设备的sd卡上,文件名为myfavoritepicturepg。

stringimagefilepath=environmentgetexternalstoragedirecນtory

getA๥bsolutepaທth+"myfavoritepicturepg"ิ;๙

fileimagefile=ne9aທpaທth;

uriimagefileuri=urifromfileimagefile;

intenti=๡ne9๗aprovidermediastoreA9_imAge_cA๥pture;

iputextraandroidprovidermediastoreextrA_output,ไimagefileuri;

staທrtAcນtivityforresulti,cA๥merA_resu

注意:上述为ฦ图像文件创建uri的代码片段可以简化为ฦ下列形式:

imagefileuri=uriparse"file:sdcardmyfavoritepicturepg";

然而在实践中ณ,使用以上所示的方法将会使得代码更加具有设备独立性,并且对于sd卡的命名约定或本地文件系统的uri语法变化具有更好的适应性。

↑返回顶部↑

书页/目录

Android多媒体开发高级编程