我希望手机旋转时相机的方向不会改变,从而允许相机在任何方向拍摄直立照片。目前,除了一个方向,图片在所有方向上都旋转不正确。在运行 2.2 的 HTC Incredible 上测试:
- 纵向模式使图像顺时针旋转 90 度。
- 从纵向逆时针旋转的设备会产生旋转 180 度的图像。
- 从纵向顺时针旋转的设备会生成方向正确的图像。
以下是相机实现的相关代码:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.camera);
// Set up camera's SurfaceView and SurfaceHolder
surfaceView = (SurfaceView) findViewById(R.id.camera_surface);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
Camera.Parameters p = camera.getParameters();
p.setPreviewSize(width,height);
}
public void surfaceCreated(SurfaceHolder holder) {
camera = Camera.open();
try {
camera.setPreviewDisplay(surfaceHolder);
} catch (IOException e) {
camera.release();
}
camera.startPreview();
}
由于我希望应用程序与任何等于或高于 4 的 API 级别兼容,以最大限度地扩大用户群,我希望答案不使用任何特定于更高 API 级别的东西。谢谢!