我们有个需求,在机器上加个摄像头,定时拍照;
我到网上搜索,发现没有快速上手和简单使用的;
个人感觉,大部分博客写得很乱,或者长篇大论;
而我只想简单实现功能,并不打算学习多少理论;
下面代码是我写来测试的,大家有需要可以参考;
能快速看到效果,实际使用可在这个基础上扩展。
先看下我使用的硬件,Android板和摄像头,如图:
首先我想说一下 SurfaceView 这个东西,这个是你希望在界面上看到摄像头拍到的内容(就是所谓“预览”)时才需要,如果你不需要预览可以不用它,不用它照样可以取得摄像头数据。
下面是我主要代码,大家看下一就明白,不用解析了,如下:
package com.wongo.test.CommCamera;
import android.graphics.SurfaceTexture;
import android.hardware.Camera;
import android.view.SurfaceHolder;
import java.util.List;
public class WGCameraManage {
Camera mCamera;
SurfaceTexture mSurfaceTexture = new SurfaceTexture(0);
/**
* 打开摄像头
* @param cameraId 如:Camera.CameraInfo.CAMERA_FACING_BACK
* @param surfaceHolder 用于预览的SurfaceHolder,可为null
* @param previewCallback 预览回调,可为null
* @return 返回null表示成功,其它表示具体错误信息
*/
public String openCamera(int cameraId, SurfaceHolder surfaceHolder, Camera.PreviewCallback previewCallback) {
releaseCamera();
// 判断是否存在cameraId的相机
boolean isExistCamera = false;
Camera.CameraInfo info = new Camera.CameraInfo();
for (int i = 0; i < Camera.getNumberOfCameras(); i++) {
Camera.getCameraInfo(i, info);
if (info.facing == cameraId) {
isExistCamera = true;
break;
}
}
if (isExistCamera) {
//初始化相机配置信息
try {
mCamera = Camera.open(cameraId);
int width = 0;
int height = 0;
Camera.Param