7

Я использую камеру в своем приложении. Я просто с помощью intent начать CameraОриентировочная ориентация камеры для Android

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
     cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
     startActivityForResult(cameraIntent, 101); 

Захваченное изображение автоматически приходит в landscape view. Как мне сделать camera для захвата изображений в portrait view

+0

я столкнулся с таким же вопросом, скажите, пожалуйста, как вы решили этот .... –

+0

@SivaK Вместо того чтобы использовать приложение камеры по умолчанию, я создал свой собственный вид камеры для захвата изображения –

+1

Сесит Вину - спасибо за ваш ответ, есть ли какой-нибудь пример кода или блог для создания нашего собственного вида камеры. –

ответ

12

Если устройство имеет v2.2 или выше вы можете вращать ориентацию камеры в портретную, используя camera.setDisplayOrientation(90). В устройствах, приведенных ниже, на v2.2, камера будет отображаться только в альбомной ориентации, и, таким образом, изображение будет отображаться в ландшафте. Проверьте эти посты Using Camera in Portrait Orientation, Camera is wrong unless keyboard is open.

+0

Где добавить это ... –

+1

Я не думаю, что это будет работать, фактически не переопределяя класс камеры - называя намерение победителем ' t достаточно здесь – ekatz

2

попробуйте это.

 Parameters param = mCamera.getParameters(); 

     switch(mDisplay.getRotation()){ 
     case Surface.ROTATION_0: 
      if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO){ 
       mCamera.setDisplayOrientation(90); 
       Log.d("Rotation_0", "whatever"); 
      } 
      else{ 
       Log.d("Rotation_0", "whatever"); 
       param.setRotation(90); 
       mCamera.setParameters(param); 
      } 
      break; 
     case Surface.ROTATION_90: 
      if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO){ 
       mCamera.setDisplayOrientation(0); 
       Log.d("Rotation_0", "whatever"); 
      } 
      else{ 
       Log.d("Rotation_90", "whatever"); 
       param.setRotation(0); 
       mCamera.setParameters(param); 
      } 
      break; 
     } 
1

Здесь этот код подходит для всех типов ориентации, которые поддерживаются в андроид приложении камеры [портретный режим] тоже.

int rotation = this.getWindowManager().getDefaultDisplay().getRotation(); 
int degrees = 0; 

switch (rotation) { 

    case Surface.ROTATION_0: 
     degrees = 0; 
     break; 

    case Surface.ROTATION_90: 
     degrees = 90; 
     break; 

    case Surface.ROTATION_180: 
     degrees = 180; 
     break; 

    case Surface.ROTATION_270: 
     degrees = 270; 
     break; 

} 
+0

Thanks Tim Castelijns –

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