Категории:

  • Программирование


  • Изобразительное искусство


  • Программирование встраиваемых систем


  • Компьютерная графика


  • WEB Разработка


  • Музыка


  • Инженерия


  • iVARIOUS


  • Mobil App


  • Android. Камера. Android.hardware.camera2

    С появлением Android API >21 интерфейс работы с камерой принципиально изменился. В основном причина - совершенствование техники и аппаратного обеспечения которое позволяет дать разработчикам гораздо больше возможностей. Первое что нужно понять - принцип работы функций обратного вызова, которые вызываются не программой, а самой Операционной Системой Android после наступления некоторого события (например - камера готова к использованию или кадр готов к чтению). Все остальное можно понять с краткого описания в документации и примера приложения которое просто открывает камеру, без перегрузки кода пока лишними элементами типа - кнопок, сохранения кадров и т.п. Для начала нужно разобрать минимум действий для запуска камеры.
    Пакет Android.hardware.camera2 предоставляет интерфейс для разных устройств-камер, подключенных к Android. Он заменяет устаревший класс Camera. Классы этого пакета создают потоковый интерфейс, который принимает входные данные запросов для захвата одного кадра, захвата одного изображения с каждого запроса, а затем выводит этот результат, плюс - набор буферов вывода изображений. Запросы обрабатываются таким образом, что несколько запросов может находиться в процессе сразу. Поскольку устройство камеры представляет собой поток из нескольких этапов, имея несколько запросов в одновременно требуется поддерживать полный фреймрейт на большинстве устройств Android.

    Ниже перечислены некоторые классы Сamera2:

    Типы нужных запросов, а также доступные на устройстве камеры определены в классе CameraManager.

    CameraDevices предоставляет набор статической информации описывающий аппаратное устройство, доступные параметры и параметры вывода для данного устройства. Эта информация предоставляется через объект CameraCharacteristics, и доступна через getCameraCharacteristics(String).

    Для того, чтобы захватить кадр или поток изображений с камеры, приложение должно сначала создать сеанс захвата с набором выходных Surfaces для использования вместе с устройством камеры, с createCaptureSession (List, CameraCaptureSession.StateCallback, Handler). Каждый Surfaces должен быть предварительно сконфигурирован с соответствующим размером и форматом (если это применимо), чтобы соответствовать размерам и форматам, доступные для данной модели камеры. Целевой Surfaces может быть получен из различных классов: SurfaceView, SurfaceTexture через Surface(SurfaceTexture), MediaCodec, MediaRecorder, Allocation и ImageReader.

    Как правило, предварительный просмотр изображений отправляется на SurfaceView или TextureView (через его SurfaceTexture). Захват изображений JPEG или RAW буфера для DngCreator может быть произведен ImageReader с форматами JPEG и RAW_SENSOR. Применение управляемой обработки данных камеры в Renderscript, OpenGL ES, или непосредственно в управляемом машинном коде лучше всего делать с типом YUV, SurfaceTexture и ImageReader с форматом YUV_420_888, соответственно.

    После этого приложение должно создать CaptureRequest, который определяет все необходимые параметры для захвата одного изображения. Запрос также перечисляет, какие из сконфигурированных выходных Surfaces следует использовать для этого захвата. CameraDevice имеет собственный метод для создания запроса постройщика(builder) для данного варианта использования, который оптимизирован для работы приложения в Android устройстве.



    Читайте больше в категории: Mobil App

    2017-01-12 00:09:52



    Другие статьи:

    STM32. Мигание светодиодов

    Инженерия

    Ужгородський Кафедральний Собор в 19 ст. ( 3D )

    Амбидекстрия. Развиваем обе руки

    Maya. Insert Edge Loop Tool и Lattice

    Линии и пятна

    Некоторые особенности разработки. Заключение

    JavaScript. innerHTML

    STM32. Регистры портов GPIO

    HTML. Таблицы