2016-05-31 3 views
0

Я создаю приложение, касающееся API камеры2video. Требуется показать полный экран в полноэкранном режиме, но вместо этого он занимает 70% площади экрана, как показано в Camera2video API Github https://github.com/googlesamples/android-Camera2Video А также нет опции для параметра качества видео, поскольку он был доступен в устаревшем API-интерфейсе камеры.Camera2Video Api полноэкранный просмотр и качество видео

ответ

1

Демо-версия Camera2Video содержит класс, называемый AutoFitTextureView, который подходит для предварительного просмотра в виде текстуры при сохранении пропорций. Если вы хотите растянуть предварительный просмотр, чтобы заполнить весь экран, просто используйте обычный TextureView вместо этого класса.

Вам нужно будет заменить ссылки на AutoFitTextureView в классе Camera2VideoFragment, а также в XML-файлах макета для портретного и ландшафтного. Измените layout_width и layout_height на match_parent.

А также нет опции для параметра Качество видео, как она была доступна в устаревшей API камеры

Установить его на MediaRecorder объекта (mMediaRecorder) в Camera2VideoFragment.

+0

Спасибо за ваш ответ, относительно полного экрана предварительного просмотра я попытался заменить AutoFitTextureView с TextureView, но предварительный просмотр простиралась от сверху вниз и не выглядит хорошо. :( –

+0

Проблема заключается в том, что ориентация предварительного просмотра не соответствует ориентации экрана? – samgak

+0

Ориентация совпадает, например, я смотрю в портретном режиме, затем предварительный просмотр камеры также выполняется в портретном режиме, но предварительный просмотр –

0

Камера2 реализована не очень хорошо. В вашем случае, вы найдете метод chooseVideoSize и изменения следующими:

private Size chooseVideoSize(Size[] choices) { 

     for (Size size : choices) { 
      if (size.getWidth() == size.getHeight() * 16/9 && size.getWidth() <= 1080) { 
       return size; 
      } 
     } 
     Log.e(TAG, "Couldn't find any suitable video size"); 
     return choices[choices.length - 1]; 
    } 

Далее, вы должны вставить андроида: layout_alignParentEnd = «истинный» в fragment_camera2_video.xml папки макета по умолчанию. Это выглядит следующим образом:

<com.example.android.camera2video.AutoFitTextureView 
     android:id="@+id/texture" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentEnd="true" //add here 
     android:layout_alignParentStart="true" 
     android:layout_alignParentTop="true" /> 
0
int width = MeasureSpec.getSize(widthMeasureSpec); 
    int height = MeasureSpec.getSize(heightMeasureSpec); 
    if (0 == mRatioWidth || 0 == mRatioHeight) { 
     setMeasuredDimension(width, height); 
    } else { 
     if (width < height * mRatioWidth/mRatioHeight) { 
      setMeasuredDimension(height * mRatioWidth/mRatioHeight, height); 
     } else { 
      setMeasuredDimension(width, width * mRatioHeight/mRatioWidth); 
     } 
    } 

Изменение этого в AutoFitTextureview классе метода onMeasure

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