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

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

1. 우선 메니페스트 내의 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;
  }

이렇게 하면 세로모드로 완벽하게 바뀝니다...
http://www.androidpub.com/index.php?mid=android_dev_info&document_srl=2250999/출처