Как я могу получить Camera2 API для отображения списка внешних камер при запуске на телефоне Android? - PullRequest
0 голосов
/ 01 сентября 2018

Я пытаюсь просмотреть внешнюю стереофоническую камеру ZED, подключенную к телефону Android с помощью приложения Camera2.

https://www.stereolabs.com/zed/

Эта камера совместима с UVC, и я смог ее предварительно просмотреть, когда подключил ее к Android Oreo 8.0 VM, работающему на виртуальной коробке.

Я использую код в примере проекта Google https://github.com/googlesamples/android-Camera2Basic. Класс CameraManager предоставляет метод getCameraIdList (), который должен возвращать идентификаторы всех камер, подключенных к устройству, таких как лицевая и обратная сторона. или внешнюю (в данном случае это была моя камера ZED или любая другая внешняя веб-камера).

Когда я запускаю семпл на виртуальной коробке, внешняя камера, похоже, определяется как камера, обращенная назад.

CameraCharacteristics characteristics
                    = manager.getCameraCharacteristics(cameraId);

            Integer facing = characteristics.get(CameraCharacteristics.LENS_FACING);
            String[] cameras = new String[] {"FRONT", "BACK", "EXTERNAL"};

            Log.v(TAG, "Camera faces " + cameras[facing]);

Внешняя ZED-камера всегда отображается в качестве задней камеры. Когда я пытаюсь запустить apk на телефоне Android с камерой ZED, подключенной к интерфейсу USB C, он просто не обнаруживает веб-камеру вообще.

На самом деле я запустил приложение Информация об USB-устройстве на телефоне, когда камера была подключена, и она появилась как видеоустройство

Затем я запустил приложение Camera2 Api Probe , которое проверяет камеры и все их поддерживаемые характеристики, используя api camera2 на телефоне, и в нем перечислены только передняя и задняя камеры, которые являются частью моего телефона. Внешняя камера не указана.

Я пробовал это на Samsung A7 (2017), One Plus и Honor, работающих под управлением Android Oreo 8.0. Никто из них не мог перечислить внешнюю камеру, но все они показывали подключенное USB-устройство и видеоустройство с именем ZED.

Понятия не имею, почему они не появляются. Как получить список внешних камер с помощью API-камеры camera2?

Я изначально пробовал проекты, которые используют привязки JNI к нативному коду, который использует libuvc, такой как этот . Но частота кадров кажется слишком медленной. Но сейчас я сосредоточен на том, чтобы получить предварительный просмотр с помощью API камеры2.

К вашему сведению: я подозревал, что камера может получать недостаточно энергии. Поэтому я подключил камеру с помощью Trancend USB 3.0 концентратора с внешним источником питания, который может питать подключенные USB-устройства. Результаты были одинаковыми.

Просто чтобы прояснить ситуацию, при использовании эмулятора vbox внешнее устройство отображается как камера, обращенная назад. При использовании Genymotion я должен использовать виджет камеры, чтобы установить подключенную камеру ZED на заднюю или переднюю камеру, а затем в списке.

...