Android编程中调用Camera时预览画面有旋转问题的解决方法

 更新时间:2015年11月20日 14:16:39   作者:嗨皮  
这篇文章主要介绍了Android编程中调用Camera时预览画面有旋转问题的解决方法,涉及Android针对Camera调用摄像头源码部分的相关修改技巧,需要的朋友可以参考下

本文实例讲述了Android编程中调用Camera时预览画面有旋转问题的解决方法。分享给大家供大家参考,具体如下:

在调用Camera写应用的时候,前后摄像头的情况有时候是不一样的。有时候,明明后摄像头没有问题,而调用到前摄像头时,却倒转了180°,或者其他角度,百思不得其解。在查看了Android源码之后,发现它的解决办法很是好,接下来贴个源码,以备日后查看。

public static int getDisplayRotation(Activity activity) {
  int rotation = activity.getWindowManager().getDefaultDisplay()
    .getRotation();
  switch (rotation) {
    case Surface.ROTATION_0: return 0;
    case Surface.ROTATION_90: return 90;
    case Surface.ROTATION_180: return 180;
    case Surface.ROTATION_270: return 270;
  }
  return 0;
}
public static void setCameraDisplayOrientation(Activity activity,
    int cameraId, Camera camera) {
  // See android.hardware.Camera.setCameraDisplayOrientation for
  // documentation.
  Camera.CameraInfo info = new Camera.CameraInfo();
  Camera.getCameraInfo(cameraId, info);
  int degrees = getDisplayRotation(activity);
  int result;
  if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
    result = (info.orientation + degrees) % 360;
    result = (360 - result) % 360; // compensate the mirror
  } else { // back-facing
    result = (info.orientation - degrees + 360) % 360;
  }
  camera.setDisplayOrientation(result);
}

在调用Camera的时候只要调用setCameraDisplayOrientation这个方法就可以了。

希望本文所述对大家Android程序设计有所帮助。

相关文章

  • Android的异步任务AsyncTask详解

    Android的异步任务AsyncTask详解

    本文给大家介绍的是Android的异步任务AsyncTask,在Android中实现异步任务机制有两种方式,Handler和AsyncTask。今天我们先来主要谈下ASYNCTASK。
    2015-07-07
  • Android 实现彻底退出自己APP 并杀掉所有相关的进程

    Android 实现彻底退出自己APP 并杀掉所有相关的进程

    这篇文章主要介绍了Android 实现彻底退出自己APP 并杀掉所有相关的进程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Android检测url地址是否可达的两种方法

    Android检测url地址是否可达的两种方法

    今天小编就为大家分享一篇Android检测url地址是否可达的两种方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 很详细的android序列化过程Parcelable

    很详细的android序列化过程Parcelable

    这篇文章主要为大家详细介绍了很详细的android序列化过程Parcelable,代码注释很详细,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Android再探全面屏适配示例详解

    Android再探全面屏适配示例详解

    这篇文章主要为大家介绍了Android再探全面屏适配示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Android中通过view方式获取当前Activity的屏幕截图实现方法

    Android中通过view方式获取当前Activity的屏幕截图实现方法

    这篇文章主要介绍了Android中通过view方式获取当前Activity的屏幕截图实现方法,本文方法相对简单,容易理解,需要的朋友可以参考下
    2014-09-09
  • Android实现图片拖动效果

    Android实现图片拖动效果

    本文主要介绍了Android实现图片拖动效果的实例,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • Android中WebView加载网页设置进度条

    Android中WebView加载网页设置进度条

    这篇文章主要为大家详细介绍了Android中WebView加载网页设置进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • flutter实现头部tabTop滚动栏

    flutter实现头部tabTop滚动栏

    这篇文章主要为大家详细介绍了flutter实现头部tabTop滚动栏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 21天学习android开发教程之XML解析与生成

    21天学习android开发教程之XML解析与生成

    21天学习android开发教程之XML解析与生成,使用SAX来解析XML,在Android里面可以使用SAX和DOM,DOM需要把整个XML文件读入内存再解析,比较消耗内存,而SAX基于事件驱动的处理方式,可以在各节点触发回调函数,需要的朋友可以参考下
    2016-02-02

最新评论