我已经创建了一个相机应用程序,我想让我的应用程序在所有4个可能的方向转换,并相应地更新相机预览.因为我已经使用我从以下复制的以下方法:
Android – Camera preview is sideways
Android – Camera preview is sideways
public void updateCameraDisplay(int w,int h) { // set preview size and make any resize,rotate or // reformatting changes here Log.i("CameraPreviews","Updating camera orientation with w=" + w + " and h=" + h); Parameters parameters = camera.getParameters(); Display display = getActivity().getWindowManager() .getDefaultDisplay(); int rotation = getActivity().getResources().getConfiguration().orientation; Log.i("CameraPreviews","rotation is " + display.getRotation()); if (display.getRotation() == Surface.ROTATION_0) { parameters.setPreviewSize(h,w); camera.setDisplayOrientation(0); } if (display.getRotation() == Surface.ROTATION_90) { parameters.setPreviewSize(w,h); camera.setDisplayOrientation(270); } if (display.getRotation() == Surface.ROTATION_180) { parameters.setPreviewSize(h,w); camera.setDisplayOrientation(180); } if (display.getRotation() == Surface.ROTATION_270) { parameters.setPreviewSize(w,h); camera.setDisplayOrientation(90); } try { camera.setParameters(parameters); } catch (Exception e) { e.printStackTrace(); } } }
我已经调整了价值观,在三星Galaxy Tab2上进行测试,最终得到正确的方向,一切正常.当我尝试在htc一个手机它根本不工作!!!!!所有的方向是完全错误的!所以我得出结论,thre必须是2种类型的设备(或更多…请不要!),因为旋转表示屏幕已经从其“默认”位置旋转了多少度,一些设备有一个默认位置和其他另一个.我如何知道这个默认轮播,并在我的代码中相应地进行操作?
EJ:
defaultOrientation =一些代码
if(defaultOrientation == 0)…
别….
锁定屏幕方向是没有问题的.
目标api = 11
非常感谢
public void updateCameraDisplay(int w,"screen rotation is " + rotation); Log.i("CameraPreviews","display rotation is " + display.getRotation()); if (display.getRotation() == Surface.ROTATION_0) { if (rotation == Configuration.ORIENTATION_LANDSCAPE) { parameters.setPreviewSize(h,w); camera.setDisplayOrientation(0); } else { parameters.setPreviewSize(h,w); camera.setDisplayOrientation(90); } } else if (display.getRotation() == Surface.ROTATION_90) { if (rotation == Configuration.ORIENTATION_PORTRAIT) { parameters.setPreviewSize(w,h); camera.setDisplayOrientation(270); } else { parameters.setPreviewSize(w,h); //camera.setDisplayOrientation(0); } } else if (display.getRotation() == Surface.ROTATION_180) { if (rotation == Configuration.ORIENTATION_LANDSCAPE) { parameters.setPreviewSize(h,w); camera.setDisplayOrientation(180); }else { parameters.setPreviewSize(h,w); camera.setDisplayOrientation(270); } } else if (display.getRotation() == Surface.ROTATION_270) { if (rotation == Configuration.ORIENTATION_PORTRAIT) { parameters.setPreviewSize(w,h); camera.setDisplayOrientation(90); } else { parameters.setPreviewSize(w,h); camera.setDisplayOrientation(180); } } try { camera.setParameters(parameters); } catch (Exception e) { e.printStackTrace(); } }
只要我们不以纵向模式旋转手机,就可以在htc一个和三星Galaxy Tab上更好地工作
解决方法
您需要考虑的因素是:设备的方向,屏幕和相机之间的程度,假设您正在使用后置摄像头,以及是否使活动能够感测到方向改变.
一个重要的是,制造商实施的Camera HAL代码是否符合Google的协议.