对于我的应用程序,我使用Android原生相机并使用表面视图预览图像。在我的情况下一切正常,除了相机方向。当我通过设置screenOrientation =“横向清单文件上的横向打开相机时,我在横向模式下没有任何问题进行预览。但我需要以纵向模式拍摄图像,为此我更改了我的清单,如android:screenOrientation =”portrait“并改变我的代码,如mCamera.setDisplayOrientation(90),params.set(“orientation”,“landscape”),params.set(“rotation”,90),但我仍然得到90度旋转图像。 我的代码是
public void setupCamera(int width, int height) {
Log.i(TAG, "setupCamera");
synchronized (this) {
if (mCamera != null) {
Camera.Parameters params = mCamera.getParameters();
List<Camera.Size> sizes = params.getSupportedPreviewSizes();
List<Camera.Size> imgsize=params.getSupportedPictureSizes();
mFrameWidth = width;
mFrameHeight = height;
// mCamera.setDisplayOrientation(90);
params.set("orientation", "landscape");
params.set("rotation", 90);
// selecting optimal camera preview size
{
int minDiff = Integer.MAX_VALUE;
for (Camera.Size size : sizes) {
if (Math.abs(size.height - height) < minDiff) {
mFrameWidth = size.width;
mFrameHeight = size.height;
minDiff = Math.abs(size.height - height);
}
}
}
params.setPreviewSize(getFrameWidth(), getFrameHeight());
List<String> FocusModes = params.getSupportedFocusModes();
if (FocusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO))
{
params.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
}
mCamera.setParameters(params);
mCamera.startPreview();
}
}
}
我正在使用Micromax A 52型号...... 任何人请帮助.....
答案 0 :(得分:2)
如果您的应用程序在v2.2或更高版本上运行,则可以使用camera.setDisplayOrientation(90)
将相机方向旋转为纵向。
对于其他人:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO)
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
//After opening camera - call via reflection
Method rotateMethod = android.hardware.Camera.class.getMethod("setDisplayOrientation", int.class);
rotateMethod.invoke(mCamera, 90);