Android自定义相机_camera
来源:互联网 发布:疯狂的java讲义百度云 编辑:程序博客网 时间:2024/05/16 15:02
Android自定义camera
最近公司需要自定义camera,然后就查询了一些资料,仅供大家参考。
1.创建
这里自定义camera是基于SurfaceView写的,实现SurfaceHolder.Callback接口,
在surfaceCreated 中去打开相机,默认是打开前摄像头,在Android手机适配上这容易出现问题,还没找打解决方案
@Override public void surfaceCreated(SurfaceHolder holder) { mCamera = Camera.open(CameraInfo.CAMERA_FACING_BACK); }
2.预览
@Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { doStartPreview(mSurfaceHolder); }
具体的实现方法
public void doStartPreview(SurfaceHolder holder) { if (isPreviewing) { mCamera.stopPreview(); return; } if (mCamera != null) { List<Camera.Size> mSupportedPreviewSizes = mCamera.getParameters().getSupportedPreviewSizes(); DisplayMetrics displayMetrics = mContext.getResources().getDisplayMetrics(); Camera.Size mPreviewSize = CameraSize.getOptimalSize( mSupportedPreviewSizes, displayMetrics.widthPixels, displayMetrics.heightPixels ); Camera.Parameters mParams = mCamera.getParameters(); mParams.setPictureFormat(PixelFormat.JPEG); mParams.setPictureSize(mPreviewSize.width, mPreviewSize.height); // 设置图片尺寸为手机接近匹配尺寸 mParams.setPreviewSize(mPreviewSize.width, mPreviewSize.height); // 设置预览尺寸为手机接近匹配尺寸 mCamera.setDisplayOrientation(90); List<String> focusModes = mParams.getSupportedFocusModes(); if (focusModes.contains("continuous-video")) { mParams.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO); } mCamera.setParameters(mParams); try { mCamera.setPreviewDisplay(holder); mCamera.startPreview(); } catch (IOException e) { e.printStackTrace(); } isPreviewing = true; } }
主意设置预览和图片的尺寸,不然在预览和返回图片是会出现图片被拉伸的情况
设置的尺寸取的是接近手机尺寸
mParams.setPictureSize(mPreviewSize.width, mPreviewSize.height); // 设置图片尺寸为手机接近匹配尺寸 mParams.setPreviewSize(mPreviewSize.width, mPreviewSize.height); // 设置预览尺寸为手机接近匹配尺寸
3.view销毁
在这要 执行这个方法,不然会报错
@Override public void surfaceDestroyed(SurfaceHolder holder) { doStopCamera(); } public void doStopCamera() { if (null != mCamera) { mCamera.setPreviewCallback(null); mCamera.stopPreview(); isPreviewing = false; mCamera.release(); mCamera = null; } }
有参考网上的几篇文章,可是忘了收藏,在此谢过
项目源码https://github.com/AlanPanYun/CustomCamera1
阅读全文
0 0
- Android自定义相机_camera
- Android开发_Camera应用
- Android开发知识_Camera & Recorder
- Android 自定义相机
- android自定义相机
- Android自定义相机
- android 自定义相机
- android 自定义相机
- android 自定义相机
- android自定义相机
- android自定义相机功能
- Android-自定义相机
- 自定义相机Camera-android
- android 自定义相机
- Android自定义相机
- Android自定义相机--2
- Android自定义相机
- Android自定义相机
- 【洛谷T7152】(考试题目)细胞
- 工厂设计模式
- 淘淘商城系列(四)后台商品列表展示
- 算法之二项分布(c/c++版)
- (二)Zygote和System进程的启动过程
- Android自定义相机_camera
- Redis--java存取Redis中的数据
- C++ 学习零零碎碎 未完
- LeetCode 1. Two Sum
- hibernate_使用c3p0连接池配置
- MySQL添加新用户、为用户创建数据库、为新用户分配权限 标签: MySQL 2016-12-17 16:41 2768人阅读 评论(0) 收藏 举报 分类: =======学习心得=======
- Unity3D事件函数执行顺序
- JZOJ 1776. 经济编码 (Standard IO)
- 产生冠军 (快速AC代码)