0

カメラハードウェアを使用して画像のリストをキャプチャしようとしています。しかし、カメラビューを起動している間、ビューは通常のようには見えません。スクリーンショットは下に添付されています。私はこれをでテストしていHTC Sensation running android 4.0.3ます。

Image ScreenShot while in portrait ここに画像の説明を入力してください通常のカメラビューとは異なります。

ここでの問題は何ですか?

私はどこで間違っているのですか?

4

2 に答える 2

1

これは、Androidをポートレートモードで使用してカスタムカメラを作成する場合の通常の問題です。カメラのプレビューを表示するために使用されているSurfaceViewがある可能性があります。surfaceCreated次のコード行をメソッドに追加します。

camera.setDisplayOrientation(90);

詳細については、このトピックに関する他の回答を確認してください(ここに1つもう1つあります)。基本的に、Androidカメラは横向きモードで表示するように設定されているため、アクティビティが縦向きモードの場合は、これに対応するために向きを回転させる必要があります。

于 2013-02-20T11:48:47.330 に答える
1

デフォルトでは、ハードウェア カメラは横向き (ほとんどのデバイス) であるため、一度にキャプチャすると、横向きで撮影されたかのように、自動的に 90 度に回転します。

そのため、横向きで撮影すると正しい画像が得られ、縦向きで撮影すると 90 度回転した画像が得られます。

  • デバイスの向きを検出し、縦向きの場合は時計回りに 90 度回転します。これにより、反時計回りに 90 度回転したときに集計されます。

以下のコードを使用して向きを検出します。

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) 
    {
        super.onRestoreInstanceState(savedInstanceState);
        if (savedInstanceState != null) 
        {
            if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
            {
                // code in portrait - rotate to 90 degree
            }
            else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
            {
                    // code in landscape - do nothing
            }

        }
    }
于 2013-02-20T11:56:54.260 に答える