Bundleextras=intentgetextras;
paທ9droidmediaທ9๗t;
为了通过一个意图利用camera应用程序,我们所要做的仅仅是必须ี构造一个将由上述过滤器捕获的意图。
如果没有Android的开人员,那ว么เ本书也不会被撰写。感谢他们,特别ี是来自google的davesparks,他提供了一些非常宝贵的事实检测和问题解答。
imv=imagevie9findvie9Byidridreturnedimagevie9;๙
imvsetimageBitmaທpbmp;
当运行这个示例时,您可能ม会注意到结果图像很小在我的手机上,它的宽为12๐1้像素,高为162像素。其他设备会具有不同的默认大小。这不是一个ฐbug——相反,它是经过精心设计的。当通过一个意图触时,cນamera应用程序不会将全尺寸的图像返回给主调活动。通常,这样做需要大量的内存,而移动设备一般会在内存方面受限。相反,cນamera应用程序将在返回的意图中返回一幅很小的缩略图,如图1-2所示。
为ฦ了绕过大小限制,从Android15开始,在大多数设备上可以将一个ฐ附加值传递给触cນaທmera应用程序的意图。这个ฐ附加值的名称在mediastore类中指定,它是一个常量,称为ฦextrA_ຕoutput。这个附加值采用名-值对的形式将以uri的方式指示ิcameraທ应用程序您想要将捕获的图像保存在什么เ位置。
以下代码片段指示camera应用程序应该将图像保存到设备的sd卡上,文件名为myfaທvoritepicນturepg。
stringimaທgefilepaທth=environmentgetexternalstoraທgedirectory
getAbsolutepaທth+"myfaທvoritepicturepg";
fileimagefile=ne9๗apaທth;
uriimaທgefileuri=urifromfileimagefile;๙
intenti=ne9๗aທprovidermediaທstoreA9_imAge_ຕcນApture;
iputextraaທndroidprovidermediastoreextrA_output,ไimaທgefileuri;
startActivityforresulti,ไcAmerA_resu
注意:上述为图像文件创建uri的代码片段可以简化为下列形式:
imaທgefileuri=uriparse"file:๘sdcaທrdmyfavoritepicturepg"ิ;
然而在实践中,使用以上所示的方แ法将会使得代码更加具有设备独立性,并且对于sd卡的命名约定或本地文件系统的uri语法变化具有更好的适应性。