当前位置: 首页 > news >正文

【DreamCamera2】相机应用修改成横屏后常见问题解决方案

首先要注意的是,展锐平台的相机应用DreamCamera2是基于竖屏手机设备开发的,未作横屏适配,非必要不建议把相机应用改为横屏,修改成横屏会导致mode的UI错位、部分功能无法使用、预览方向和成像方向不匹配等等许多问题。

根据不同项目需求可能会出现不同的问题,本faq旨在介绍如何将相机应用改为横屏,以及提供一些常见问题的解决方案。以Andorid10 8541E为例

修改成横屏
修改文件vendor\sprd\platform\packages\apps\DreamCamera2\Androidmanifest.xml,把android:screenOrientation的值"portrait"统统替换为"landscape"

修改ui角度
修改相机左下角缩略图旋转角度
修改文件vendor\sprd\platform\packages\apps\DreamCamera2\src\com\android\camera\widget\RoundedThumbnailView.java

@Overridepublic void setOrientation(int degree, boolean animation) {mEnableAnimation = animation;// make sure in the range of [0, 359]degree = degree >= 0 ? degree % 360 : degree % 360 + 360;
+       degree += 90;

修改左滑显示的modelist列表图标角度
修改文件:vendor\sprd\platform\packages\apps\DreamCamera2\src\com\android\camera\ui\ModeSelectorItem.java

@Overridepublic void setOrientation(int degree, boolean animation) {Log.e(TAG, " setOrientation mCurrentDegree = " + degree);mEnableAnimation = animation;// make sure in the range of [0, 359]degree = degree >= 0 ? degree % 360 : degree % 360 + 360;
+       degree += 90;if (degree == mTargetDegree)

修改相机顶部ui图标旋转角度
修改文件vendor\sprd\platform\packages\apps\DreamCamera2\src\com\android\camera\ui\RotateImageButton.java

 @Overridepublic void setOrientation(int degree, boolean animation) {mEnableAnimation = animation;// make sure in the range of [0, 359]degree = degree >= 0 ? degree % 360 : degree % 360 + 360;
+       degree = degree + 90;if (degree == mTargetDegree)return;

修改相机拍照按钮旋转角度
vendor\sprd\platform\packages\apps\DreamCamera2\src\com\android\camera\ui\RotateImageView.java

    public void setOrientation(int degree, boolean animation) {mEnableAnimation = animation;// make sure in the range of [0, 359]degree = degree >= 0 ? degree % 360 : degree % 360 + 360;
+       degree = degree + 90;

修改预览角度
camera api1中可以通过setCameraDisplayOrientation()方法修改预览方向,但是camera api2没有旋转预览的相关接口,只能修改sensor_config.xml文件中对应camera id的角度值,可分别尝试使用0/90/180/270这四个值,具体按项目实际情况来定。

修改成像角度
旋转拍照照片角度
Camera APP中,照片角度可通过 ANDROID_JPEG_ORIENTATION tag设置。

DreamCamera2 APP的图片角度可以通过以下 mJpegRotation 来修改。

src/com/android/camera/PhotoModule.java

@Override
public boolean capture() {
.................................
boolean isFrontCamera = info.isFacingFront();
mJpegRotation = CameraUtil.getImageRotation(sensorOrientation,  
deviceOrientation, isFrontCamera);   ////mJpegRotation为图片旋转的角度 可根据实际需求增加 90 180 270
Log.i(TAG, " sensorOrientation = " + sensorOrientation

旋转录像视频角度
Camera APP中,录像角度的修改通过 setOrientationHint(int degrees) 接口实现。

DreamCamera2 APP的录像角度可以通过以下rotation来完成

src/com/android/camera/VideoModule.java

private class VideoRecordStartTask extends AsyncTask<Void, Void, Void> {
.................................@Overrideprotected void onPostExecute(Void result) {.................................int rotation = CameraUtil.getImageRotation(sensorOrientation,deviceOrientation, isCameraFrontFacing()); ///录像旋转角度rotation  可根据实际需求增加 90 180 270/*** SPRD: Add for bug 585183, 3d video recoding @{* Original Code*mMediaRecorder.setOrientationHint();*/mMediaRecorder.setOrientationHint(getRecorderOrientationHint(rotation));  //设置录像角度

屏蔽无法适配横屏的功能
横屏之后目前无法适配的功能有全景、滤镜等,可以参考如下修改去除:

修改文件vendor\sprd\platform\packages\apps\DreamCamera2\src\com\android\camera\util\CameraUtil.java

       //去除全景public static boolean isWideAngleEnable() {
-       return 0 < wideAngleVersion && isBackCameraEnable;
+      //return 0 < wideAngleVersion && isBackCameraEnable;
+             return false;
}//去除滤镜public static boolean isUseSprdFilter() {
-       return (mFilterVersion == 2);
+      //return (mFilterVersion == 2);
+            return false;
}//去除慢动作public static boolean isSlowMotionEnabled() {
-                 return isSlowMotionEnabled && isBackCameraEnable();
+        //return isSlowMotionEnabled && isBackCameraEnable();
+                 return false;
}//去除有声照片public static boolean isVoicePhotoEnable() {
-               return isVoicePhotoEnabled;
+        //return isVoicePhotoEnabled;
+        return false;
}//去除二维码public static boolean isQrCodeEnabled(){
-      return isQrCodeEnabled && isBackCameraEnable;
+        //return isQrCodeEnabled && isBackCameraEnable;
+           return false;}
http://www.dtcms.com/a/358254.html

相关文章:

  • 阿里云营业执照OCR接口的PHP实现与技术解析:从签名机制到企业级应用
  • LZ4 解压工具(WPF / .NET 8)说明书
  • Java Stream API并行流性能优化实践指南
  • 基于Kubernetes自定义调度器的资源隔离与性能优化实践指南
  • 从 0 到 1 构建零丢失 RabbitMQ 数据同步堡垒:第三方接口数据零丢失的终极方案
  • 人工智能学习:Python相关面试题
  • 人工智能学习:Linux相关面试题
  • 98、23种设计模式之代理模式(7/23)
  • spark.sparkContext.broadcast() 与 org.apache.spark.sql.functions.broadcast 的区别
  • 开源PPT生成智能体(Agent)全景透视:技术路线、代表项目与未来趋势
  • 鸿蒙ArkTS 核心篇-15-条件渲染(组件)
  • 三重积分的性质
  • [论文阅读] 人工智能 + 软件工程 | 从“法律条文”到“Gherkin脚本”:Claude与Llama谁更懂合规开发?
  • comfUI背后的技术——VAE
  • [创业之路-581]:如何驾驭不确定性和风险,并从中获利?
  • 什么是雪花算法
  • [Mysql数据库] 知识点总结7
  • 直播间整蛊玩法
  • 【一】Django框架版本介绍
  • 2025 批量下载hasmart所有知乎回答,文章和想法,导出txt,html和pdf
  • OSI与TCP/IP各层功能详解
  • 计算机毕设javayit商城 基于SSM框架的校园二手交易全流程管理系统设计与实现 Java+MySQL的校园二手商品交易与供需对接平台开发
  • java字节码增强,安全问题?
  • python pyqt5开发DoIP上位机【介绍】
  • 【Big Data】AI赋能的ClickHouse 2.0:从JIT编译到LLM查询优化,下一代OLAP引擎进化路径
  • 【具身智能】【机械臂】机械臂轨迹规划项目以及资料汇总【持续更新】
  • PLC中的指令:LDP,ANDP,ORP这几个英文全称是什么
  • Pmp项目管理方法介绍|权威详解与实战指南
  • 【Python】国内可用的高速pip镜像源大全
  • 虚幻基础:角色动画