Я пытаюсь просмотреть внешнюю стереофоническую камеру 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 на заднюю или переднюю камеру, а затем в списке.