我的应用程序捕获的图像仅在三星设备中旋转

时间:2014-08-29 13:01:27

标签: android

我在相机应用程序上工作,我没有使用设备相机拍照,我已经做了它工作正常但是当我们在三星设备上捕捉图像时,我将旋转图像转换为onPictureTaken回调方法。

请让我知道如何使图像与设备方向的方向相同。

我使用以下代码来设置相机旋转,但它在三星设备中无效。

        Camera.CameraInfo info = new Camera.CameraInfo();
        Camera.getCameraInfo(Camera.CameraInfo.CAMERA_FACING_BACK, info);
        int rotation = this.getWindowManager().getDefaultDisplay().getRotation();
        int degrees = 0;
        switch (rotation) {
        case Surface.ROTATION_0: degrees = 0; break; //Natural orientation
        case Surface.ROTATION_90: degrees = 90; break; //Landscape left
        case Surface.ROTATION_180: degrees = 180; break;//Upside down
        case Surface.ROTATION_270: degrees = 270; break;//Landscape right
        }
        int rotate = (info.orientation - degrees + 360) % 360;

        Camera.Parameters param = mCamera.getParameters();
        param.setRotation(rotate); 
        mCamera.setParameters(param);

1 个答案:

答案 0 :(得分:0)

我有一个有趣的建议,我也在其中一个项目中做过。我假设你使用的是imageView和Bitmap。现在将您的旋转代码转换为旋转90度的方法。然后在图像上添加透明按钮。每次点击图像(按钮也),图像将旋转90度! 例如,您可以编写这样的旋转方法;

public static Bitmap rotateBitmap(Bitmap source)
{
      Matrix matrix = new Matrix();
      matrix.postRotate(90);
      return Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, true);
}

然后,假设您添加了一个透明按钮" rotater"在图像上,您可以按如下方式设置onClickListener。它都设置了Bitmap和imageView。

rotater.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            originalBitmap=rotateBitmap(originalBitmap);
            imageView.setImageBitmap(originalBitmap);

        }
    });

由于图像的EXIF数据,图像旋转是一个问题。希望这个技巧适合你的需要。