카메라 사용때문에 찍고 저장하는 간단한 기능을 테스트 삼아 구현해 보려고 합니다.
인터넷의 각종소스, API Demo, 레퍼런스 등등을 뒤지면서 방법을 찾고있습니다만 몇가지 문제를 도통 모르겠어서 여쭙니다.

전형적으로 SurfaceView 에 Camera 클래스를 선언해서 찍는걸 구현하고 있습니다만.

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
	Camera.Parameters param = camera.getParameters();
	param.set("rotation", 90); // <= 에러는 안나지만 안됩니다.
	//param.setPreviewSize(w, h); // <= 이게 있으면 에러가 납니다.
	param.setPictureSize(w, h); // <= See Also 라더니 마찬가지로 에러가 납니다.
	camera.setParameters(param);
	camera.startPreview();
}


1. 사이즈 조절 불가.
로그켓 내용입니다만... 사이즈가 틀렸다는것 같습니다.
setPreviewSize, setPictureSize 를 주석처리하면 에러 안나고 실행도 됩니다만... 화면이 90도 돌아가서 눌린 상태로 보입니다.
사용법이 틀렸는지 사용하는 장소가 틀렸는지 뭘 더해야하는지 잘 모르겠습니다.

12-29 20:20:44.857: ERROR/QualcommCameraHardware(59): Invalid picture size requested: 320x464
12-29 20:20:44.867: DEBUG/AndroidRuntime(21013): Shutting down VM
12-29 20:20:44.867: WARN/dalvikvm(21013): threadid=1: thread exiting with uncaught exception (group=0x4001d7e0)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013): FATAL EXCEPTION: main
12-29 20:20:44.877: ERROR/AndroidRuntime(21013): java.lang.RuntimeException: setParameters failed
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.hardware.Camera.native_setParameters(Native Method)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.hardware.Camera.setParameters(Camera.java:647)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at com.camera.test005.Preview.surfaceChanged(Preview.java:80)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.view.SurfaceView.updateWindow(SurfaceView.java:538)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.view.SurfaceView.dispatchDraw(SurfaceView.java:339)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.view.ViewGroup.drawChild(ViewGroup.java:1638)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.view.ViewGroup.drawChild(ViewGroup.java:1638)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.view.ViewGroup.drawChild(ViewGroup.java:1638)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.view.ViewGroup.drawChild(ViewGroup.java:1638)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.view.View.draw(View.java:6743)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.widget.FrameLayout.draw(FrameLayout.java:352)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.view.ViewGroup.drawChild(ViewGroup.java:1640)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.view.ViewGroup.drawChild(ViewGroup.java:1638)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.view.View.draw(View.java:6743)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.widget.FrameLayout.draw(FrameLayout.java:352)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1842)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.view.ViewRoot.draw(ViewRoot.java:1407)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.view.ViewRoot.performTraversals(ViewRoot.java:1163)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.os.Handler.dispatchMessage(Handler.java:99)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.os.Looper.loop(Looper.java:123)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at android.app.ActivityThread.main(ActivityThread.java:4627)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at java.lang.reflect.Method.invokeNative(Native Method)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at java.lang.reflect.Method.invoke(Method.java:521)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-29 20:20:44.877: ERROR/AndroidRuntime(21013):     at dalvik.system.NativeStart.main(Native Method)
12-29 20:20:44.888: WARN/ActivityManager(92):   Force finishing activity com.camera.test005/.CameraDemo



2. 화면이 90도 돌아서 나옵니다.
portrait 상태로 생각하고 컴파일을 하긴 했습니다만...
 .setRotation(90) 못씁니다. 1.6 환경이라서요.
parameter.set("orientation", "portrait")  안됩니다.
parameter.set("rotation", 90) 안됩니다.
현재 사장님의 요구 개발 환경이 1.6 이라서...  안펍과 구글링으로 찾은 많은 함수라든지 방법이 적용할 수가 없더군요.
어떠한 방법으로 화면을 돌릴 수 있는지 모르겠습니다.

3. 레퍼런스
parameter.set 함수의 레퍼런스를 살펴보면...

public void set (String key, String value) 

이렇습니다. 그런데 당췌 저 "key" 는 어디서 찾을 수 있을까요..?? ㅠ.ㅠ;;
"ratation" 이라는 key 가 맞는지 아닌지도 모르겠습니다.
parameter.set("aaa", 90) 이렇게 해도 에러 안나고 잘 컴파일 되고 실행되더군요.
이부분이 아예 적용자체가 안되는것 같긴 한데 그건 둘째치고 이게 맞는지 아닌지 뭐가 있는지 조차도 모르겠습니다.

소스 첨부합니다.


휴.. 모르는것도 모르는것이지만 뭘 찾아봐야 할지도 모르겠을땐 정말 답답합니다.
모쪼록... 힌트, 힌트가 있는곳, 검색해야할 키워드 뭐든지 좋습니다. 조언을 부탁드립니다.
감사합니다.