0

カメラアプリを作ろうとしています。それは主に公式のチュートリアルに基づいています。私の問題は、正しい縦横比で全画面表示ではないプレビューを作成することです。SDKの「CameraPreview」の例では、フルスクリーン プレビューが作成されます。

サイズと縦横比は気になりませんが、ビデオもこの間違った縦横比で記録されています。

明確化のための編集: 「CameraPreview」を使用しているため、すべてのサイズ変更と自動サイズ変更が行われています。例のように使用すると:

setContentView(mPreview);

作業プレビューが表示されますが、これはフルスクリーンです。

私の質問は、このプレビュー クラスを統合する方法です

public class CameraPreview extends ViewGroup implements SurfaceHolder.Callback {
...

所定のレイアウトで。プレビュー用の小さなウィンドウが必要です(サイズ変更可能が望ましい)。全体的なレイアウトを行う方法を知る必要があります。問題は、最初にメイン レイアウトがその子 (およびサイズ) で作成され、その後プレビューのサイズが測定されることです。

4

2 に答える 2

0

個人的には、次の方法を使用します。

private Point computePreviewSize(int pictureWidth, int pictureHeight,
        int screenWidth, int screenHeight){
    int resultWidth;
    int resultHeight;

    double widthRatio = pictureWidth / (double) screenWidth;
    double heightRatio = pictureHeight / (double) screenHeight;

    if(widthRatio > heightRatio){
        resultWidth = screenWidth;
        resultHeight = (int) (pictureHeight / widthRatio);
    }
    else{
        resultWidth = (int) (pictureWidth / heightRatio);
        resultHeight = screenHeight;
    }

    return new Point(resultWidth, resultHeight);
}

私はそれを呼び出しますSurfaceChanged(カメラのプレビューで):

Point result = computePreviewSize(pictureWidth, pictureHeight, width, height);
holder.setFixedSize(result.x, result.y);

写真を撮るのは私にとってはうまくいきます。動画にも使えると思います。

于 2013-07-26T07:35:56.040 に答える