Страница 1 из 1

Шаг 6. Камера

СообщениеДобавлено: 26 ноя 2012, 20:25
EgorovAD MEPhI
Система Android позволяет приложениям делать не только фотоснимки, но и записывать видео. Рассмотрим несколько общих принципов, как это можно сделать.

    • Самый простой метод – использование стандартных приложений. Стандартные приложения вызываются посредством интента и делают всю основную работу разработчика. Это очень удобно, если нужно просто сделать фото или записать видео в файл, так как требует от минимум кода и лишает возможности сделать ошибки. Причем этот метод позволяет настроить качество видео/фото и указать файл для записи.
    • Использование класса android.hardware.Camera позво-лияет задать параметры снятия изображения, фото и получать кадры, которые впоследствии можно будет закодировать в один из видео форматов, но потребует от разработчика достаточно много кода и будет достаточно сложен.
    • Для записи видео некий компромисс между «сырыми» данными от камеры и записи видео через стандартное приложение предоставляет класс android.media.MediaRecorder. В отличие от записи видео «через интент», здесь можно не пользоваться «чужими» приложениями, а сделать свой интерфейс, кроме того, здесь доступны некоторые расширенные возможности настройки видеозаписи, такие как кодирование видео в определенный формат.
    • Для превью можно использовать класс android.view.SurfaceView. Этот класс может отображать живую картинку, полученную с камеры (класс android.hardware.Camera), что очень удобно для пользователя.

Рассмотрим пример использования стандартного приложения для получения фото.

Код: выделить все
final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 100;
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Uri fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);


В коде создается интент с действием ACTION_IMAGE_CAPTURE, которое соответствует захвату изображения. Создается файл, в который изображение будет сохранено, и его имя записывается в интент, запускается стандартное приложение.

Для использования камеры будет нужно разрешение CAMERA. Если записываете аудио вместе с видео, то понадобится и RECORD_AUDIO. Скорее всего, не обойтись и без WRITE_EXTERNAL_STORAGE, ведь такой объем данных лучше всего хранить на SD-карте. Если ваше приложение добавляет к изображениям информацию о местоположении с GPS, то необходимо прописать в манифесте разрешение ACCESS_FINE_LOCATION.