安卓相机肖像方向

8

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

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

捕获的图像自动以 横向视图 显示。我如何使 相机 捕获 纵向视图 的图像?


我也遇到了同样的问题,请告诉我你是如何解决的... - Siva K
@SivaK 我自己创建了一个相机视图来拍摄照片,而不是使用默认的相机应用程序。 - Seshu Vinay
1
Seshu Vinay - 感谢您的回复,是否有创建自己的相机视图的示例代码或博客? - Siva K
下面有一个答案提供了一些示例代码。 - Seshu Vinay
谢谢 - 我刚刚浏览了FoodSpotting应用程序,它使用默认相机,在纵向拍摄照片时,当照片被检索时,它仍处于同样的纵向模式...我会继续搜索...谢谢。 - Siva K
3个回答

13

1
我认为这样做不会起作用,除非实际上覆盖相机类 - 在这里调用意图是不够的。 - 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;

}

感谢Tim Castelijns。 - Harrish Android

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接