zxing를 landscape에서 portrait으로 전환하는 방법입니다. 참고하세요.

헷갈려 하시는 분이 계신 것 같아 더 자세히 설명 드리겠습니다..

총 4번의 스텝을 거쳐주셔야합니다.

1. 우선 메니페스트 내의 39번째 라인 부근에 보시면 <uses-feature android:name="android.hardware.screen.landscape"/>
   부분을 <uses-feature android:name="android.hardware.screen.portrait"/>로 변경해 줍니다.
   메니페스트의 60번째 라인을 보시면 CaptureActivity 액티비티의 screen orientation을 portrait으로 변경해줍니다.
   CameraManager 클래스의 openDriver() 함수로 가셔서 theCamera = Camera.open(); 아래쪽에
   theCamera.setDisplayOrientation(90); 을 추가시켜줍니다.


2. 카메라와 액티비티를 세로모드로 전환했어도 사진을 통해 찍힌 이미지는 여전히 가로입니다.
   사진을 찍은 후 얻은 byte[] data를 세로로 전환해 줍니다.
   DecodeHandler.java로 가시면 activity.getCameraManager().buildLuminanceSource(data, width, height);
   를 호출하는 부분이 있을 겁니다. 그 이전 라인에 아래와 같이 추가해 줍니다.
   byte[] rotatedData = new byte[data.length];
    for (int y = 0; y < height; y++) {
        for (int x = 0; x < width; x++)
            rotatedData[x * height + height - y - 1] = data[x + y * width];
    }
    int tmp = width;
    width = height;
    height = tmp;

    byte[]data를 회전하여 rotatedData에 저장하고 width와 height를 스왑해 줍니다.
   그리고 buildLuminanceSource(rotatedData, width, height); 와 같이 바뀌어진 인자 값을 넘겨줍니다.


3. CameraManager.java로 다시 가셔서 getFramingRectInPreview()의 rect 관련 부분을 아래와 같이 바꿔 줍니다. 
rect.left = rect.left * cameraResolution.y / screenResolution.x;
rect.right = rect.right * cameraResolution.y / screenResolution.x;
rect.top = rect.top * cameraResolution.x / screenResolution.y;
rect.bottom = rect.bottom * cameraResolution.x / screenResolution.y;



4.CameraConfigurationManager의 getCameraResolution()과 getScreenResolution()을
아래와 같이 수정합니다.
Point getCameraResolution() {
	int tmp = cameraResolution.x;
	cameraResolution.x = cameraResolution.y;
	cameraResolution.y = tmp;
    return cameraResolution;
  }

  Point getScreenResolution() {
	int tmp = screenResolution.x;
	screenResolution.x = screenResolution.y;
	screenResolution.y = tmp;
    return screenResolution;
  }

이렇게 하면 세로모드로 완벽하게 바뀝니다...


추가사항
- CameraConfigurationManager 클래스에 setDesiredCameraParameters() 메소드에
  Camera.Parameters parameters = camera.getParameters(); 구문이 존재합니다.
  그 아래쪽에 아래와 같이 추가해주세요..
  parameters.set("orientation", "portrait");

- PlanarYUVLuminanceSource 클래스의 45번째 라인에 
   if (left + width > dataWidth || top + height > dataHeight) {

throw new IllegalArgumentException("Crop rectangle does not fit within image

data."); }

위 부분을 모두 주석처리 해줍니다.