Работа с камерой в Android
Работа с камерой на телефоне всегда представляла для меня интерес. Как же это все устроено… И вот мне в руки попал телефон с Android’ом. Я не преминул возможностью попробовать разобраться в этом. Вот что получилось в итоге.
Рассмотрим небольшую программу, которая позволяет делать снимки.
Все операции проводятся с помощью класса Camera.
Необходимо завести переменную
и инициализировать ее
После завершения работы с камерой необходимо сделать
в противном случае камера останется заблокированной и недоступной для других приложений.
Для обычных приложений типа фотокамеры инициализацию лучше всего производить в onResume, а освобождение в onPause.
Обязательным условием при работе с камерой является создание окна предпросмотра (preview). Это окно должно являться объектом класса Surfaceи для отображения на экране подходит SurfaceView.
Объявим
Чтобы задать preview, необходимо вызвать метод setPreviewDisplay, параметром которого является объект класса SurfaceHolder.
Чтобы включить отображение preview, вызываем
Если этого не сделать, то камера не сможет делать снимки.
Собственно для того, чтобы сделать снимок, необходимо вызвать метод
С помощью параметров (кстати, любой из них может быть null) задаются обработчики разных событий:
- shutter — вызывается в момент получения изображения с матрицы
- raw — программе передаются для обработки raw данные (если поддерживается аппаратно)
- postview — программе передаются полностью обработанные данные (если поддерживается аппаратно)
- jpg — программе передается изображение в виде jpg. Здесь можно организовать запись изображения на карту памяти.
Вызов takePicture можно поместить непосредственно в обработчик onClick кнопки — в этом случае фотографирование произойдет сразу после нажатия на нее, но можно и воспользоваться предварительной автофокусировкой.
В этом случае задается обработчик Camera.AutoFocusCallback, в котором необходимо реализовать метод
Тогда после вызова в обработчике нажатия на кнопку camera.autoFocus(), однократно будет вызван обработчик, в котором мы уже и примем решение об удачной фокусировке и необходимости сделать снимок.
Для работы с SurfaceHolder можно задать SurfaceHolder.Callback
surfaceHolder.addCallback();
В этом случае необходимо реализовать методы
C помощью них приложению будет сообщаться о том, что Surface успешно создано, если оно изменено или то, что оно удалено.
Размер нашего preview можно менять в процессе выполнения программы:
Для приложения камеры удобнее всего сразу задать расположение экрана как
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
В противном случае нам придется, например, в surfaceCreated проверять расположение экрана и поворачивать preview с помощью, например, camera.setDisplayOrientation(0) .
Это не очень удобно, потому что поворот экрана занимает какое-то время. В этот момент происходит вызов onPause и onResume, пересоздается Surface.
Также имеется возможность объявить обработчик Camera.PreviewCallback, с помощью которого путем реализации метода
можно получать и обрабатывать каждый кадр, отображаемый в preview.
И последний важный момент. Чаще всего получается так, что отношение сторон SurfaceView отличается от отношения сторон в preview камеры. Поэтому для того, чтобы избежать искажений изображения на экране, необходимо подкорректировать размер отображаемого окна предпросмотра.
Чуть не забыл. В манифест необходимо добавить permission
MainScreen.java
main.xml
AndroidManifest.xml
Программа отлаживалась и тестировалась на телефоне LG Optimus One P500.
При написании использовались следующие источники информации:
Источник
Путеводитель по камерам для Android
Этот путеводитель завершает серию обзоров приложений, связанных с просмотром, обработкой и съемкой фото. В прошлый раз речь шла о редакторах, сегодня попробуем найти замену стандартной камеры Android. Контрольный список для выбранных участников выглядит следующим образом:
- Режимы съемки, возможность записи видео
- Наличие эффектов
- Возможности редактора, при его наличии
- Форматы сохранения, экспорт в интернет
Основные участники обзора:
- Camera MX
- ProCapture camera
- Camera FV-5
- Camera360 Ultimate
Также будут упомянуты приложения:
- Candy Camera — Selfie Selfies
- Retrica
- Line camera — Selfie & Collage
- GIF Camera
- Open Camera
- Cymera — Photoeditor & Camera
- Little Photo
Camera MX
Camera MX позволяет снимать фото и видео, использовать в процессе эффекты в реальном времени, редактировать и выкладывать результаты в облако и социальные сети. Приложение доступно для ОС Android 2.3 и выше на русском языке.
В Camera MX нет дополнительных режимов съемки фото и видео, кроме «как есть». На верхней панели приложения — переключатель для вспышки и таймер для фронтальной и задней камер. Можно использовать клавиши громкости для управления. В списке левой панели (FX) доступны эффекты, наложения и рамки.
В Camera MX эффекты применяются не только в реальном времени, но и после захвата на камеру. Всего на выбор около 20 эффектов: HDR, TiltShift & Little Planet, Vintage, Lomo, Color Splash, Pop Art, Black & White, Sepia и другие.
В настройках камеры есть несколько интересных опций для оптимизации — в том числе и для платформы Android 4.3 и выше, поэтому можно распределить ресурсы оптимально. Нельзя, однако, не отметить, что при съемке видео начинаются неизбежные зависания, в то время как фото можно снимать и со включенными эффектами.
Кроме собственно камеры, в состав Camera MX входит функциональный редактор. С его помощью можно применять стандартные операции к фото и видео: автонастройка и баланс белого, яркость, контраст, насыщенность, поворот по часовой стрелке и т. д., — вплоть до обрезки видео после съемки. Из снимков можно создать полноценное слайдшоу с аудиодорожкой, предусмотрено добавление эффектов, оверлеев и границ на имеющееся изображение, добавление текста.
Полученные снимки сохраняются в изначальном формате, для JPG можно указать качество. Камера снимает фото в соотношении 16:9, даже если официально камерой оно не поддерживается.
Возможно сохранение файлов в облако (на стартовой странице приложения есть соответствующие разделы), публикация на Facebook, Flickr, Tumblr и Twitter, Instagram. При сохранении снимка информация о месторасположении (GPS) будет включена в файл — что для инстаграмов будет не лишним.
Резюме. В Camera MX следует отметить несколько интересных особенностей. Во-первых, настройка качества JPG и оптимизации устройства. Во-вторых, возможность беспрепятственного хранения данных в облаке. В-третьих, удобный и функциональный редактор, позволяющий вносить изменения уже после захвата изображения или видео.
ProCapture camera
ProCapture расширяет возможности стандартной камеры, добавляя ряд интересных функций съемки. Собственного редактора здесь нет, хотя и есть минимальный набор для постобработки фото. Существует две редакции ProCapture — платная и бесплатная. Платная версия позволяет сохранять снимки в более высоком разрешении, использовать функцию выборочной фокусировки и прочее. В состав приложения также не входит видеокамера, снять ролик можно только через внешнее приложение.
В настройках камеры, на главном экране, можно указать режим фокусировки, включить запись местоположения, гистограмму, сетку или спираль фибоначчи.
Спираль фибоначчи — ассиметричная сетка, которая удобна при фокусировке. Также, как и стандартная композиционная сетка, она накладывается поверх изображения. Эти инструменты, соответственно, дополняются пользовательской фокусировкой и гистограммой.
Далее идут: корректировка экспозиции, баланс белого, цветовые эффекты — они накладываются в реальном времени. Также в наличии множество режимов съемки, включая ночной, спортивный и др. — порядка двух десятков на выбор. Соседний раздел ProCapture также относится к режимам съемки — можно настроить съемку по таймеру, включить подавление шума, снять широкоформатное фото или панораму. Наиболее интересен в данном разделе режим шумоподавления: можно взять два снимка и скомбинировать их в один, тем самым улучшив качество результата.
Режим панорамы и расширенного снимка, по своей сути и скорости обработки, аналогичны возможностям стандартной камеры.
При сохранении фото, пользователь может указать соотношение сторон, размер и качество фото, формат сохранения — исходный.
Резюме. Функции ProCapture акцентированы на создании правильной картинки. Это делается за счет тонкой настройки камеры: устанавливается необходимая фокусировка, режим срабатывания «затвора» и т. д. Преобразования после съемки, в данном случае, второстепенны.
Camera FV-5
Особенностью Camera FV-5 является полноценный контроль при создании снимка. Видоискатель по своему устройству слегка приближен к «зеркалке» (DSLR). Эффекты и редактор здесь не предусмотрены.
На видоискателе отображается гистограмма (RGB) и сетка, причем и то, и другое детально настраивается: можно включить живую гистограмму, изменить стиль сетки и т. п.
Пользователь может гибко управлять выдержкой, экспозицией, фокусировкой в реальном времени. На левой панели представлены следующие параметры: баланс белого, режим фокусировки, чувствительность сенсора (ISO), компенсация экспозиции.
На верхней панели — утилиты съемки: брекетинг экспозиции, интервалометр, автопуск, стабилизатор, серийная съемка.
О некоторых параметрах — чуть подробнее. Скорость затвора указывается от 1/80000 до 2″, в зависимости от устройства. Поддерживается длинная выдержка, что позволяет снимать в ночном режиме и не только. Фокусировка работает в следующих режимах: автофокус, режим макро, резкость при наведении, ручное управление фокусом, фиксация фокуса.
Из дополнительных опций, также немаловажных при съемке — громкость звуков камеры, поведения камеры при фокусировке, клавиши управления.
Camera FV-5 работает с различными форматами: JPEG, RAW (16 бит) DNG формате, lossless PNG. Формат сохранения определяется в главных настройках. Для фотографий с большой выдержкой его можно указать отдельно.
Резюме. Camera FV-5, как и ProCapture, предоставляет полный контроль при съемке. Опять же, здесь отсутствует редактор и какие-либо украшения, эффекты, зато детально регулируются настройки экспозиции, выдержка, фокусировка, есть дополнительные инструменты. Поддерживается несколько форматов сохранения — что, на самом деле, редкость для подобных приложений.
Camera360 Ultimate
Camera360 Ultimate — еще одно широко известное приложение для съемки фото и видео на Android. Доступно для ОС Android 2.3 и выше, русскоязычной версии в наличии нет.
Вначале несколько слов о режимах съемки. Их более десятка — селфи, с эффектами, постер, «смешная» камера, tilt-shift, аудио- и видео- режимы и др. Из имеющихся на экране опций — вспышка, таймер и съемка при тапе. Дополнительно, в настройках приложения можно включить сетку, просмотр в реальном времени, включить/отключить звук и прочее.
В сумме, более 200 фильтров с возможностью расширения списка, приобрести дополнения можно на сайте Camera360. Если активирован просмотр в реальном времени, все изменения отображаются через видоискатель, однако включение данной опции приводит к заметному снижению скорости обновления экрана.
В состав Camera360 входят базовые инструменты для редактирования: кадрирование, поворот, размытие, текстура, настройка цвета и прочее. Функции распознавания лица — пожалуй, главная особенность редактора, что делает камеру подходящей для селфи и портретных фото. После съемки фото анализируется, определяется форма лица, после чего можно провести корректировку. Из инструментов можно отметить сглаживание кожи, изменение формы лица и глаз.
Облако в Camera360 предоставляется бесплатно. Фотографии можно загружать в защищенные альбомы с возможностью синхронизации. Также в облаке представлены функции редактирования и управления файлами, получить доступ к загруженным фото можно по адресу cloud.camera360.com. Говоря о сетевых возможностях камеры, нужно отметить быструю публикацию в социальных сервисах Facebook, Flickr, Instagram и Twitter.
При сохранении фото, указывается соотношение сторон (16:9, 4:3, 1:1) и разрешение снимка. При необходимости, в файл может быть записана GPS- и временная отметка.
Резюме. Безусловно, Camera360 не может соревноваться с функциональными приложениями в плане настройки экспозиции, ISO и прочих параметров съемки. Задачи у этой камеры другие — создание селфи, применение быстрых эффектов. Редактор, в первую очередь, будет полезен при обработке портретов на мобильном устройстве. Дополнительно, в Camera360 стоит выделить две особенности: облачное хранение и управление фотоальбомами.
Сравнительная таблица
Приложение | Camera MX | ProCapture camera | Camera FV-5 | Camera360 Ultimate |
Разработчик | Appic Labs Corp. | NEast Studios | FGAE | PinGuo Inc. |
Цена полной версии | бесплатно | $3,97 | $3,55 | бесплатно |
Русская локализация | + | + (машинный перевод) | + | − |
Версия Android | 2.3+ | 2.2+ | 2.2+ | 2.3+ |
Съемка видео | + | − | − | + |
Эффекты | + | + | − | + |
Графический редактор | + | − | − | + |
Хранение в облаке | + | − | − | + |
Публикация в социальных сетях | + | + | + | + |
Заслуживают упоминания
Candy Camera — Selfie Selfies
Candy Camera — простая по функциональности камера. Кнопок управления на главном экране немного: включение/отключение вспышки, наложение сетки, настройка таймера и активация съемки при касании по экрану. Эффекты делятся на две категории — селфи и обычные и, в своем большинстве, придают фотографии «ванильный» оттенок.
На то, что Candy Camera подойдет для селфи-фото, указывают не только эффекты, но и корректировочные инструменты редактора. В частности, имеется фильтр для сглаживания кожи — он поможет скрыть индивидуальные недостатки и различные артефакты после съемки на камеру. Функции коррекции следующие: отбеливание, удаление пятен, мейкап. Среди инструментов постобработки — настройка яркости, контраста, насыщенности и разрешения, кадрирование и поворот, мозаика, ломо-эффекты и размытие.
Retrica
В камере Retrica практически нет настроек, ее нельзя оптимизировать — при том, что работает приложение небыстро. И все же, программа ценна своими эффектами. Их порядка сотни, применяются они в реальном времени.
Из основных эффектов можно отметить размытие, виньетирование и коллаж. Коллаж создается непосредственно при съемке, предварительно устанавливается временной интервал. В результате, не нужно обращаться к отдельному редактору, коллаж сразу же можно сохранить в файл, оперативно выложить в Сеть.
Другие полезные функции Retrica: наложение водяного знака и/или логотипа, добавление геометок и установка таймера при съемке.
Line camera — Selfie & Collage
Аналогично Candy Camera, Line camera будет полезна функциями коррекции. Инструментарий редактора позволяет «разглаживать» кожу, осветлять определенные участки на фото, устранять темные круги под глазами, изменять размер глаз, улучшать детализацию.
Line camera включает в себя несколько вспомогательных функций: тихий режим, таймер, сетка, съемка при нажатии по экрану. Соотношение сторон можно указать самостоятельно: 1:1 или 3:4.
Instagram, сервис для публикации фото и видео не нуждается в представлении. Одноименное приложение для Android позволяет удобно интегрировать камеру устройства с данной службой.
На первый взгляд, камера в «Инстаграме» скромна: на экран вынесена кнопка съемки, наложение сетки композиции, вспышка и переключение камеры с фронтальной на внутреннюю. По соседству можно обнаружить около трех десятков фильтров для последующей обработки материала (приложение не поддерживает эффекты в реальном времени).
Удобно то, что фильтры можно упорядочить через настройки, отключив в списке ненужные. Помимо фильтров, редактор содержит базовые инструменты: управление яркостью, контрастом, насыщенностью, резкость, тени, затемнение краев и др. — то есть, полный набор возможностей для создания инстаграма.
Снятые изображения и ролики можно загрузить непосредственно на сервис (опционально: Facebook, Twitter, Flickr, Tumblr и Foursquare), добавить в ленту, делиться с друзьями, прокомментировать.
GIF Camera
На фоне других камер для Android, GIF Camera несколько отличается. Нарезка, снятая на эту камеру, компилируется в анимированный gif-файл. Причем это единственно возможный формат на экспорт. При сохранении можно указать частоту кадров (до 20 в секунду), выставить карды в обратном порядке (реверсировать). Как вариант, несложно «склеить» gif-ролик из локальных фото, выбрав из галереи необходимые.
Вкратце об остальных особенностях GIF Camera. Есть встроенные альбомы — с примерами и записями пользователя. Программа содержит рекламу, но при этом функциональность не ограничена.
Open Camera
Open Camera отличается информативным и настраиваемым видоискателем. При съемке можно проконтролировать угол и направление камеры, формат сохранения будущего снимка. Также на экране отображается время и заряд батареи.
Второй важный момент. В пользователя Open Camera — полный набор опций сохранения как для фото (формат, качество JPG, разрешение), так и для видео (битрейт, частота кадров, длительность видео, наличие аудио и до.). В сохраняемый файл можно включать геометки, дату и время.
Другие удобства, доступные при съемке фото в приложении Open Camera:
- управление вспышкой (можно включить беззвучный режим)
- настройки освещения, цвета, баланса, ISO и экспозиции
- настройка композиционной сетки
- выбор режима фокусировки (макро и пользовательский фокус, т. е., при касании)
- автостабилизация изображения.
Cymera — Photoeditor & Camera
Cymera — универсальное решение: одновременно это и приложение для обмена фотографиями, и камера, и редактор изображений.
На верхней панели видоискателя можно управлять размытием, выбрать режим съемки (выбрав таймер, съемку касанием и стабилизацию); на нижней панели — управление зумом. Кроме того, можно включить сетку композиции и бесшумный режим съемки.
Одна из отличительных особенностей Cymera — возможность применения линз с различными эффектами. Линзы имитируют «аналоговые» эффекты и не только: пленка, коллаж, рыбий глаз и прочее. Cymera поддерживает Bluetooth-монопады и, в целом, отлично подходит для создания селфи.
После захвата фото отправляется в редактор, где доступно ретуширование фотографий: увеличение, очистка пятен, «вытягивание» определенных участков кожи. Возможны декоративные элементы (аннотации, рамки, фоны), фильтры (более 100), создание коллажей.
Что касается онлайн-возможностей, сюда входят создание приватных альбомов и публикация фотографий в сети.
Little Photo
Little Photo — небольшая камера со встроенным редактором и возможностью добавления винтажных эффектов. Доступно около 70 инструментов и фильтров — это, пожалуй, основное, что есть в приложении. Интересных опций практически нет, разве что при наложении того или иного фильтра можно указать интенсивность.
Little Photo отличается минималистичным интерфейсом. На экране — только кнопки управления вспышкой и камерой, почти отсутствует графическое оформление. Приложение не требовательно к ресурсам, в главных настройках можно указать исходное разрешение для снимков (low rec camera) на случай системных ошибок.
Источник