你的位置:首页 > 操作系统

[操作系统]Android调用系统相机功能


  在常规应用开发过程中,我们经常会使用到手机的相机功能,通过调用系统相机方便快捷的帮助我们实现拍照功能,本篇我将带领大家实现一下,如何通过调用系统相机实现拍照。

  第一种:调用系统相机拍照,通过返回的照片缩略图展示我们的拍照图片

  打开系统相机:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);startActivityForResult(intent, TAKE_PICTURE);// 如果用Activity.RESULT_OK,onActivityResult()不会被回调

  处理拍照返回参数:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {  if (resultCode == RESULT_OK) {    // 获取系统默认返回图片(缩略图)    if (requestCode == TAKE_PICTURE) {      Bundle bundle = data.getExtras();      bitmap = (Bitmap) bundle.get("data");    }    // 显示图片    iv.setImageBitmap(bitmap);  }}

  是不是很简单,不过有一点很不好,那就是返回的图片是缩略图,那么如何获得拍摄的高清图片呢?

  第二种:保存拍照的照片到指定文件,通过文件路径显示拍照照片

private static final int ADD_IMAGE_ONE = 1;//拍摄照片返回值private String path;//拍照后图片保存的路径private String fileName;//保存文件的文件名path = Environment.getExternalStorageDirectory() + "/CeShi/Image/";File file = new File(path);//创建路径if (!file.exists()) {  file.mkdirs();}fileName = "copyImage.jpg";File f = new File(path+fileName);if(!f.exists()){  try {    f.createNewFile();//创建文件  } catch (IOException e1) {    e1.printStackTrace();  }}Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));startActivityForResult(intent, ADD_IMAGE_ONE);

  拍摄完成后数据处理:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {    super.onActivityResult(requestCode, resultCode, data);if (resultCode == Activity.RESULT_OK){  switch (requestCode) {    case ADD_IMAGE_ONE://拍照照片//     Toast.makeText(mContext, "拍照完成", Toast.LENGTH_SHORT).show();     iv.setImageBitmap(BitmapFactory.decodeFile(path + fileName));      break;    default:      break;    }        }}    

  好了,关于调用系统相机完成照片拍摄的知识,就为总结完毕,希望对大家有所帮助。源码下载:http://pan.baidu.com/s/1sjZMUQx