Android调用系统照相机程序


Android手机关于Camera的使用,一是拍照,二是摄像,由于Android提供了强大的组件功能,为此对于在Android手机系统上进行Camera的
开发,我们可以使用两类方法:一是借助Intent和MediaStroe调用系统Camera App程序来实现拍照和摄像功能,二是根据Camera API自写
Camera程序。由于自写Camera需要对Camera API了解很充分,而且对于通用的拍照和摄像应用只需要借助系统Camera App程序就能满足要求
了,为此先从调用系统Camera App应用开始来对Android Camera做个简单的使用小结。调用系统Camera App实现拍照和摄像功能实现拍照在
菜单或按钮的选择操作中调用如下代码,开启系统自带Camera APP,并传递一个拍照存储的路径给系统应用程序,具体如下:

//指定拍照后存储的路径。
File vFile = new File(imgPath);
if(!vFile.exists())
{
<span style="white-space:pre">	</span>vFile.mkdirs();
}
Uri uri = Uri.fromFile(vFile);
//将路径使用"file://"
Intent intetn = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intetn.putExtra(MediaStore.EXTRA_OUTPUT, uri);
MainActivity.this.startActivityForResult(intetn, 1);
//调用系统照相程序。


上面使用的是startActivityForResult,所以最好需要重载void onActivityResult(int requestCode, int resultCode, Intent data)函数,不过因为当传入文件路径的的情况下,data返回参数是null值,只要resultCode为RESULT_OK,则上述代码中/sdcard/test/img.jpg的图片文件就是最新的照片文件。所以我们在这里只需给出如下简单的代码,将其显示到ImageView中

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{
	super.onActivityResult(requestCode, resultCode, data);
	if (resultCode == RESULT_OK)
	{
		imageView.setImageURI(Uri.fromFile(new File("/sdcard/test/img.jpg")));
	}
}

假设不传参数MediaStore.EXTRA_OUTPUT的情况下,onActivityResult函数在resultCode为RESULT_OK的情况下,data返回的参数是经过实际拍摄照片经过缩放的图像数据,可以通过类似如下方法来打印缩放图像的尺寸

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{
<span style="white-space:pre">	</span>super.onActivityResult(requestCode, resultCode, data);
	if (resultCode == RESULT_OK)
	{
		Bitmap bmp = (Bitmap)data.getExtras().get("data");
		Log.d("Test", "bmp width:" + bmp.getWidth() + ", height:" + bmp.getHeight());
	}
}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值