Camera.parames.setDisplayOrientation问题解决

本文针对在Android应用中遇到的setdisplayorientationfailed异常提供了解决方案。主要介绍了如何确保SurfaceView控件正确设置尺寸,并提供了兼容不同Android版本的setDisplayOrientation方法实现。

针对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);抛出异常时,可有使用该方法来设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值