私のアプリケーションでは、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モデルを使用しています...誰でも助けてください.....