2017-01-19 2 views
1

Я пытаюсь изменить пример кода Google camera2Basic. Я удалил <FrameLayout/>, содержащий кнопку «Изображение» и «Информация», чтобы сделать полный экран <TextureView/>. Однако предварительный просмотр не заполняет весь экран, там остается черная полоса. Я считаю, что это имеет отношение к AutoFitTextureView, с которым он поставляется, но поскольку они не предоставили никакой документации о том, как это работает, я не могу вносить в него изменения.Полноэкранный просмотр камеры2Basic Пример проекта

ответ

2

Я заметил эту ту же проблему ранее в своей Галактической Ноте 5, и я полагаю, что это связано с тем, как они устанавливают соотношение сторон - по-видимому, некоторые ограничения с этим API (или просто плохо документированы). Я исправил его, не устанавливая соотношение сторон в AutoFitTextureView.

В частности, в этом примере, в методе setCameraOutput (INT ширина, внутр высота), просто удалите эти строки кода (строки 574 - 580 в вашем примере):

if (orientation == Configuration.ORIENTATION_LANDSCAPE) { 
    mTextureView.setAspectRatio(mPreviewSize.getWidth(),mPreviewSize.getHeight()); 
} else { 
    mTextureView.setAspectRatio(mPreviewSize.getHeight(),mPreviewSize.getWidth()); 
} 

Я считаю, что в данном примере они пытаются ограничить область захвата, которая, вероятно, приведет к черной полосе, которую вы видите (вероятно, потому, что вы строите на более крупном устройстве, чем тот, кто разрабатывал используемый).

+0

Это сделало трюк, спасибо! Означает ли это, что это не будет работать на каждом устройстве? – Carpetfizz

+1

Я не думаю, что сам API ограничен устройством - именно так они вычисляют и принимают соотношение сторон (где они принимают разрешение 1920 * 1080), что заставляет вас поверить в это. Это предположение от моего конца, поскольку я не тестировал его. Но так как это сработало и для вас, я бы сказал, что моя догадка правильная. – ucsunil

+0

эй, когда я это делаю, рамка предварительного просмотра растянута и перекошена – Carpetfizz

Смежные вопросы