参考如下:

https://github.com/googlearchive/android-Camera2Basic

https://www.jianshu.com/p/3440d82545f6

几个概念:

SurfaceView:图像显示的地方
SurfaceHolder:连接图像显示地方与外部的通道,相当于接口
Camera:摄像机

通过把SurfaceView与Camera串联起来,就可以实现视频的播放了。

步骤1:

初始化摄像机,获取前置摄像机和后置摄像机的信息以及ID

    void InitCameraInfo(){int numberOfCameras = Camera.getNumberOfCameras();// 获取摄像头个数Log.i(tag,"InitCameraInfo:"+numberOfCameras);for (int cameraId = 0; cameraId < numberOfCameras; cameraId++) {Camera.CameraInfo cameraInfo = new Camera.CameraInfo();Camera.getCameraInfo(cameraId, cameraInfo);Log.i(tag,"cameraInfo:"+cameraInfo.facing);if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) {// 后置摄像头信息mBackCameraId = cameraId;mBackCameraInfo = cameraInfo;} else if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {// 前置摄像头信息mFrontCameraId = cameraId;mFrontCameraInfo = cameraInfo;}}}

步骤2:先动态申请权限,再打开摄像机,并设置摄像机的显示角度

    void OpenCamera(int cameraId){if (false ==isRequiredPermissionsGranted()){Log.i(tag,"isRequiredPermissionsGranted false");if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {requestPermissions(REQUIRED_PERMISSIONS, REQUEST_PERMISSIONS_CODE);}return;}mCamera = Camera.open(cameraId);mCameraId = cameraId;mCameraInfo = cameraId == mFrontCameraId ? mFrontCameraInfo : mBackCameraInfo;mCamera.setDisplayOrientation(90);}

步骤3:获取SurfaceHolder,并设置到摄像机里面,然后开启预览,这样就可以查看视频了

        SurfaceView surfaceView =  findViewById(R.id.surfaceViewId);mSurfaceHolder = surfaceView.getHolder();                   mCamera.setPreviewDisplay(mSurfaceHolder);mCamera.startPreview();

步骤4:关闭预览

    void  CloseCamera(){if (null != mCamera){mCamera.release();mCamera = null;}}

整个android预览摄像机的步骤大概就上面几个。

还需要设置申请摄像机权限

 <uses-permission android:name="android.permission.CAMERA" />

android之camera相关推荐

  1. 【Android】Camera 使用浅析

    Camera的简单使用浅析 由于最近工作上用到android.hardware.Camera这个类,于是简单的学习了一些基本用法.  首先注意:Camera这个类在API21以后就不推荐使用了,官方提 ...

  2. android camera 实时滤镜,【Camera】Android平台Camera实时滤镜实现方法

    Android+JNI+OpenGL开发自己的美图秀秀 2016-01-18 16:39 阅读(5116) 评论(19) Android平台Camera实时滤镜实现方法探讨(十一)--实时美颜滤镜 2 ...

  3. android摄像头预览功能,android通过camera和surfaceview选择摄像头并即时预览

    在使用android设备的摄像头的时候我们有两种选择: 1.调用intent方法使用摄像头 2.通过camera类使用摄像头 第一种方法非常方便,不过需要跳到新的activity中,这样的用户体验并不 ...

  4. android中Camera setDisplayOrientation使用

    在 写相机相关应用的时候遇到捕获的画面方向和手机的方向不一致的问题,比如手机是竖着拿的,但是画面是横的,这是由于摄像头默认捕获的画面byte[]是根 据横向来的,而你的应用是竖向的,解决办法是调用se ...

  5. Android之Camera介绍

    Android Camera 使用小结 Android手机关于Camera的使用,一是拍照,二是摄像,由于Android提供了强大的组件功能,为此对于在Android手机系统上进行Camera的开发, ...

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

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

  7. Android studio设置相机权限,如何强制将“android.permission.CAMERA”权限添加到Codename中的清单中...

    我试图在Codename One中显示后置摄像头的实时预览.我使用原生界面(我首先针对的是Android). 为了让我的应用程序能够使用相机而不会弄乱构建提示,我在主窗体中添加了以下行: if (Ca ...

  8. android camera 动画,Android 使用Camera创建3D动画

    在Android中,可以使用android.graphics.Camera这个类进行3D变换 之前更改CameraUI的时候,需要做一个切换前后摄像头的翻转动画,刚开始在网上着了一些翻转动画的代码,合 ...

  9. camera android 版本,Camera for Android

    Camera for Android 介绍 Camera for Android We have designed HD camera app for you. Video capture featu ...

  10. android camera 显示过程,Android相机Camera基础知识

    一.概述本章节主要讲述的Android相机Camera的相关知识点,主要包含三个方面,Android启动系统相机生成缩略图.Android启动系统相机生成原图以及Android自定义相机等. 二.An ...

最新文章

  1. 数据挖掘原理与算法:Jupyter
  2. 所有编程皆为Web编程
  3. CentOS7虚拟机搭建xwiki
  4. view V_IBBINDING
  5. java 使用jar_Java 使用JAR文件
  6. SELinux 引起的 Docker 启动失败
  7. PyCharm将制表符转换为空格并显示的配置方法
  8. python 热力图_python数据分析:数据缺失机制及利用missingno库对缺失可视化
  9. 【报告分享】2020中国电商直播粉丝价值研究报告.pdf(附下载链接)
  10. Ecology 查询某人所有流程待办事项
  11. 使用Profile创建第一个Grails+Angular2应用
  12. vue基础-25-vue的基础面试知识
  13. 贴吧云签到php源码,求助帮忙把PHP的贴吧签到代码转换到云函数下
  14. 我们是如何认识这个世界的呢
  15. MAL-PEG-Cholesterol,MAL-PEG-CLS
  16. h5 视频播放功能实现
  17. stacking集成模型预测回归问题
  18. 免登陆从Oracle下载Java SE
  19. 2022年c++的520答案
  20. 从零开始学习React——(十二):React单项数据流和混用jQuery以及函数式编程

热门文章

  1. 30件你不知道可以通过Internet来办到的事
  2. IIS和Tomcat共用80端口的解决方案
  3. VC++中多线程学习(MFC多线程)三(线程同步包含:原子互锁、关键代码段、互斥器Mutex、Semaphores(信号量)、Event Objects(事件))
  4. python科研计价_科研速递 | 花费15年众望所归!NumPy论文终登上Nature!
  5. 用java画一个网格_用SolidWorks画一个波浪起伏的烟灰缸,包覆是重点
  6. 安装mysql中文步骤_mysql安装步骤-Go语言中文社区
  7. csv+jenkins+ant测试接口
  8. 【NodeJs】用WebStorm创建Express项目时出现:express version is unavailable
  9. C/C++ 命令行参数的实现方法
  10. WIN7(VISTA)系统无法上网问题排查方法