Android 5.0 Camera预览流程控制解析
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/star.98a08eaa.png)
"Android 5.0 Camera系统源码分析3:Camera预览流程控制流" 在Android 5.0的Camera系统中,预览流程的控制流涉及到多个层次的交互,从应用程序层(APP层)到框架层(frameworks层),再到硬件抽象层(HAL层)。这篇文章主要关注于启动预览模式的关键API以及预览数据如何通过Surface显示在设备屏幕上。 1. APP层 在APP层,有两个关键API用于启动预览:`setPreviewDisplay` 和 `startPreview`。首先,调用`mCamera.setPreviewDisplay(mSurfaceHolder)`,这里的`mSurfaceHolder`通常来自一个SurfaceView,用于承载预览图像。接着,调用`mCamera.startPreview()`启动预览,实际的图像处理和显示会在`setPreviewDisplay`设置的Surface上进行。 2. `setPreviewDisplay`函数分析 在`setPreviewDisplay`中,当传入的`SurfaceHolder`不为空时,会调用`setPreviewSurface(holder.getSurface())`。这个函数是JNI(Java Native Interface)函数,它会进一步将Surface传递到C++层的实现。 3. frameworks层 在frameworks层,`setPreviewSurface`是一个JNI函数,其C++实现位于`android_hardware_Camera.cpp`。该函数获取到`Camera`对象,并尝试设置预览Surface。如果`Surface`不为空,它会与硬件接口交互,将Surface提供给相机硬件以便将预览数据直接写入。 4. HAL层 在硬件抽象层(HAL),`IGraphicBufferProducer`和`Surface`之间的交互发生。HAL接收Surface的引用,通常通过`IGraphicBufferProducer`接口,这允许相机服务将预览帧的缓冲区发布到Surface的队列中。`IGraphicBufferProducer`是Android用于处理图形缓冲区的接口,它可以管理缓冲区的分配、释放和传输。 5. 预览流程控制流 预览流程的大致步骤如下: - 应用层调用`startPreview`。 - `setPreviewDisplay`将Surface传递给HAL。 - HAL与硬件交互,设置预览配置,并通过`IGraphicBufferProducer`接口将预览Surface提供给硬件。 - 相机硬件开始捕获预览帧,并通过硬件接口将帧数据写入设置好的Surface。 - Surface的缓冲区管理器接收到数据后,将其呈现到屏幕上(例如通过SurfaceView)。 整个预览流程的核心在于Surface的设置和使用,它作为APP层与硬件层之间交换图像数据的桥梁。通过理解这一流程,开发者可以更好地调试和优化相机应用的预览性能,特别是在处理自定义Surface或处理复杂的预览需求时。对于Android系统开发者来说,深入理解这些底层机制对于优化系统级的相机功能至关重要。
![](https://csdnimg.cn/release/download_crawler_static/85900168/bg4.jpg)
剩余19页未读,继续阅读
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 87
- 资源: 2万+
![](https://csdnimg.cn/release/wenkucmsfe/public/img/vip-rights-1.c8e153b4.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/vip-rights-2.8b825a4e.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/vip-rights-3.fc5e5fb6.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/vip-rights-4.320a6894.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/vip-rights-icon.fe0226a8.png)
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 岩石滑动与断层冲击地压:声发射特征分析
- 新时代煤炭工业八大战略新取向剖析
- 开采强度对华亭矿区冲击地压危险性的影响分析
- 新安煤矿探采对比:影响安全生产的关键因素与技术支撑
- 210MW循环流化床锅炉引风机变频改造优化与节能效果
- 浅埋煤层开采沉陷预测:方法应用与影响分析
- 优化巷道过陷落柱支护方案:数值模拟与现场试验
- 坚硬顶板定向断裂爆破技术:安全高效采煤新方案
- 北航2019算法课作业解析:投资策略与凸子多边形优化
- 断层破碎带垮冒下堆积体边界抗力分布关键影响因素
- 哈拉沟选煤厂优化末煤系统提高效率与处理能力
- 瓦斯涌出影响下采动煤体蠕变失稳研究
- 提升煤矿装载效率的可控箕斗定量装载设备设计
- 水分调控下烟煤瓦斯吸附特性对比研究
- 重介质悬浮液密度控制硬件设计与选型探讨
- 坚硬顶板巷道支护参数设计:现场测试与数值分析
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)