|
maxpro |
|
|
Сообщений: 171
| http://habrahabr.ru/post/112272/
Все операции проводятся с помощью класса Camera. Необходимо завести переменную Camera camera; и инициализировать ее camera = Camera.open(); После завершения работы с камерой необходимо сделать camera.release(); в противном случае камера останется заблокированной и недоступной для других приложений.
Для обычных приложений типа фотокамеры инициализацию лучше всего производить в onResume, а освобождение в onPause.
Обязательным условием при работе с камерой является создание окна предпросмотра (preview). Это окно должно являться объектом классаSurfaceи для отображения на экране подходит SurfaceView. Объявим SurfaceView preview; Чтобы задать preview, необходимо вызвать метод setPreviewDisplay, параметром которого является объект класса SurfaceHolder. SurfaceHolder surfaceHolder;surfaceHolder = preview.getHolder(); camera.setPreviewDisplay(surfaceHolder);
Чтобы включить отображение preview, вызываем camera.startPreview(); Если этого не сделать, то камера не сможет делать снимки.
Собственно для того, чтобы сделать снимок, необходимо вызвать метод void takePicture(Camera.ShutterCalback shutter, Camera.PictureCallback raw, Camera.PictureCallback postview, Camera.PictureCallback jpg); С помощью параметров (кстати, любой из них может быть null) задаются обработчики разных событий: - shutter — вызывается в момент получения изображения с матрицы
- raw — программе передаются для обработки raw данные (если поддерживается аппаратно)
- postview — программе передаются полностью обработанные данные (если поддерживается аппаратно)
- jpg — программе передается изображение в виде jpg. Здесь можно организовать запись изображения на карту памяти.
|
| |
| |
|
|