android 照相机开发,Android相机开发指南(三)

Android相机开发指南(三)

这篇是这个指南中比较短的一篇,其实对于从相册中取出一张图片来显示实在是没什么难的。

使用 Intent.ACTION_PICK你可以通过android的 content provider 获取各类多媒体文件。在本例中,我们将使用ACTION_PICK执行一个基本操作:打开Android图片库,选择一个图像,显示在ImageView上。相关代码在示例工程中有。

打开SimpleAndroidPickerFragment 文件,你可以看到:

@Override

publicvoidonClick(Viewview){

Intenti=newIntent(Intent.ACTION_PICK,

android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

startActivityForResult(i,IMAGE_PICKER_SELECT);

}

/**

* Photo Selection result

*/

publicvoidonActivityResult(intrequestCode,intresultCode,Intentdata){

if(requestCode==IMAGE_PICKER_SELECT&&resultCode==Activity.RESULT_OK){

MainActivityactivity=(MainActivity)getActivity();

Bitmapbitmap=getBitmapFromCameraData(data,activity);

mSelectedImage.setImageBitmap(bitmap);

}

}

从上边代码可以看到,当Fragment中的按钮被触发,一个Intent就会被分发去从EXTERNAL_CONTENT_URI 中获取一类媒体。当Activity result返回时,我们就可以保存并显示bitmap在我们的ImageView上。

这有部分保存bitmap的逻辑:

/**

* Use for decoding camera response data. *

*

* @param data

* @param context

* @return

*/

publicstaticBitmapgetBitmapFromCameraData(Intentdata,Contextcontext){

UriselectedImage=data.getData();

String[]filePathColumn={

MediaStore.Images.Media.DATA

};

Cursorcursor=context.getContentResolver().query(selectedImage,filePathColumn,null,

null,null);

cursor.moveToFirst();

intcolumnIndex=cursor.getColumnIndex(filePathColumn[0]);

StringpicturePath=cursor.getString(columnIndex);

cursor.close();

returnBitmapFactory.decodeFile(picturePath);

}

这里有点小逻辑需要注意一下,基本上我所做的是使用cursor,调用cursor.moveToFirst() 来查询‘last selected image’,这种方法会自动获取我们从相册中选取的图片。然后通过BitmapFactory进行转码。

翻译:@flyouting

时间:2014/03/19

源地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值