Список идентификаторов камер не соответствует спецификации телефона - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь получить список идентификаторов Camera2 на Galaxy S10e, который имеет 1 переднюю камеру и 2 сзади.

Мой код

    try {

        for (String cameraId : cameraManager.getCameraIdList()) {
            CameraCharacteristics characteristics = cameraManager.getCameraCharacteristics(cameraId);

            Integer facing = characteristics.get(CameraCharacteristics.LENS_FACING);
            String camOrientation = "";

            if(facing==null) break;

            if(facing == CameraCharacteristics.LENS_FACING_EXTERNAL) {
                Log.d(Globals.TAGLOG,"ID: " + cameraId + "Is External... ");
                break;
            } else if (facing == CameraCharacteristics.LENS_FACING_BACK) {
                camOrientation = "Back";
            } else if (facing == CameraCharacteristics.LENS_FACING_FRONT) {
                camOrientation = "Front";
            }


            int[] cc = characteristics.get(CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES);

            SizeF physSize = characteristics.get(CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE);


            boolean isLogical = false;


            if (cc!=null) {
                for (int i : cc) {
                    if (i == CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA) {
                        isLogical=true;
                        break;
                    }

                }
            }

            int infoSupport = characteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);

            Log.d(Globals.TAGLOG,"ID: " + cameraId + " Is logical? " + isLogical +
                    " Orientation: " + camOrientation + " support level: " + infoSupport +
                    " size: " + physSize.getWidth() + " / " + physSize.getHeight());


            if (android.os.Build.VERSION.SDK_INT>=28) {
                Set<String> pIds = characteristics.getPhysicalCameraIds();

                Log.d(Globals.TAGLOG,"pIds=> " + pIds.size());

                for (String s : pIds) {
                    Log.d(Globals.TAGLOG,"*** Physical Id = " + s);
                }
            }


        }
    } catch (CameraAccessException e) {
        e.printStackTrace();
    }

Мой вывод

ID: 0 Логично? false Ориентация: Задний уровень поддержки: 1 размер: 5.645 / 4.234 pIds => 0 ID: 1 Логично? false Ориентация: Фронтальный уровень поддержки: 0 размер: 3.59168 / 2.69376 pIds => 0 ID: 2 Логично? false Ориентация: Задний уровень поддержки: 0 размер: 4.608 / 3.456 pIds => 0 ID: 3 Логично? false Ориентация: Фронтальный уровень поддержки: 0 размер: 4.451 / 3.338

Не могу понять, почему я получаю 2 идентификатора фронтальной камеры (ID 1 и 3). То же самое происходит с Galaxy S10 +

Есть какие-нибудь подсказки?

...