个人封装的一个Camera类

好久不写博客了,代码写了不少,但大多数都是拿来主义,要不是网上,要不就是自己以前的代码拼装。

新工作是搞Android开发的,最近任务要求我封装一个Carmera类,自己也觉得还是封装以后方便使用,弄了半天写好一个,可以调用手机前置后置摄像头进行拍照摄像,并可以根据设置相机各种参数,进行保存。发到这里分享下。


package com.hourglass.camerademo;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;

import android.content.Context;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.hardware.Camera;
import android.hardware.Camera.CameraInfo;
import android.hardware.Camera.PictureCallback;
import android.hardware.Camera.Size;
import android.media.MediaRecorder;
import android.os.Build;
import android.os.Environment;
import android.os.StatFs;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;

/**
 * 拍照录像封装类
 * 
 * @author Hourglass 2014年4月21日 Q331956750
 * @version 1.2
 */
public class MediaCamera {
	private static int cameraPosition = Camera.CameraInfo.CAMERA_FACING_FRONT;

	private static String tag = "MediaCamera---------------------";

	private static int back_PictureWidth;
	private static int back_PictureHeight;
	private static int back_PreviewWidth;
	private static int back_PreviewHeight;
	private static int back_degrees;
	private static String back_FocusMode;
	private static int back_pixel_format;

	private static int front_PictureWidth;
	private static int front_PictureHeight;
	private static int front_PreviewWidth;
	private static int front_PreviewHeight;
	private static int front_degrees;
	private static String front_FocusMode;
	private static int front_pixel_format;

	private static int back_output_format;
	private static int back_video_encoder;
	private static int back_Video_width;
	private static int back_Video_height;
	private static int back_Video_rate;

	private static int front_output_format;
	private static int front_video_encoder;
	private static int front_Video_width;
	private static int front_Video_height;
	private static int front_Video_rate;

	private Bitmap mBitmap = null;

	private MediaRecorder mediarecorder;
	public boolean isRecording;

	private static String DefaultImagePath = Environment
			.getExternalStorageDirectory().getPath() + "/Pictures/";
	private static String DefaultImageName = "Image";
	private static String DefaultVedioPath = Environment
			.getExternalStorageDirectory().getPath() + "/Pictures/";
	private static String DefaultVedioName = "Video";

	private Camera camera = null;
	private SurfaceView surfaceView = null;
	private SurfaceHolder surfaceHolder = null;

	public MediaCamera(SurfaceView surfaceView) {
		super();
		this.surfaceView = surfaceView;
		surfaceHolder = surfaceView.getHolder();
		surfaceHolder.addCallback(surfaceHolderCallback);
		if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB)
			surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
	}

	/******************************* 静态检测类 ********************************************/
	/**
	 * 检测设备是否有摄像头
	 * 
	 * @param context
	 *            运行上下文
	 * @return 若有摄像头 返回true 若无返回false
	 */
	public static boolean checkCam
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值