日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CTS测试中testCameraOrientationAlignedWithDevice项

發布時間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CTS测试中testCameraOrientationAlignedWithDevice项 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

此項主要測試的是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项的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。