android相机纵向方向

时间:2011-12-15 06:45:30

标签: android android-camera android-camera-intent landscape-portrait

我在我的应用中使用相机。我只是使用intent启动相机

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

捕获的图像自动进入landscape view。如何让cameraportrait view

中捕捉图像

3 个答案:

答案 0 :(得分:12)

如果设备有v2.2或更高版本,您可以使用camera.setDisplayOrientation(90)将相机方向旋转为纵向。在低于v2.2的设备中,相机仅以横向显示,因此图像将以横向显示。查看这些帖子Using Camera in Portrait OrientationCamera is wrong unless keyboard is open

答案 1 :(得分: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;
        }

答案 2 :(得分:1)

此处,此代码适用于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;

}