摄像头-Android开发

在Android中有两种使用摄像头的方式:

  1. 调用系统照相机应用
  2. 直接使用Android提供的 Camera API

第一种方式

我们可以使用 MediaStore.ACTION_IMAGE_CAPTURE 调用Android系统中已安装的照相机应用:

MediaStore中除了上面的ACTION_IMAGE_CAPTURE,它还提供:

  • INTENT_ACTION_VIDEO_CAMERA:以摄像模式启动照相机应用
  • ACTION_VIDEO_CAPTURE:调用Android系统中已安装的摄像机应用
  • EXTRA_SCREEN_ORIENTATION:设置屏幕的旋转旋转方向(竖直或水平)
  • EXTRA_FULL_SCREEN:用来控制ViewImage的用户界面
  • EXTRA_SIZE_LIMIT:限制图像/视频的分辨率
  • ACTION_IMAGE_CAPTURE_SECURE:在设备锁定状态下捕获图像

然后使用 startActivityForResult() 启动 Activity:

上面这个方法在 Activity 中定义,可以直接在main activity中调用。还有完成同样功能的其他方法:

  • startActivityFromChild():当activity是其activity的子activity
  • startActivityFromFragment():从fragment中启动activity

例子

这个示例完成的功能:调用系统照相机拍照,然后在Bitmap显示拍的照片。

首先使用Android Studio创建一个空项目;

创建用户界面;activity_main.xml

MainActivity.java中的代码:

编译运行:

S60615-173322

S60615-173331

第二种方式

本方法直接调用 camera API;

首先初始化Camera对象:

Camera中的方法:

  • getCameraInfo(int cameraId, Camera.CameraInfo cameraInfo):获得关于摄像头的信息
  • getNumberOfCameras():设备上可用的摄像头个数
  • lock():锁定摄像头防止其他应用使用
  • release():如果你使用了lock(),调用这个方法解锁
  • open(int cameraId):打开一个摄像头,cameraId指定打开哪个摄像头
  • enableShutterSound(boolean enabled):快门声
  • startFaceDetection():开启人脸识别
  • stopFaceDetection():停止人脸识别
  • startSmoothZoom(int value):平滑缩放
  • takePicture:拍照

Camera 用来控制摄像头、从摄像头抓取视频和图像。

我们还需要创建一个 SurfaceView,用来提供摄像头预览。

 例子

首先使用Android Studio创建一个空项目;

在 AndroidManifest.xml 文件中添加一些权限:

创建用户界面;activity_main.xml

MainActivity.java中的代码:

编译运行:

S60615-183321

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注