8

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

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

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

4

3 回答 3

13

如果设备具有v2.2或更高版本,您可以使用 将相机方向旋转为纵向camera.setDisplayOrientation(90)。在低于 v2.2 的设备中,相机将仅以横向显示,因此图像将以横向显示。检查这些帖子在纵向使用相机,除非键盘打开,否则相机是错误的

于 2011-12-15T06:57:09.773 回答
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;
        }
于 2011-12-15T07:15:07.227 回答
1

在这里,此代码也适用于 android camera application[Portrait mode] 中支持的所有类型的方向。

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;

}
于 2015-09-21T11:11:02.753 回答