• 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

  • 相关阅读:
    [RxSwift教程]14、其他操作符:delay、materialize、timeout等
    [RxSwift教程]13、连接操作符:connect、publish、replay、multicast
    Java虚拟机类加载机制及双亲委派模式分析
    面试系列-如何设计一个类
    谈谈 MySQL 的 JSON 数据类型
    Java 多线程编程(2-异步中包含同步)
    还堵在高速路上吗?带你进入Scratch世界带你飞
    SQL Server SSIS相关介绍
    SQL Server开启READ_COMMITTED_SNAPSHOT
    SqlServer中select语句引起的死锁
  • 原文地址:https://www.cnblogs.com/AndroidJotting/p/5064192.html
Copyright © 2020-2023  润新知