本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/583ba1df25d735cd2797004d
由于Android系统的开放策略,Android手机呈现碎片化的趋势,兼容性问题一直是Android App 开发者头疼的难题。本文以Android相机预览方向为例,探索在Android机型适配上的一些思路。
1. android相机简介
由于Android系统的开放策略,Android手机呈现碎片化的趋势,兼容性问题一直是Android App 开发者头疼的难题。本文以Android相机预览方向为例,探索在Android机型适配上的一些思路。
1.1 相机架构
先了解下Camera的框架,它是分层的结构。由上向下分别是
1)应用层
2)Camera系统的Java类
3)Camera的JNI代码
4)Camera的本地框架
5)Camera服务部分
6)Camera HAL(Hardware Abstraction Layer)硬件抽象层
图一Camera architecture
其中Camera HAL主要的接口文件为CameraHardwareInterface.h ,需要各个系统根据自己的情况实现。由于设备底层硬件的千变万化,android框架不可能提供统一的硬件驱动以及接口实现,只能提供标准的接口,因此硬件提供商需要自己开发设备驱动,并去实现android框架提供的接口。
而实际上,由于机器的硬件配置不同,厂商的底层实现不同,Andriod版本的不同,在一部手机上调试正常的程序,不一定能在其他机型上正常运行。其中与摄像头相关的适配问题包括摄像头个数、preview size大小、预览方向、闪光灯、对焦方式、帧率等等。
本文以相机预览方向为例,探讨这个问题产生的原因,以及一些可行的解决方法。
2. 相机预览方向适配问题的产生
2.1相机的安装方向
相机图像数据都是来自于相机硬件的图像传感器(Image Sensor)