2011-09-05 117 views
2

我正在构建一个应用程序,我需要从自定义摄像头拍摄照片,然后将视图翻转或旋转(当我将其上下移动时,图片会横向移动)。Android摄像头视图倒转

任何想法为什么这可能是以及如何解决这个问题?

这是摄像机的代码:

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

好吧,我发现对我的作品的方式:我已经设置 (在清单中)将“预览”(意为我提供的代码的第二部分)方向的“活动”改为“风景”,并更改布局以适应风景模式。 现在相机看起来不错。但这意味着相机活动将始终处于横向状态(这对我来说足够好)。