安卓相机视图上下颠倒

3

我正在开发一个应用程序,需要从自定义相机中拍摄照片,但显示的图像会上下颠倒或旋转(当我上下移动相机时,图片会向左右移动)。

请问可能是什么原因,如何解决这个问题?

以下是相机的代码:

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");
  }
1个回答

0

好的,我找到了适合我的方法: 我在清单文件中设置了使用预览的Activity(也就是我提供的代码的第二部分)的方向为“横屏”,并更改了布局以适应横屏模式。 现在相机看起来很好。但这意味着相机活动将始终处于横屏状态(对我来说已经足够好了)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接