Camera.Parameters.SetRotation(Int32) Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Caution
deprecated
Sets the clockwise rotation angle in degrees relative to the orientation of the camera.
[Android.Runtime.Register("setRotation", "(I)V", "GetSetRotation_IHandler")]
[System.Obsolete("deprecated")]
public virtual void SetRotation (int rotation);
[<Android.Runtime.Register("setRotation", "(I)V", "GetSetRotation_IHandler")>]
[<System.Obsolete("deprecated")>]
abstract member SetRotation : int -> unit
override this.SetRotation : int -> unit
Parameters
- rotation
- Int32
The rotation angle in degrees relative to the orientation of the camera. Rotation can only be 0, 90, 180 or 270.
- Attributes
Exceptions
if rotation value is invalid.
Remarks
Sets the clockwise rotation angle in degrees relative to the orientation of the camera. This affects the pictures returned from JPEG PictureCallback
. The camera driver may set orientation in the EXIF header without rotating the picture. Or the driver may rotate the picture and the EXIF thumbnail. If the Jpeg picture is rotated, the orientation in the EXIF header will be missing or 1 (row #0 is top and column #0 is left side).
If applications want to rotate the picture to match the orientation of what users see, apps should use android.view.OrientationEventListener
and android.hardware.Camera.CameraInfo
. The value from OrientationEventListener is relative to the natural orientation of the device. CameraInfo.orientation is the angle between camera orientation and natural device orientation. The sum of the two is the rotation angle for back-facing camera. The difference of the two is the rotation angle for front-facing camera. Note that the JPEG pictures of front-facing cameras are not mirrored as in preview display.
For example, suppose the natural orientation of the device is portrait. The device is rotated 270 degrees clockwise, so the device orientation is 270. Suppose a back-facing camera sensor is mounted in landscape and the top side of the camera sensor is aligned with the right edge of the display in natural orientation. So the camera orientation is 90. The rotation should be set to 0 (270 + 90).
The reference code is as follows.
public void onOrientationChanged(int orientation) {
if (orientation == ORIENTATION_UNKNOWN) return;
android.hardware.Camera.CameraInfo info =
new android.hardware.Camera.CameraInfo();
android.hardware.Camera.getCameraInfo(cameraId, info);
orientation = (orientation + 45) / 90 * 90;
int rotation = 0;
if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
rotation = (info.orientation - orientation + 360) % 360;
} else { // back-facing camera
rotation = (info.orientation + orientation) % 360;
}
mParameters.setRotation(rotation);
}
Java documentation for android.hardware.Camera.Parameters.setRotation(int)
.
Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.
Applies to
See also
- OrientationEventListener
- <xref:Android.Hardware.Camera.GetCameraInfo(System.Int32%2c+Android.Hardware.Camera.CameraInfo)>