2

私のアプリケーションでは、Androidネイティブカメラを使用しており、サーフェスビューを使用して画像をプレビューしています。私の場合、カメラの向きを除いてすべてが機能しています。マニフェストファイルにscreenOrientation="landscapeを設定してカメラを開くと、ランドスケープモードで問題なくプレビューが表示されます。ただし、ポートレートモードで画像を撮影する必要があるため、マニフェストをandroid:screenOrientation="portrait"のように変更しました。 mCamera.setDisplayOrientation(90)、params.set( "orientation"、 "landscape")、params.set( "rotation"、90)のようにコードを変更しますが、それでも90度回転した画像を取得しています。

  public void setupCamera(int width, int height) {
    Log.i(TAG, "setupCamera");
    synchronized (this) {
        if (mCamera != null) {
            Camera.Parameters params = mCamera.getParameters();
            List<Camera.Size> sizes = params.getSupportedPreviewSizes();
            List<Camera.Size> imgsize=params.getSupportedPictureSizes();
            mFrameWidth = width;
            mFrameHeight = height;

           // mCamera.setDisplayOrientation(90);
            params.set("orientation", "landscape");
             params.set("rotation", 90);
            // selecting optimal camera preview size
            {
                int  minDiff = Integer.MAX_VALUE;
                for (Camera.Size size : sizes) {
                    if (Math.abs(size.height - height) < minDiff) {
                        mFrameWidth = size.width;
                        mFrameHeight = size.height;
                        minDiff = Math.abs(size.height - height);
                    }
                }
            }

            params.setPreviewSize(getFrameWidth(), getFrameHeight());




            List<String> FocusModes = params.getSupportedFocusModes();
            if (FocusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO))
            {
                params.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
            }            

            mCamera.setParameters(params);



            mCamera.startPreview();
        }
    }
}

私はMicromaxA52モデルを使用しています...誰でも助けてください.....

4

1 に答える 1

2

アプリケーションが v2.2 以降で実行されている場合は、 を使用してカメラの向きを縦向きに回転できますcamera.setDisplayOrientation(90)

ほかの人のため:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO)
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

//After opening camera - call via reflection
Method rotateMethod = android.hardware.Camera.class.getMethod("setDisplayOrientation", int.class);
rotateMethod.invoke(mCamera, 90);

詳細については、このリンクこれ
を参照してください。

于 2012-10-22T06:48:30.327 に答える