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());
}
}