android中Camera setDisplayOrientation使用
Android Camera 使用
2023-09-11 14:18:00 时间
在 写相机相关应用的时候遇到捕获的画面方向和手机的方向不一致的问题,比如手机是竖着拿的,但是画面是横的,这是由于摄像头默认捕获的画面byte[]是根 据横向来的,而你的应用是竖向的,解决办法是调用setDisplayOrientation来设置PreviewDisplay的方向,效果就是将捕获 的画面旋转多少度显示。
设
置 preview 的顺时针旋转角度。这将影响 preview frames和拍照之后的相片显示。该方法主要用于垂直模式的应用。注意在旋转之前,
front-facing cameras 的 preview显示是水平 flip
的,这就是说, image 是沿着 camera sensor 的垂直中心轴来反射的。所以用户可以像照镜子一样看到他们自己。这不会影响传入函数
onPreviewFrame(byte[], Camera) 的、JPEG 相片的、或记录的 video 的 byte array 的顺序,你可以自己做旋转处理。在preview
期间是不允许调用该方法的。如果你想要是你的照片和显示出来的角度一致,你可以参考下列代码:
- public static void setCameraDisplayOrientation (Activity activity, int cameraId, android.hardware.Camera camera) {
- android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo();
- android.hardware.Camera.getCameraInfo (cameraId , info);
- int rotation = activity.getWindowManager ().getDefaultDisplay ().getRotation ();
- 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;
- 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);
- }
相关文章
- [Android Pro] android 混淆文件project.properties和proguard-project.txt
- [Android Pro] ant 编译android工程
- 我们也说说Android.mk(5) - 计算怎么办?
- 浅论Android网络请求库——android-async-http
- android仿ios开关按钮
- 【Android 疑难杂症1】android.content.ActivityNotFoundException: Unable to find explicit activity class
- 《android开发艺术探索》读书笔记(十一)--Android的线程和线程池
- 【Android】android studio ndk使用例子
- Android studio 提示“android qemu-system-i386.exe停止工作”
- Android Studio / IDEA 中.android 文件夹移动出默认位置
- 2021最新Android架构师必备宝典《Android架构开发手册》含抖音、美团等大厂架构演进之路
- android java 堆栈_Android下打印调试堆栈方法
- android系统多媒体和Camera模块
- Android【报错】Failed to resolve: com.android.support:appcompat-v7:28.0.0-alpha【报错】
- Android Studio 查询RecyclerView最新依赖方法
- Android设置TimePicker样式和字体颜色
- 【奇技淫巧】Android真机调试看不到应用logcat或者应用logcat信息太少的解决方法
- 【错误记录】Android Studio 编译时 lint 检查报错 ( WARNING: DSL element ‘android.dataBinding.enabled‘ is obsolet )
- 【Android 应用开发】Android 开发环境下载地址 -- 百度网盘 adt-bundle android-studio sdk adt 下载
- Android Studio代码自己主动提示无效(not available in Power Save mode)
- android performClick使用
- 最新Android ADT, SDK, SDK_tool等官方下载说明(及时更新)
- Android Camera
- 解决Android中No resource found that matches android:TextAppearance.Material.Widget.Button.Inverse问题
- Android 11.0 系统关机动画的功能实现
- 介绍 Android 的 Camera 框架
- Android Camera TakePicture過程分析