簡體   English   中英

當我的應用程序處於縱向狀態時,請使用橫向相機

[英]Use camera in landscape when my app is in portrait

我已經嘗試過各種方式來實現我想要的行為,但似乎沒有任何工作。

我的應用程序被鎖定在縱向模式(我不想要橫向UI)但我希望能夠切換相機顯示以交替顯示縱向和橫向模式的相機預覽

我對拍攝圖像不感興趣。

要以縱向顯示預覽,我只需:

camera.setDisplayOrientation(90);

我的預覽工作正常,但是,當我嘗試在橫向模式下顯示相機預覽時,我會:

camera.setDisplayOrientation(0);

並且預覽實際上是旋轉的,但是來自相機的圖像沒有旋轉,最終結果只是旋轉到橫向的肖像圖像。

我嘗試過各種方式:

1)使用parameters.setRotation() )旋轉相機,但這只影響保存的最終圖像,與預覽無關;

2)設置parameters.set("orientation", "landscape")但這似乎沒有效果(可能是一個舊的,尚未支持的命令?);

3)設置下面方法的每個組合,但沒有,有效旋轉圖像的唯一方法來自相機似乎是物理旋轉我的設備...

這是我的意思的實際演示:

在此輸入圖像描述

在此輸入圖像描述

在此輸入圖像描述

在此輸入圖像描述

正如您所看到的, parameters.setRotation()對預覽沒有影響 ,這在縱向時是正確的,但只是在橫向旋轉,因為相機不會自行旋轉,而只是旋轉縱向圖像。

那么,當應用程序處於縱向狀態時,有沒有辦法在橫向顯示相機預覽?

謝謝。

查看此方法以設置相機的方向。 參數orientation是Display.getRotation(),您可以根據您的要求更改設置:

public void setCameraOrientation(int orientation) {
    int orientationDegree = 0;
    switch (orientation) {
        case Surface.ROTATION_0:
            orientationDegree = 0;
            break;
        case Surface.ROTATION_90:
            orientationDegree = 90;
            break;
        case Surface.ROTATION_180:
            orientationDegree = 180;
            break;
        case Surface.ROTATION_270:
            orientationDegree = 270;
            break;
    }
    int displayOrientation = (cameraInfo.orientation - orientationDegree + 360) % 360;
    camera.setDisplayOrientation(displayOrientation);
    Camera.Parameters parameters = camera.getParameters();
    parameters.setRotation(displayOrientation);
    camera.setParameters(parameters);
}

對於整個范圍內檢查出我的相機演示應用程序在這里 特別是CameraPreview類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM