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

Android 从我的应用程序捕获的图像仅在三星设备中旋转,android,Android,我正在开发camera应用程序,在该应用程序中,我没有使用设备摄像头拍照,我已经这样做了,它工作正常,但当我们在三星设备上拍摄图像时,我将旋转图像转换为onPictureTaken回调方法 请让我知道我应该怎么做,以获得与设备方向相同的图像方向 我使用下面的代码来设置相机旋转,但在三星设备中没有帮助 Camera.CameraInfo info = new Camera.CameraInfo(); Camera.getCameraInfo(Camera.Camer

我正在开发camera应用程序,在该应用程序中,我没有使用设备摄像头拍照,我已经这样做了,它工作正常,但当我们在三星设备上拍摄图像时,我将旋转图像转换为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);

我有一个有趣的建议,我在我的一个项目中也做过。我假设您使用的是imageView和位图。现在将旋转代码转换为旋转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);
}
然后,假设您在图像上添加了一个透明按钮“旋转器”,您可以如下设置它的onClickListener。它同时设置位图和图像视图

rotater.setOnClickListener(new View.OnClickListener() {

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

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