Android调用系统照相机程序

来源:互联网 发布:百度推广淘宝产品 编辑:程序博客网 时间:2024/05/02 00:46


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中

@Overrideprotected 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返回的参数是经过实际拍摄照片经过缩放的图像数据,可以通过类似如下方法来打印缩放图像的尺寸

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







0 0