ориентация портретной камеры на вкладке galaxy - PullRequest
0 голосов
/ 11 апреля 2011

Я разрабатываю на / для Samsung Galaxy Tab (7 дюймов).Мое приложение должно быть только в портретном режиме, т.е. я заблокировал его в портретном режиме в своем приложении и в настройках устройства.Проблема в том, что когда я пытаюсь повернуть предварительный просмотр камеры, она в настоящее время поворачивается на 90 градусов в неправильном направлении.

Сейчас это моя поверхность. Создано

    public void surfaceCreated(SurfaceHolder holder) {
    camera = Camera.open();
    try {
        camera.setPreviewDisplay(holder);
        Camera.Parameters parameters = camera.getParameters();
        parameters.setPictureFormat(PixelFormat.JPEG);
        parameters.set("orientation", "portrait");
        //camera.setDisplayOrientation(90); 
        parameters.setRotation(90);
        camera.setParameters(parameters);
    }
    catch (IOException exception) {
        camera.release();
    }
}

camera.setDisplayOrientation (90), кажется, не работает (это ничего не делает, поэтому я прокомментировал это).Однако parameters.setRotation (90) НАСТОЯЩИМ ДЕЛАЕТСЯ, ПОЛУЧИЛ РАБОТУно он создает уродливую «полоску» «мерцающих цветов» вдоль стороны приложения.setDisplayOrientation () должен работать для меня, так как я использую Android API 8 (Froyo 2.2) !!

В Google есть ветка о проблемах, связанных с вращением http://code.google.com/p/android/issues/detail?id=1193#c26,, но в меруНасколько мне известно, это ничего не значит для моей проблемы.

Любые и все решения, относящиеся к этой проблеме, будут высоко оценены!спасибо!

Ответы [ 3 ]

1 голос
/ 24 августа 2012

Это работает для меня на вкладке Samsung Galaxy:

public void surfaceCreated(SurfaceHolder holder)
    {
    // The Surface has been created, acquire the camera and tell it where to draw.
    mCamera = Camera.open();

    Parameters params = mCamera.getParameters();

    if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE)
    {
    params.set("orientation", "portrait");
    mCamera.setDisplayOrientation(90);
    }

    try
    {
    mCamera.setPreviewDisplay(holder);
    }
    catch (IOException exception)
    {
    mCamera.release();
    mCamera = null;
    }

    }
0 голосов
/ 11 апреля 2011

попробуйте это. Я делаю этот код и тестирую на Galaxy Tab. Код хорошо работает

public void surfaceCreated(SurfaceHolder holder) {

    camera = Camera.open();

    try {
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO)
        {                       
         camera.setDisplayOrientation(90);
        } else {
          Parameters parameters = camera.getParameters();
          parameters.setRotation(90);       
          camera.setParameters(parameters); 
        }

        camera.setPreviewDisplay(holder);
    } catch (IOException exception) {
        camera.release();
    }
}
0 голосов
/ 11 апреля 2011

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

...