갤3 환경입니다.
아시는 분은 아시겠지만 해상도가 720*1280 입니다.
근데 결론은 자꾸 이놈이 해상도를 960*720 으로 잡아버려서 골치가 아픕니다.
메니페스트에서 오리엔테이션은 당연 포트레이트로 했구요.
public void surfaceChanged(SurfaceHolder arg0, int format, int w, int h) {
// Now that the size is known, set up the camera parameters and begin
// the preview.
Camera.Parameters parameters = m_Camera.getParameters();
parameters.setPreviewSize(w, h);
Log.e(TAG, "해상도 : " + w + ", " + h);
m_Camera.setParameters(parameters);
m_Camera.setDisplayOrientation(90);
...
이렇게 했어요. 뭐 오픈소스에 나와있는 것처럼 최적화 크기 찾을 필요 없이 w h 에 각각 720 1280 잘 넘어오더군요.
그래서 해상도를 설정하고 오리엔테이션도 잘 설정했습니다만!!
근데 콜백에서는 왜 자꾸 960*720이 되는거죠??
처음은 그렇다쳐도 서페이스체인지드에서 set을 했는데도 960..720...
public void onPreviewFrame(byte[] data, Camera camera) {
try {
Camera.Size size = camera.getParameters().getPreviewSize();
Log.e(TAG, "해상도 : " + size.width + ", " + size.height);
processImage(data, size.width, size.height);
camera.addCallbackBuffer(data);
} catch (RuntimeException e) {
Log.e(TAG, e.toString());
}
}
Parameters 의 getSupportedPictureSizes()메소드를 통해서 지원하는 프리뷰 사이즈를 한번 보세요. 해당 사이즈를 지원하지 않을 수 있습니다.