进行Camera开发主要用到了以下两个类:
1.Camera
2.TexttureView(也可以是SurfaceView)

一、Surface
Surfaces是用来处理屏幕显示内容合成器所管理的原始缓存区的工具。它通常由图像缓冲区的消费者来创建(如:SurfaceTexture,MediaRecorder),然后被移交给生产者(如:MediaPlayer)或者是显示到其上(如:CameraDevice)
二、Camera的角度基础

  • facing
    facing 代表相机的方向,它的值只能是CAMERA_FACING_BACK(后置摄像头) 或者CAMERA_FACING_FRONT(前置摄像头)
  • orientation
    orientation是相机采集图片的角度。这个值是相机所采集的图片需要顺时针旋转至自然方向的角度值。它必须是0,90,180或270中的一个。
    举个栗子:
    假如你自然地竖着拿着手机(就是自拍时候的样子…),后置摄像头的传感器在手机里是水平方向的,你现在看着手机,如果传感器的顶部在自然方向上手机屏幕的右边(此时,手机是竖屏,传感器是横屏),那么这个orientation的值就是90。 如果前置摄像头的传感器顶部在手机屏幕右边,那么这个值就是270.
  • setDisplayOrientation
    设置预览画面顺时针旋转的角度。这个方法会影响预览图像和拍照后显示的照片。这个方法对竖屏应用非常有用。
    注意,前置摄像头在进行角度旋转之前,图像会进行一个水平的镜像翻转。
    所以用户在看预览图像的时候就像照镜子,看到的是现实的水平方向的镜像。
如果你是第一次使用Camera的话,首先要了解以下几点:1.相机图像数据都是来自于相机硬件的图像传感器(Image Sensor),
这个Sensor被固定到手机之后是有一个默认的取景方向,且不会改变
2.相机在预览的时候是有一个预览方向的,可以通过setDisplayOrientation()设置
3.相机所采集的照片也是有一个方向的(就是上面刚刚提到的orientation),这个方向与预览时的方向互不相干
  • 屏幕坐标:在Android系统中,屏幕的左上角是坐标系统的原点(0,0)坐标。原点向右延伸是X轴正方向,原点向下延伸是Y轴正方向
  • 自然方向:每个设备都有一个自然方向,手机和平板的自然方向不同。手机的自然方向是portrait(竖屏),平板的自然方向是landscape(横屏)
  • 图像传感器(Image Sensor)方向:手机相机的图像数据都是来自于摄像头硬件的图像传感器,这个传感器在被固定到手机上后有一个默认的取景方向
  • 相机的预览方向:将图像传感器捕获的图像,显示在屏幕上的方向。在默认情况下,与图像传感器方向一致。在相机API中可以通过setDisplayOrientation()设置相机预览方向。在默认情况下,这个值为0,与图像传感器方向一致
  • 相机采集的图像方向:相机采集图像后需要进行顺时针旋转的角度,即上面介绍的orientation的值:

    小结:
  • 绝大部分安卓手机中图像传感器方向是横向的,且不能改变,所以orientation是90或是270,也就是说,当点击拍照后保存图片的时候,需要对图片做旋转处理,使其为"自然方向"。 (可能存在一些特殊的定制或是能外接摄像头的安卓机,他们的orientation会是0或者180)
  • 通过setDisplayOrientation方法设置预览方向,使预览画面为"自然方向"。前置摄像头在进行角度旋转之前,图像会进行一个水平的镜像翻转,所以用户在看预览图像的时候就像照镜子一样。

Android: Camera2相机开发 知识储备相关推荐

  1. Android 驱动(3)---Android驱动开发知识储备

    Android驱动开发知识储备 Android软件层次结构 (1)操作系统层 显示驱动(Frame Buffer),Flash内存驱动,照相机驱动,音频驱动,WiFi驱动,键盘驱动,蓝牙驱动,Bind ...

  2. android之相机开发

     http://blog.csdn.net/jason0539/article/details/10125017 android之相机开发 分类: android 基础知识2013-08-20 22: ...

  3. Android Camera2相机预览画面放大缩小(数码变焦DigitalZoom)功能实现

    一.前言 Android自定义相机开发中,常常会有通过手势放大或缩小相机预览画面的需求,即数码变焦DigitalZoom. 二.接口说明 1. 获取最大的放大倍数 float maxZoom = mC ...

  4. 十分钟实现 Android Camera2 相机拍照

    1. 前言 因为工作中要使用Android Camera2 API,但因为Camera2比较复杂,网上资料也比较乱,有一定入门门槛,所以花了几天时间系统研究了下,并在CSDN上记录了下,希望能帮助到更 ...

  5. Android BLE蓝牙开发知识总结

    Android BLE蓝牙开发知识总结 1.蓝牙介绍 1.1什么是蓝牙?    蓝牙( Bluetooth® ):是一种无线技术标准,可实现固定设备.移动设备和楼宇个人域网之间的短距离数据交换(使用2 ...

  6. 【转】Android Camera 相机开发详解

    在Android 5.0(SDK 21)中,Google使用Camera2替代了Camera接口.Camera2在接口和架构上做了巨大的变动, 但是基于众所周知的原因,我们还必须基于 Android ...

  7. Android的相机开发

    基础 相机开发中常用的API package android.hardware.camera2 这个包中包含了主要的相机控制的API,可以用于在你的项目中进行拍照或者录像功能的实现 Camera 这个 ...

  8. Android驱动开发知识储备(纯手打,更新:2018.4.11)

    Android软件层次结构 (1)操作系统层 显示驱动(Frame Buffer),Flash内存驱动,照相机驱动,音频驱动,WiFi驱动,键盘驱动,蓝牙驱动,Binder IPC驱动,Power M ...

  9. Android camera相机开发拍照功能

    在Android 5.0(SDK 21)中,Google使用Camera2替代了Camera接口.Camera2在接口和架构上做了巨大的变动,但是基于众所周知的原因,我们还必须基于 Android 4 ...

最新文章

  1. VMware下redhat9.0的上网设置
  2. Git_Eclipse:[7]Git解决冲突
  3. 九、表达式求值(1)
  4. 单例模式创建的两种方法
  5. 1609: [Usaco2008 Feb]Eating Together麻烦的聚餐
  6. 计算机无法连接无线信号,win7系统连接无线信号时提示Windows无法连接到路由器名称的四种解决方法...
  7. java安装pydev找不到_为什么安装成功也重启了,但是在window-preferences里找不到PyDev...
  8. json与jsonp应用及其他ajax数据交互方式
  9. 数魔选品怎么样_Sellermotor数魔跨境好不好用?怎么样?
  10. python 插入数据库 b“Incorrect syntax near ‘,‘.DB-Lib error message 20018
  11. javascrit 数组方法总结(数组对象、栈,队列、重排序、操作数组方法、位置方法、归并方法、迭代方法)
  12. CEMAPI实战攻略(二)——建立与短信信箱的连接
  13. ABAP ALV上的红绿灯状态
  14. 【翻译论文】Multiclass Optimal Classification Trees with SVM-splits(2021)
  15. 《Adobe Premiere Pro CS4经典教程》——1.7 Adobe Premiere Pro工作区
  16. 虚拟机(vmware)添加新硬盘
  17. 直击|ofo测试折扣商城 押金可转换为金币消费
  18. BLE4.2链路层(LL)安全机制-LL Privacy
  19. OSI七层模型的功能及协议
  20. To Be Better |这个冬天,与CDA一起游学北卡罗莱纳州立大学(NCSU)

热门文章

  1. Linux入门级教学-常见工具介绍及其使用
  2. 并行算法设计基本原则
  3. #创新应用#小红帽-Ebo互动动画书:儿童的电子书!
  4. HTML-Emmet语法篇
  5. TokenInsight 对话首席——Facebook Libra背后共识算法第一作者首次中文平台深度访谈...
  6. Ubuntu使用GParted扩充分区(全网最详细)
  7. 工控安全-智能设备安全
  8. 深圳海边农家乐野炊烧烤团建看海踏浪嗨翻天
  9. html中边框只让一遍又弧度,在css中怎样让边角具有弧度
  10. 面向边缘计算的5G增强技术探讨