[英]how to change the Android-camera to portrait in surfaceview?
I am coding for an android tablet and i want my app to use the portrait view of the surfaceView
camera preview. 我正在编写一个Android平板电脑,我希望我的应用程序使用surfaceView
相机预览的纵向视图。 It is landscape by default, and I tried the following code to rotate to portrait view: 默认情况下它是横向的,我尝试使用以下代码旋转到纵向视图:
public void surfaceCreated(SurfaceHolder holder){
// The Surface has been created, acquire the camera and tell it where to draw.
mCamera = Camera.open();
Parameters params = mCamera.getParameters();
// If we aren't landscape (the default), tell the camera we want portrait mode
if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE){
params.set("orientation", "portrait"); // "landscape"
// And Rotate the final picture if possible
// This works on 2.0 and higher only
//params.setRotation(90);
// Use reflection to see if it exists and to call it so you can support older versions
try {
Method rotateSet = Camera.Parameters.class.getMethod("setRotation", new Class[] { Integer.TYPE } );
Object arguments[] = new Object[] { new Integer(270) };
rotateSet.invoke(params, arguments);
} catch (NoSuchMethodException nsme) {
// Older Device
Log.v("CameraView","No Set Rotation");
} catch (IllegalArgumentException e) {
Log.v("CameraView","Exception IllegalArgument");
} catch (IllegalAccessException e) {
Log.v("CameraView","Illegal Access Exception");
} catch (InvocationTargetException e) {
Log.v("CameraView","Invocation Target Exception");
}
}
mCamera.setParameters(params);
try{
mCamera.setPreviewDisplay(holder);
} catch (IOException exception) {
mCamera.release();
mCamera = null;
}
}
But it doesn't work. 但它不起作用。 Could anybody fix it please? 有人可以解决吗?
You will probably want to use the setDisplayOrientation
function as follows: 您可能希望使用setDisplayOrientation
函数,如下所示:
public void surfaceCreated(SurfaceHolder holder) {
if (Build.VERSION.SDK_INT >= 8) mCamera.setDisplayOrientation(90);
}
Using the camera params.set("orientation"...
stuff is not consistent across devices and is really pre-SDK 8 language. 使用相机params.set("orientation"...
各种设备之间的东西不一致,实际上是SDK 8之前的语言。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.