基于Android系统源码解决camera画面预览倒置问题

本文介绍如何通过修改Android源码解决相机预览画面倒置的问题,详细解析了Camera.java和android_hardware_Camera.cpp中处理旋转逻辑的代码。

网上有很多关于在应用层开发来解决camera预览画面倒置问题,我这里说一下基于源码解决此问题的方法。

1、frameworks/base/core/java/android/hardware/Camera.java

     public  void setDisplayOrientation(int d) {
         int rotation = SystemProperties.getInt("ro.sf.hwrotation",0);
         int degrees = 0;
         switch (rotation) {
             case Surface.ROTATION_0: degrees = 0; break;
             case Surface.ROTATION_90: degrees = 90; break;
             case Surface.ROTATION_180: degrees = 180; break;
             case Surface.ROTATION_270: degrees = 270; break;
         }
         int result = 0;
         CameraInfo cameraInfo = new CameraInfo();                                                                                                                                                      
         getCameraInfo(camera_id, cameraInfo);
         if (cameraInfo.facing == CameraInfo.CAMERA_FACING_BACK) {
             result = (cameraInfo.orientation - degrees + 360) % 360; // back-facing
         } else if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
             result = (cameraInfo.orientation + degrees) % 360;
             result = (360 - result) % 360;  // compensate the mirror
         }
         _setDisplayOrientation(result);
     }
 

     public  native final void _setDisplayOrientation(int degrees);    

2、frameworks/base/core/jni/android_hardware_Camera.cpp

 { "_setDisplayOrientation",                                                                                                                                                                          
     "(I)V",
     (void *)android_hardware_Camera_setDisplayOrientation },

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值