2011-09-05 7 views
2

저는 사용자 정의 카메라에서 사진을 찍어야하고 뷰가 거꾸로되거나 회전되는 응용 프로그램을 구축하고 있습니다 (위아래로 움직이면 위아래로 움직입니다).안드로이드 카메라 뷰가 바뀌 었습니다.

그 이유는 무엇이며 어떻게 해결할 수 있습니까?

카메라에 대한 코드입니다 :

class Preview extends SurfaceView implements SurfaceHolder.Callback { 
    private static final String TAG = "Preview"; 

    SurfaceHolder mHolder; 
    public Camera camera; 

    Preview(Context context) { 
    super(context); 
    mHolder = getHolder(); 
    mHolder.addCallback(this); 
    mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
    } 

    public void surfaceCreated(SurfaceHolder holder) { 
    camera = Camera.open(); 

    try { 
     camera.setPreviewDisplay(holder); 

     camera.setPreviewCallback(new PreviewCallback() { 
     // Called for each frame previewed 
     public void onPreviewFrame(byte[] data, Camera camera) { 
      Log.d(TAG, "onPreviewFrame called at: " + System.currentTimeMillis()); 
      Preview.this.invalidate(); 
     } 
     }); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    } 

    public void surfaceDestroyed(SurfaceHolder holder) { 
    camera.stopPreview(); 
    camera.release(); 
    camera = null; 
    } 

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { 
    camera.startPreview(); 

미리 호출하는 코드 :

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.solve_capture); 

    preview = new Preview(this); // <3> 
    ((FrameLayout) findViewById(R.id.preview)).addView(preview); // <4> 

    buttonClick = (Button) findViewById(R.id.buttonCapture); 
    buttonClick.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { // <5> 
     preview.camera.takePicture(shutterCallback, rawCallback, jpegCallback); 
     } 
    }); 

    buttonFocus = (Button) findViewById(R.id.buttonFocus); 
    buttonFocus.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { // <5> 
      preview.camera.autoFocus(new AutoFocusCallback() { 
      @Override 
      public void onAutoFocus(boolean success, Camera camera) { 
       Camera.Parameters camParam = camera.getParameters(); 
       camParam.setFocusMode(Parameters.FOCUS_MODE_AUTO); 
       camera.setParameters(camParam); 
      } 
      }); 
     } 
    }); 

    Log.d(TAG, "onCreate'd"); 
    } 

답변

0

좋아, 내가 나를 위해 작동하는 방법을 발견 : 내가 설정 한을 (매니페스트에서) 미리보기 (즉, 제공 한 코드의 두 번째 부분) 방향을 "가로 방향"으로 사용하고 가로 모드에 맞게 레이아웃을 변경 한 활동. 이제 카메라가 정상적으로 보입니다. 그러나 이는 카메라 액티비티가 항상 가로로 표시된다는 것을 의미합니다 (이는 내게 충분합니다).

관련 문제