Android Camera的进化史

Android Camera的进化史_第1张图片

Part1:  Camera1Android的傻瓜机)

  • Camera1 的开发中,打开相机,设置参数的过程是同步的,就跟用户实际使用camera的操作步骤一样。但是如果有耗时情况发生时,会导致整个调用线程等待;
  • 开发者如果想要个性化设置camera效果,无法手动设置调整参数,需要依靠第三方算法对于回调的数据进行处理(NV21)。而且不同手机的回调数据效果都是不一样的,采用第三方算法调整,通常效果不好;
  • 开发者所能获取的Camera状态信息有限;

camera1 的开发过程比较简单,对于常规视频采集,如果只要一般的预览功能,是没问题的,然而如果想要挖掘Camera更多的功能,camera1无法满足,于是有了camera2.

Part2 Camera2Android的单反)

  • Camera2 的开发中,camera的生命周期都是异步的,即发送请求,等待回调的client-service模式;
  • 系统: Android L+
  • 这里的关键回调主要是三个:

1CameraDevice.StateCallback ///比如线程A发送打开相机请求, 线程B中收到相机状态回调,线程B中与cameraDevice建立会话,设置参数,数据回调处理;

2CameraCaptureSession.StateCallback ///CameraDevice建立会话后,收到的会话状态回调;

3ImageReader.OnImageAvailableListener // 开发者可以直接获取并且操作的数据回调;

  • 通过跟相机建立的会话,可以更加精细的调整Camera参数:比如ISO感光度,曝光时间,曝光补偿……
  • 如果开发者想要更多自己的定制,也可以直接使用回调数据(YUV488);<

你可能感兴趣的:(开发)