Android 开发 Camera类的拍照与录像

前言    

  在开发Android应用的时候,如果需要调用摄像头拍照或者录像,除了通过Intent调用系统现有相机应用进行拍照录像之外,还可以通过直接调用Camera硬件去去获取摄像头进行拍照录像的操作。本篇博客将讲解如何在Android应用中通过Camera拍照录像。

  参考博客:https://www.cnblogs.com/plokmju/p/android_Camera.html

Camera api 说明

  Camera是Android摄像头硬件的相机类,位于硬件包"android.hardware.Camera"下。它主要用于摄像头捕获图片、启动/停止预览图片、拍照、获取视频帧等,它是设备本地的服务,负责管理设备上的摄像头硬件。

  Camera既然用于管理设备上的摄像头硬件,那么它也为开发人员提供了相应的方法,并且这些方法大部分都是native的,用C++在底层实现,下面简单介绍一下Camera的一些方法:

api 说明
open() 打开Camera,返回一个Camera实例。
open(int cameraId) 根据cameraId打开一个Camera,返回一个Camera实例。
release() 释放掉Camera的资源。
getNumberOfCameras() 获取当前设备支持的Camera硬件个数。
getParameters() 获取Camera的各项参数设置类。
setParameters(Camera.Parameters params) 通过params把Camera的各项参数写入到Camera中。
setDisplayOrientation(int degrees) 摄像预览的旋转度。
setPreviewDisplay(SurfaceHolder holder) 设置Camera预览的SurfaceHolder。
starPreview() 开始Camera的预览。
stopPreview() 停止Camera的预览
setPreviewCallback() 设置预览回调
reconnect() 重新连接
autoFocus(Camera.AutoFocusCallback cb) 自动对焦
cancelAutoFocus() 取消启动对焦
setAutoFocusMoveCallback() 自动对焦移动回调
takePicture(Camera.ShutterCallback shutter,Camera.PictureCallback raw,Camera.PictureCallback jpeg) 拍照。
enableShutterSound() 启用快门声音
lock() 锁定Camera硬件,使其他应用无法访问。
unlock() 解锁Camera硬件,使其他应用可以访问。
startFaceDetection() 启动人脸识别
stopFaceDetection() 停止人脸识别
setFaceDetectionListener() 人脸识别监听回调
setPreviewCallback() 设置预览回调
setPreviewCallbackWithBuffer() 设置预览缓冲回调
setOneShotPreviewCallback() 设置一个镜头预览回调
setErrorCallback() 设置异常回调
startSmoothZoom() 启动平滑缩放
stopSmoothZoom() 停止平滑缩放
setZoomChangeListener() 缩放监听
setPreviewTexture() 设置预览纹理

  

 

上面已经介绍了Camera的常用方法,下面根据这些方法详细讲解Android下使用Camera开发拍照应用最基本的过程:

  1. 使用open()方法获取一个Camera对象,鉴于Android设备可能配置了多个摄像头,open()方法可以通过摄像头Id开启指定的摄像头。
  2. 为Camera对象设置预览类,它是一个SurfaceHolder对象,通过setPreviewDisplay(SurfaceHolder)方法设置。
  3. 调用startPreview()方法开始Camera对象的预览。
  4. 调用takePicture()方法进行拍照,其中可以通过Camera.PictureCallback()回调获得拍摄的Image数据。
  5. 当拍摄完成后,需要调用stopPreview()方法停止预览,并使用release()释放Camera占用的资源。

  以上介绍的步骤都是最基本的过程,是必不可少的。Camera没有提供公开的构造函数,只能通过open()方法获取,并且必须设置一个预览类SurfaceHolder,如果不设置的话,将无法使用Camera。在使用完成Camera之后,必须使用release()释放Camera资源。

Parameters api 说明:

    

原文地址:https://www.cnblogs.com/guanxinjing/p/9871971.html

时间: 2025-01-21 22:55:36

Android 开发 Camera类的拍照与录像的相关文章

android开发——camera类拍照指定图片大小

android拍照开发 android开发实现拍照功能主要有两种方法: 直接调用系统照相机API实现拍照,拍完后,图片会保存在相册中,返回保存照片的路径,从而获取图片. 自己写SurfaceView调用camera来实现拍照,该方法触发一个回调,参数中包含一个图片字节数组,从而获取图片. 问题 当我们自定义相机时,需求需要指定拍照图片大小,然而不同手机会默认返回不同分辨率照片.所以需要对camera进行参数设置.通过设置setPictureSize,代码: // 获得相机参数 Camera.Pa

android.hardware.Camera类及其标准接口介绍

android.hardware.Camera类及其标准接口介绍,API level 19 http://developer.android.com/reference/android/hardware/Camera.html

Android开发之裁切(拍照+相册)图像并设置头像小结

先看效果:                                                   再贴代码: 自定义选择照片底部弹出对话框布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width=&

Android开发之裁切(拍照+相冊)图像并设置头像小结

先看效果:                                       watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="320" height="480" >             再贴代码: 自己定义选择照片底部弹出对话框布局:

android开发 - Application类

本文摘自google的android官网翻译,如果有不对的地方,请各位大神指点 网址:http://developer.android.com/reference/android/app/Application.html Application,Activity,Service,content provider都是Android框架的系统组件,当Android程序启动时系统会创建一个Application对象,用来存储系统的一些信息. 启动一个android应用程序,就等于启动了一个进程,一个进

android开发工具类总结(一)

一.日志工具类 Log.java 1 public class L 2 { 3 private L() 4 { 5 /* 不可被实例化 */ 6 throw new UnsupportedOperationException("Cannot be instantiated!"); 7 } 8 // 是否需要打印bug,可以在application的onCreate函数里面初始化 9 public static boolean isDebug = true; 10 private sta

Android 开发工具类 19_NetworkStateReceiver

检测网络状态改变类: 1.注册网络状态广播: 2.检查网络状态: 3.注销网络状态广播: 4.获取当前网络状态,true为网络连接成功,否则网络连接失败: 5.注册网络连接观察者: 6.注销网络连接观察者. 1 import java.util.ArrayList; 2 3 import android.content.BroadcastReceiver; 4 import android.content.Context; 5 import android.content.Intent; 6 i

Android 开发工具类 13_ SaxService

网络 xml 解析方式 1 package com.example.dashu_saxxml; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.util.HashMap; 6 import java.util.List; 7 8 import javax.xml.parsers.SAXParser; 9 import javax.xml.parsers.SAXParserFactory; 10

Android 开发工具类 10_Toast 统一管理类

Toast 统一管理类: 1.短时间显示Toast: 2.长时间显示 Toast: 3.自定义显示 Toast 时间. 1 import android.content.Context; 2 import android.widget.Toast; 3 4 // Toast 统一管理类 5 public class T 6 { 7 8 private T() 9 { 10 /* cannot be instantiated */ 11 throw new UnsupportedOperation