Хотелось бы, чтобы ориентация камеры не менялась при повороте телефона, чтобы камера могла делать вертикальное изображение в любой ориентации. В настоящее время изображение поворачивается неправильно во всех ориентациях, кроме одной. Протестировано на HTC Incredible под управлением 2.2:
- В портретном режиме изображение поворачивается на 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();
}
Поскольку я хотел бы, чтобы приложение было совместимо с любым уровнем API, равным или превышающим 4, для обеспечения максимальной пользовательской базы, я бы предпочел, чтобы в ответах не использовалось ничего конкретного для более высоких уровней API. Спасибо!