Как получить полноэкранный вид текстуры с помощью камеры2?

Я пытаюсь получить полноэкранный предварительный просмотр камеры. Я прочитал документацию камеры2, в которой говорится Each Surface has to be pre-configured with an appropriate size and format (if applicable) to match the sizes and formats available from the camera device. Вот что я понял на данный момент. Пожалуйста, поправьте меня, если что-то из моего понимания неверно:

  1. Вид текстуры и буфер предварительного просмотра должны иметь одинаковое соотношение сторон. Они могут иметь разное разрешение, но соотношение сторон должно быть одинаковым, если вы не хотите, чтобы предварительный просмотр выглядел искаженным.

  2. Вы должны установить размер буфера вида текстуры на оптимально выбранный размер предварительного просмотра. Демонстрация camera2basic, похоже, подтверждает это строкой texture.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight().

У меня есть вопрос: как только вы сопоставите соотношение сторон и размер вида текстуры и предварительного просмотра, чтобы они были одинаковыми, как вы масштабируете вид текстуры, чтобы он соответствовал полноэкранному режиму?

Метод configureTransform демонстрации camera2basic, похоже, преобразует TextureView в размер предварительного просмотра, но не делает его полноэкранным. Как рассчитать правильный коэффициент масштабирования, чтобы сделать TextureView полноэкранным?


person ShrimpCrackers    schedule 08.10.2016    source источник


Ответы (1)


Вы можете просто заставить свой TextureView заполнить экран в макете вашей деятельности. Затем вам нужно будет настроить метод configureTransform(), чтобы учесть разницу в соотношении сторон между полноэкранным TextureView и размером предварительного просмотра с ближайшим соотношением сторон; в основном вам нужно реализовать обычный эффект почтового ящика или столбчатого бокса.

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

person Eddy Talvala    schedule 09.10.2016