针对log错误:
java.lang.RuntimeException: set display orientation failed
首先确保,自己的SuferView控件可获取大小,意思是,Suferview有设置长和宽,之前因为一个项目中的Suferveiew是使用的自定义的控件,所以在使用的使用时在java代码中动态创建的,而导致后面不管怎么设置都不管用,一般情况下,可设置SuferView的大小为满屏,
接着,看应用是否需要在2.1以下版本运行,需要在2.1以下又需要根据不同系统之间来做稍微的处理,
/**
* 2.1之前的版本设置摄像头旋转90度
* @param orientation
*/
@SuppressLint("NewApi")
public void setCameraDisplayOrientation(Camera camera,int orientation) {
if(android.os.Build.VERSION.SDK_INT>=8)
setDisplayOrientation(camera,90);
else {
if(null == camera)
return;
Method method;
try {
//通过反射机制获取相应的方法
method = camera.getClass().getMethod("setDisplayOrientation", new Class[]{int.class});
if(null != method){
method.invoke(camera, new Object[]{orientation});
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
*
* @param camera
* @param angle
*/
protected void setDisplayOrientation(Camera camera, int angle){
Method downPolymorphic;
try
{
downPolymorphic = camera.getClass().getMethod("setDisplayOrientation", new Class[] { int.class });
if (downPolymorphic != null)
downPolymorphic.invoke(camera, new Object[] { angle });
}
catch (Exception e1)
{
}
}
针对
setDisplayOrientation方法,的解释是在调用直接使用camera.setDisplayOrientation(90);抛出异常时,可有使用该方法来设置。