Android камера перевернутая - PullRequest
       1

Android камера перевернутая

2 голосов
/ 05 сентября 2011

Я создаю приложение, в котором мне нужно сделать фотографию с пользовательской камеры, и изображение переворачивается или поворачивается (когда я перемещаю его вверх и вниз, вместо этого изображение перемещается в сторону).

есть идеи, почему это может быть и как решить эту проблему?

это код для камеры:

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 голосов
/ 12 сентября 2011

Хорошо, я нашел способ, который работает для меня: я установил (в манифесте) действие, которое использует Preview (имеется в виду вторую часть кода, который я предоставил), в ориентацию «ландшафт» и изменил макет, чтобы он соответствовалландшафтный режим.теперь камера выглядит нормально.но это означает, что активность камеры всегда будет в ландшафте (что мне достаточно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...