我在做Android照相机研究时曾写过关于照相机摄像头的成像研究报告,在此我对报告重写,以作为照相机竖屏问题研究的讨论引导,起抛砖引玉作用。

经过我的查证和实验,可以证实:Android提供的SDK(android.hardware.Camera)里大概不能正常的使用竖屏(portrait layout)加载照相机,当用竖屏模式加载照相机时会产生以下情况:1. 照相机成像左倾90度(倾斜);2. 照相机成像长宽比例不对(失比)。之所以是“大概”,原因是因为可能可以通过一些比较复杂的手段解决。如果以上成立,那为什么竖屏不能正常成像也就很显然了。为什么会产生这样的情况,请看下面的研究分析。

照相机在一般情况下是必须用landscape layout(横屏)的,可以证明,先写一个照相机(只要能preview就行),如果Manifest的activity里不加入android:screenOrientation="landscape",即默认了 android:screenOrientation="portrait"(竖屏),照相机preview时就会出现左倾90度的现象,并且失比。原因是这样的(我推测的),摄像头对照物的映射是Android底层固定了的,以landscape方式为正,并且产生大小为320*480的像,如果换成portrait方式了,摄像头还是产生320*480的像,然后分别对应的放入到一个480*320的屏内,显然会失比,然后根据竖、横屏的规则,就产生了左倾90度的情况(图例)。 Android照相机竖屏研究引导为了进一步证实我对失比原因的推测,我照相机内加载的SurfaceView调成了320*213,比例大概是(320:213)*1.5=(480:320),所成像结果如愿的形成左倾但是没有失比的状况,这就证实了我的想法。

综上可以看出,左倾是因为摄像头映射产生的,而失比是由于像素比例映射产生的。

转载http://hi.baidu.com/juwend/blog/item/9977a8f69dff2229730eec6b.html

更多相关文章

  1. Android音频系统之AudioPolicyService的启动及audio_policy.conf
  2. Android 动态加载APK--代码安装、获取安装包中的资源及Intent调
  3. Android 中LayoutInflater(布局加载器)之介绍篇
  4. Android中ListView分页加载数据
  5. Android 中LayoutInflater(布局加载器)源码篇之createViewFromTag
  6. Android 使用WebView加载含有echarts的页面,截图不显示的解决方式
  7. Android黑科技动态加载(一)之Java中的ClassLoader
  8. [置顶] Android中View的加载过程

随机推荐

  1. 细数PHP中16个高危函数
  2. PHP 错误与异常的日志记录
  3. PHP中常用的18个字符串函数
  4. 给 PHP 开启 shmop 扩展实现共享内存
  5. php随机生成不在一个范围随机数
  6. php十进制转二进制不用函数
  7. 在 macOS 下使用 PHP-version 切换 PHP
  8. php生成短网址不重复
  9. PHP高性能Excel扩展1.2.8发布,文件读取数
  10. PHP设置多域名允许跨域访问