在应用开发过程中,Camera成像有的手机平板出现卧倒(成90度)的情况,可能后置是正常的,而前置就出现卧倒。针对这样仔细查找了一些资料,最终得出,最后还是在SDK中找到了setDisplayOrientation()这个方法,主要是根据摄像头的自身信息与设备的翻转得到相应的翻转角度。在加上摄像头的参数设置中加上后,在各种卧倒的设备上也显示正常了,在这分享给大家。

 // make the camera image show in the same orientation as the display
 public static void setCameraDisplayOrientation(Activity activity, int cameraId, android.hardware.Camera camera)
 { 
  android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo();
  android.hardware.Camera.getCameraInfo(cameraId, info);
  int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
  int degrees = 0;    
  switch (rotation) {
  case Surface.ROTATION_0: degrees = 0; break; 
  case Surface.ROTATION_90: degrees = 90; break;  
  case Surface.ROTATION_180: degrees = 180; break;    
  case Surface.ROTATION_270: degrees = 270; break;    
  }   
  int result;    
  if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
   result = (info.orientation + degrees) % 360;       
   result = (360 - result) % 360;  // compensate the mirror    
  } else {
   // back-facing        
   result = (info.orientation - degrees + 360) % 360;   
  }   
  camera.setDisplayOrientation(result);
 }

posted on 2012-06-14 09:26  Mayola  阅读(2894)  评论(0编辑  收藏  举报