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

网上有很多关于在应用层开发来解决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 },

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值