/* * Copyright 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.mediaframeworktest.helpers; import android.content.Context; import android.hardware.Camera; import android.hardware.camera2.CameraCharacteristics; import android.hardware.camera2.CameraManager; import java.util.Comparator; /** * Utility class containing helper functions for the Camera framework tests. */ /** * (non-Javadoc) * @see android.hardware.cts.helpers.CameraUtils */ public class CameraUtils { /** * Returns {@code true} if this device only supports {@code LEGACY} mode operation in the * Camera2 API for the given camera ID. * * @param context {@link Context} to access the {@link CameraManager} in. * @param cameraId the ID of the camera device to check. * @return {@code true} if this device only supports {@code LEGACY} mode. */ public static boolean isLegacyHAL(Context context, int cameraId) throws Exception { CameraManager manager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE); CameraCharacteristics characteristics = manager.getCameraCharacteristics(Integer.toString(cameraId)); return characteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL) == CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY; } /** * Shared size comparison method used by size comparators. * *

Compares the number of pixels it covers.If two the areas of two sizes are same, compare * the widths.

*/ public static int compareSizes(int widthA, int heightA, int widthB, int heightB) { long left = widthA * (long) heightA; long right = widthB * (long) heightB; if (left == right) { left = widthA; right = widthB; } return (left < right) ? -1 : (left > right ? 1 : 0); } /** * Size comparator that compares the number of pixels it covers. * *

If two the areas of two sizes are same, compare the widths.

*/ public static class LegacySizeComparator implements Comparator { @Override public int compare(Camera.Size lhs, Camera.Size rhs) { return compareSizes(lhs.width, lhs.height, rhs.width, rhs.height); } } }