андроид камера портретная ориентация - PullRequest
8 голосов
/ 15 декабря 2011

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

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

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

Ответы [ 3 ]

12 голосов
/ 15 декабря 2011

Если устройство имеет v2.2 или выше, вы можете повернуть камеру в портретную ориентацию, используя camera.setDisplayOrientation(90).В устройствах ниже v2.2 камера будет отображаться только в горизонтальной ориентации, и, таким образом, изображение будет отображаться в альбомной ориентации.Проверьте эти сообщения Использование камеры в книжной ориентации , Камера работает неправильно, если клавиатура не открыта .

2 голосов
/ 15 декабря 2011

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

        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 голос
/ 21 сентября 2015

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

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;

}
...