1. camera api1 和api2

2. android Camera2 API使用详解

3. 超实用!Android Camera2.0新API与Camera旧API使用对比总结

4. Android TextureView 与 SurfaceView用法区别


简记

1 Camera API1 主要类

Camera api1调用流程比较直观,也利于理解一些,应用程序实例化camera这一个类就可以控制摄像头子系统,

1.1 Camera,api1主要类。通过类的这些startPreview、takePicture、AutoFocus等标准的接口实现。

1.2 Parameters,参数设置,通过camera内部类Parameters操作实现,如设置帧率,设置图片格式,预览尺寸等

1.3 CameraInfo,元数据获取,通过camera内部类CameraInfo实现,这里只能获取不能修改。

2. Camera API2 主要类

Camera api2在应用层的调用要复杂一些,定义的类也比较多,这也说明对摄像头子系统控制的更加细腻了。

 2.1 CameraManager:摄像头管理器。这是一个全新的系统管理器,专门用于检测系统摄像头、打开系统摄像头。除此之外,调用CameraManager的getCameraCharacteristics(String)方法即可获取指定摄像头的相关特性。

 2.2 CameraCharacteristics:摄像头特性。该对象通过CameraManager来获取,用于描述特定摄像头所支持的各种特性。

 2.3 CameraDevice:代表系统摄像头。该类的功能类似于早期的Camera类。

 2.4 CameraCaptureSession:这是一个非常重要的API,当程序需要预览、拍照时,都需要先通过该类的实例创建Session。而且不管预览还是拍照,也都是由该对象的方法进行控制的,其中控制预览的方法为setRepeatingRequest();控制拍照的方法为capture()。为了监听CameraCaptureSession的创建过程,以及监听CameraCaptureSession的拍照过程,Camera v2 API为CameraCaptureSession提供了StateCallback、CaptureCallback等内部类。

 2.5 CameraRequest和CameraRequest.Builder:当程序调用setRepeatingRequest()方法进行预览时,或调用capture()方法进行拍照时,都需要传入CameraRequest参数。CameraRequest代表了一次捕获请求,用于描述捕获图片的各种参数设置,比如对焦模式、曝光模式……总之,程序需要对照片所做的各种控制,都通过CameraRequest参数进行设置。CameraRequest.Builder则负责生成CameraRequest对象


Android TextureView 与 SurfaceView用法区别

SurfaceView和TextureView均继承于android.view.View,与其它View不同的是,两者都能在独立的线程中绘制和渲染,在专用的GPU线程中大大提高渲染的性能。

一、SurfaceView专门提供了嵌入视图层级的绘制界面,开发者可以控制该界面像Size等的形式,能保证界面在屏幕上的正确位置。但也有局限:

    1. 由于是独立的一层View,更像是独立的一个Window,不能加上动画、平移、缩放;

    2.两个SurfaceView不能相互覆盖。

二、Texture更像是一般的View,像TextView那样能被缩放、平移,也能加上动画。TextureView只能在开启了硬件加速的Window中使用,并且消费的内存要比SurfaceView多,并伴随着1-3帧的延迟。

三、TextureView和SurfaceView都是继承自View类的,但是TextureView在Andriod4.0之后的API中才能使用。由于holder的存在,SurfaceView也不能进行像View一样的setAlpha和setRotation方法,但是对于一些类似于坦克大战等需要不断告诉更新画布的游戏来说,SurfaceView绝对是极好的选择。但是比如视频播放器或相机应用的开发,TextureView则更加适合。


更多相关文章

  1. android之数据库和Content Provider(二)
  2. android 面试经典(4)
  3. Android中MimeType的用途
  4. Button控件
  5. Android(安卓)BLE蓝牙开发中读取数据时设置Notify的方法
  6. Android中控制屏幕旋转的相关设置
  7. Android(安卓)的NumberPicker相关问题
  8. 谈谈Android中WIFI 架构和控制流程
  9. Android(安卓)解析如何获取SDCard 内存

随机推荐

  1. Android(安卓)线性布局(LinearLayout)相关
  2. Android用户界面设计学习之旅-第六站
  3. Android 数据库之 SQLiteConnectionPool
  4. Android 对象序列化之 Parcelable 取代 S
  5. Android(安卓)Canvas绘图详解(图文)
  6. 去掉RecycleView或者ListView上下滑动阴
  7. 【原创】Proton在Android上的编译
  8. Android xml manifest属性详解
  9. 相对布局属性
  10. Android:实现无标题的两种方法