zoukankan      html  css  js  c++  java
  • 拍照-----------android系统 至关重要的功能

     一 在Android 中,拍照对应的Action 是android.provider.MediaStore.ACTION_IMAGE_CAPTURE. 用于拍照的Activity 需要返回照片图像数据,

    摄像对应的Action 是android.provider.MediaStore.ACTION_VIDEO_CAPTURE

    因此需要使用startActivityForResult()来启动 Activity .代码如下:

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    startActivityForResult(intent,1);

    截获 Activity 返回的图像数据的事件方法是onActivityResult ,代码如下:

    protected  void onActivityResult(int  requestCode,  int resultCode, Intent data){

         if(requestCode == 1){

               if(resultCode == Activity.RESULT_OK){

                     Bitmap  bitmap = (Bitmap)data.getExtras().get("data");        //   拍照 Activity 保存图像数据的 key 是 data,返回的数据类型是 Bitmap 对象

                    imageView.setImageBitmap(bitmap);        //   在 ImageView 组件中显示拍摄的照片

            }

         }

         super.onActivityResult(requestCode, resultCode, data);

    }

    系统拍照功能 具体代码请参见 ch14_systemcamera 工程

    注意:  使用系统的拍照 通常很难拍摄大辨率的照片,但可以生成分辨率更小的照片.通过insertImage  方法可以同时在  /sdcard/DCIM/.thumbnails 和 /sdcard/DCIM/Camera  目录中分别生成分辨率为 50 X 50 和 208 X 312的图像, 代码如下:

    MediaStore.Images.Media.insertImage(getContentResolver(), cameraBitmap,null,null);

    其中 cameraBitmap 是拍照 Activity 返回的 Bitmap对象

    二 实现用户自定义拍照 Activity

    拍照的核心类是 android.hardware.Camera,通过Camera类的静态 open 可以获得Camera对象,并通过Camera 类的startPreview 方法开始拍照,最后通过Camera 类的takePicture 方法结束拍照,并在相应的事件中处理照片数据

    具体步骤如下:

    1    指定用于显示拍照过程影像的容器,通常是SurfaceHolder 对象。

    2    在拍照过程中涉及到一些状态的变化: 这些状态包括开始拍照(对应surfaceCreated 事件方法);拍照状态变化(对应surfaceChanged 事件方法);  结束拍照(对应surfaceDestroyed 事   件  方法)。这3个方法都是在SurfaceHolder.Callback 接口中定义的, 因此,需要使用SurfaceHolder 接口的addCallback 方法指定 SurfaceHolder.Callback 对象,以便实现这3种方法

    3   拍完照后需要处理照片数据。处理这些数据的工作需要在PictrueCallback 接口的onPictureTaken方法中完成。当调用Camera 类的takePicture 方法后,onPictureTaken 方法被调 用.

    4   如果需要自动对焦,需要调用Camera 类的 autoFocus 方法.该方法需要一个 AutoFocusCallback 类型的参数值. AutoFocusCallback 是一个接口,在该接口中定义了一个onAutoFocus 方法,当摄像头正在对焦或对焦成功都会调用该方法.

    具体代码请参见 ch14_camera工程

    特别注意: 用户自定义的拍照功能必须声明权限 <uses-permission android:name="android.permission.CAMERA" /> ,但在调用系统提供的拍照功能时并不需要声明

  • 相关阅读:
    第六次作业--结对编程第二次
    第四次作业——项目选题报告
    第五次作业——结对
    第三次作业——团队项目展示
    第二次作业——个人项目实战
    第一次作业-准备
    码农开富农,锄头得先拿
    一个关于狗记录的Java练习
    一个随手练的题目后面再弄一个带面版的
    java拓荒者
  • 原文地址:https://www.cnblogs.com/daishuguang/p/3863934.html
Copyright © 2011-2022 走看看