Запись на 720p на Lenovo Tab4 8 - PullRequest
       16

Запись на 720p на Lenovo Tab4 8

0 голосов
/ 26 октября 2018

У меня есть работающее видео приложение, которое непрерывно записывает видео в разрешении 1280x720 для многих планшетов Android с версией 7.0 и выше, за исключением Lenovo Tab4 8.

Используя Camera2 API, я настраиваю захват, запрашивая поддерживаемые размеры предварительного просмотра. Lenovo Tab4 8 удивительно только возвращает эти размеры предварительного просмотра:

1040x780, 864x480, 640x640, 800x480, 720x480, 768x432, 640x480, 480x640, 576x432, 640x360, 480x360, 480x320, 384x288, 352x288, 320x240, 240x320, 240x160, 176x144, 144x176, 160x120

Но встроенная камера поддерживает 1280x720 и 1920x1080. Простая попытка установить разрешение или размер предварительного просмотра 1280x720 приводит к ошибке. android.hardware.camera2.CameraAccessException: CAMERA_ERROR (3): submitRequestList - must configure device with valid surfaces before submitting requests

Почему другие приложения камеры могут справиться с этим? Я скачал "Open Camera" из игрового магазина. Имеется опция захвата в 1280x720 (но не 1040x780?!).

1 Ответ

0 голосов
/ 29 октября 2018

Я выяснил, что вызывает это.Этот планшет Lenovo имеет «устаревшую камеру», что означает, что камера была создана для обслуживания API-интерфейса камеры, но не для API-интерфейса Camera2.

API-интерфейс Camera2 в данном случае является просто оболочкой для API-интерфейса камеры, но не может отображать всефункциональность и поэтому отсутствует поддержка определенных разрешений.

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

Xamarin.Android:

CameraCharacteristics characteristics = camManager.GetCameraCharacteristics(cameraId);
var hardwareLevel = characteristics.Get(CameraCharacteristics.InfoSupportedHardwareLevel);

//hardwareLevel.ToString() would spit out one of the following numbers:
//LEGACY - 2 -> Legacy Cameras might not support 1280x720 resolution
//LIMITED - 0
//FULL - 1
//LEVEL_3 - 3
...