此项主要测试的是Camera的方向和屏幕的方向需要一致,即需要长边对长边,短边对短边,否则即出现Failed。

(1)源码分析

private CameraManager mCameraManager;private CameraCharacteristics mCharacteristics;private WindowManager mWindowManager;private Display mDisplay;private String[] mAllCameraIds;private void initCamera(){mCameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);mDisplay = mWindowManager.getDefaultDisplay();try {mAllCameraIds = mCameraManager.getCameraIdList();} catch (CameraAccessException e) {e.printStackTrace();}}private void testCameraOrientationAlignedWithDevice() {DisplayMetrics metrics = new DisplayMetrics();mDisplay.getMetrics(metrics);// For square screen, test is guaranteed to passif (metrics.widthPixels == metrics.heightPixels) {return;}// Handle display rotationint displayRotation = mDisplay.getRotation();Log.e("dxf_display", "displayRotation = " + displayRotation+ ", width = " + metrics.widthPixels + ", height = " + metrics.heightPixels);if (displayRotation == Surface.ROTATION_90 || displayRotation == Surface.ROTATION_270) {int tmp = metrics.widthPixels;metrics.widthPixels = metrics.heightPixels;metrics.heightPixels = tmp;}//(1)判断屏幕方向boolean isDevicePortrait = metrics.widthPixels < metrics.heightPixels;for (int i = 0; i < mAllCameraIds.length; i++) {try {mCharacteristics = mCameraManager.getCameraCharacteristics(i+"");} catch (CameraAccessException e) {e.printStackTrace();}// Camera sizeSize pixelArraySize = mCharacteristics.get(CameraCharacteristics.SENSOR_INFO_PIXEL_ARRAY_SIZE);// Camera orientationint sensorOrientation = mCharacteristics.get(CameraCharacteristics.SENSOR_ORIENTATION);// For square sensor, test is guaranteed to passif (pixelArraySize.getWidth() == pixelArraySize.getHeight()) {continue;}Log.e("dxf_sensor", "sensorOrientation = " + sensorOrientation+ ", width = " + pixelArraySize.getWidth() + ", height = " + pixelArraySize.getHeight());// Camera size adjusted for device native orientation.Size adjustedSensorSize;if (sensorOrientation == 90 || sensorOrientation == 270) {adjustedSensorSize = new Size(pixelArraySize.getHeight(), pixelArraySize.getWidth());} else {adjustedSensorSize = pixelArraySize;}//(2)判断Camera Sensor方向boolean isCameraPortrait =adjustedSensorSize.getWidth() < adjustedSensorSize.getHeight();Log.e("dxf_result","isDevicePortrait = " + isDevicePortrait +", isCameraPortrait = " + isCameraPortrait + ",result = " + (isDevicePortrait^isCameraPortrait));//(3)最后断言判断assertFalse("Camera " + mAllCameraIds[i] + "'s long dimension must "+ "align with screen's long dimension", isDevicePortrait^isCameraPortrait);}}

注解:
isDevicePortrait^isCameraPortrait–表示需要进行按位异或运算,例如:

p:False q:False p^q=False
p:False q:True p^q=True
p:True q:False p^q=True
p:True q:True p^q=False

如上三处Log打印即可知道是否满足条件,此项是否Pass。

(2)Log打印

2022-04-07 14:48:09.732 9896-9896/com.example.myapplication E/dxf_display: displayRotation = 1, width = 1920, height = 1184
//后摄
2022-04-07 14:48:09.738 9896-9896/com.example.myapplication E/dxf_sensor: sensorOrientation = 90, width = 3264, height = 2448
2022-04-07 14:48:09.739 9896-9896/com.example.myapplication E/dxf_result: isDevicePortrait = true, isCameraPortrait = true,result = false
//前摄
2022-04-07 14:48:09.740 9896-9896/com.example.myapplication E/dxf_sensor: sensorOrientation = 270, width = 2592, height = 1944
2022-04-07 14:48:09.740 9896-9896/com.example.myapplication E/dxf_result: isDevicePortrait = true, isCameraPortrait = true,result = false

最终结果result = false,满足条件从而不会触发断言,此项即可Pass,如果存在问题,可查看是Display问题,还是Camera Sensor问题。

此项如果出现Failed一般都是横屏项目可能会出现问题。

(3)规避方案

我们可以尝试在Display这边修改一下方向问题即可。

//frameworks/base/core/java/android.view.Display.javapublic int getRotation() {synchronized (mLock) {updateDisplayInfoLocked();return mMayAdjustByFixedRotation? getDisplayAdjustments().getRotation(mDisplayInfo.rotation): mDisplayInfo.rotation;}}

CTS测试中testCameraOrientationAlignedWithDevice项相关推荐

  1. CTS测试中Camera FOV Calibration标准测试环境搭建

    CTS测试分为自动测试和手动测试,CTS Verifier测试是CTS测试的手动测试部分.以下是CTS Verifier测试的Camera FOV Calibration测试环境搭建. 安装CTS V ...

  2. CTS(3)---CTS 测试的一点心得

    CTS 测试的一点心得 CTS介绍-----------------------------------------------3 什么是CTS---------------------------- ...

  3. Google Android 7.0 GMS测试常见fail项以及分析解决方法

    自从Google 7.0系统发布开始以来,所有使用Googl gms 包服务的第三方厂商出货必须都要过GMS认证,而在2018年预计Android 8.1系统上要求将更为严格..本篇博客列举展讯773 ...

  4. Android 4.0.3 CTS 测试

    Android-CTS 4.0.3测试基本配置 1. Download CTS CTS的获取方式有两种: 1.1.由Google提供 1.1.1.打开浏览器输入连接: http://source.an ...

  5. 【转】Android CTS 测试

    http://blog.csdn.net/zxm317122667/article/details/8508013 Android-CTS 4.0.3测试基本配置 1. Download CTS CT ...

  6. 【转】Android 4.0.3 CTS 测试

    原文网址:http://blog.csdn.net/zxm317122667/article/details/8508013 Android-CTS 4.0.3测试基本配置 1. Download C ...

  7. cts测试终于全测了一遍了

    郁闷了好几天,做CTS测试快两周了,而进展却只有那么一点点,人们常说成功属于坚持不懈的人,一次次的尝试,一次次地与预测的不一样,然而今天通过一个群里的热心人的帮助,一下子解决了好几个难题,happy ...

  8. CTS测试CtsWindowManagerDeviceTestCases模块的testShowWhenLockedImeActivityAndShowSoftInput测试fail项解决方法

    在最近的Android 11项目中用R5 的CTS工具测试发现CtsWindowManagerDeviceTestCases 有很多错误,前面几项测试失败了后面都不跑了. 解决思路: 首先使用命令ru ...

  9. CTS(5)---Android8.0中CTS测试对于TEE的要求

    Android8.0中CTS测试对于TEE的要求 我们知道TEE在Google Android7.0后成为一种强制性要求,那么Android8.0又是如何要求的呢? 对于Android8.0中CTS测 ...

  10. 从RE到RSE:聊聊无线产品EMC认证测试中的辐射项(上)

    无线产品的EMC认证测试里,有两个与辐射发射有关的项目:Radiated Emission(RE)和Radiated Spurious Emission(RSE). RE和RSE,名字上仅一字之差,测 ...

最新文章

  1. 目标跟踪之粒子滤波---Opencv实现粒子滤波算法
  2. 《Pro ASP.NET MVC 3 Framework》学习笔记之十三【示例项目SportsStore】
  3. php负载均衡原理_PHP超级负载均衡
  4. Python中遍历整个列表及注意点(参考书籍Python编程从入门到实践)
  5. 机器学习实战之SVM
  6. uva 515 King
  7. [译]管理IIS日志的存储
  8. nginx系列之七:限流配置
  9. 技术动态 | 数据库研究者视角下的知识图谱研究
  10. html标签始终在右下角,html+javascript实现图片始终在页面右下角
  11. 如何在Go中实现Elasticsearch
  12. 中imshow函数用法_5 OpenCV几个函数操作实例
  13. IT民工系列——c#控制Word的类库。对com操作进行了封装
  14. html按钮按下效果_html提交按钮标签代码是什么,怎么使用?(示例)
  15. boolean到底占几个字节?
  16. 如何修改修改服务器风扇转速,DELL服务器手动调整风扇转速
  17. Observable与Subject
  18. 计算机的用户账户无法更改密码,windows不能更改密码怎么办【解决方法】
  19. 【R语言】【可视化】 之 维恩图
  20. 个人总结-网络安全学习和CTF必不可少的一些网站

热门文章

  1. 学习笔记13--障碍物检测之基于图像障碍物检测
  2. Kafka性能监控与优化
  3. 网卡高可用与负载均衡【team】
  4. 英语写作——常用的 过度词-连接词
  5. python爬虫爬取巨潮资讯网的pdf文件
  6. springBoot datasource 属性
  7. linux下删除系统软件,Linux系统 安装垃圾清除软件,linux清理工具安装教程
  8. 《我十年的程序员生涯》系列之三:阳光灿烂的日子
  9. vs2019个性化配置
  10. 基础篇:6.1)公差标注的进化