Камера 2 api что это

Камера 2 api что это

Camera2 API Probe
версия: 0.9.23

Последнее обновление программы в шапке: 19.04.2021

Камера 2 api что это. Смотреть фото Камера 2 api что это. Смотреть картинку Камера 2 api что это. Картинка про Камера 2 api что это. Фото Камера 2 api что это

Камера 2 api что это. Смотреть фото Камера 2 api что это. Смотреть картинку Камера 2 api что это. Картинка про Камера 2 api что это. Фото Камера 2 api что это

Камера 2 api что это. Смотреть фото Камера 2 api что это. Смотреть картинку Камера 2 api что это. Картинка про Камера 2 api что это. Фото Камера 2 api что это

Камера 2 api что это. Смотреть фото Камера 2 api что это. Смотреть картинку Камера 2 api что это. Картинка про Камера 2 api что это. Фото Камера 2 api что это

Камера 2 api что это. Смотреть фото Камера 2 api что это. Смотреть картинку Камера 2 api что это. Картинка про Камера 2 api что это. Фото Камера 2 api что это

Краткое описание:
Проверка на совместимость смартфона с Camera2 API

Описание:
Проверка на совместимость смартфона с Camera2 API

Требуется Android: 5.0 и выше
Русский интерфейс: Нет

версия: 0.9.15 (antisplit) Camera2 API Probe (Пост gar_alex #94443843)
версия: 0.9.11 Камера 2 api что это. Смотреть фото Камера 2 api что это. Смотреть картинку Камера 2 api что это. Картинка про Камера 2 api что это. Фото Камера 2 api что этоcom.airbeat.device.inspector_0.9.11-17_minAPI21(nodpi).apk ( 1.01 МБ )

У меня есть сомнения в работоспособности apk-файла в шапке, поэтому выкладываю свой вариант

Версия 0.9.15
1. Performance improvement.
2. A few bug fixes.
Камера 2 api что это. Смотреть фото Камера 2 api что это. Смотреть картинку Камера 2 api что это. Картинка про Камера 2 api что это. Фото Камера 2 api что этоCamera2 Probe_v0.9.15(21)_antisplit.apk ( 1.56 МБ )

Тип: Модификация
Версия: 0.9.15. build 21
Краткое описание: Mod
Основано на версии из GP.
Языки: en, ru, uk.
Графика: pngquant, xxhdpi.
Другое: zipalign, удалены ресиверы, google analytics, лишние файлы.

Камера 2 api что это. Смотреть фото Камера 2 api что это. Смотреть картинку Камера 2 api что это. Картинка про Камера 2 api что это. Фото Камера 2 api что это

Я бы ещё адрес сайта из названия файла убрал.

Камера 2 api что это. Смотреть фото Камера 2 api что это. Смотреть картинку Камера 2 api что это. Картинка про Камера 2 api что это. Фото Камера 2 api что это

Камера 2 api что это. Смотреть фото Камера 2 api что это. Смотреть картинку Камера 2 api что это. Картинка про Камера 2 api что это. Фото Камера 2 api что это

Камера 2 api что это. Смотреть фото Камера 2 api что это. Смотреть картинку Камера 2 api что это. Картинка про Камера 2 api что это. Фото Камера 2 api что это

Камера 2 api что это. Смотреть фото Камера 2 api что это. Смотреть картинку Камера 2 api что это. Картинка про Камера 2 api что это. Фото Камера 2 api что это

Камера 2 api что это. Смотреть фото Камера 2 api что это. Смотреть картинку Камера 2 api что это. Картинка про Камера 2 api что это. Фото Камера 2 api что это DeD_C_БyXлОм, Legacy – поддержка устаревшего драйвера API Camera 1. Установка Google Camera на такой телефон возможна, но бессмысленна, так как не дает никаких преимуществ.
Limited – ограниченная поддержка драйвера Camera2 API, часть функций недоступна. Установить Google Camera можно, но не факт, что она даст какие-то преимущества.
Full – полная поддержка драйвера Camera2 API, установка Google Camera принесет заметные преимущества;
Level-3 – полная поддержка драйвера с Camera2 AP расширенными возможностями. Установка Google Camera на телефон строго обязательна!
Источник: https://blog.tehnomaks…19/08/16/googlecamera/

Источник

Русские Блоги

Android Camera2 API и фотографии и процессы записи

Камера 2 api что это. Смотреть фото Камера 2 api что это. Смотреть картинку Камера 2 api что это. Картинка про Камера 2 api что это. Фото Камера 2 api что это

Введение

Android 5.0 Запускает новую камеру камеры 2 API для замены предыдущей API камеры.

API Camera2 не только улучшает производительность камеры системы Android, но также поддерживает вывод сырой фотографии, но также устанавливает режим фокусировки камеры, режим экспозиции, затвора и т. Д.

Основной класс API в Camera2

Класс камераагера : Класс управления камерой, используемый для обнаружения, откройте системную камеру, пройти getCameraCharacteristics(cameraId) Вы можете получить характеристики камеры.

Класс камеркактеристики: Характеристики камеры, например, поддерживается, поддерживается ли Autofocus, поддерживается ли Zoom, и поддерживается ряд характеристик фонариков.

Класс Камерадевице: Камера Оборудование, похожее на ранний класс камеры.

Класс CameracaptureSess.: Используется для создания предварительного просмотра, класс сеанса, который фотографирует. Через это setRepeatingRequest() Интерфейс управления для управления методом через него capture() Метод контролировать фото действие или видео движения.

Класс Camerarequest: Заглаженный запрос, вы можете установить ряд параметров для управления предварительным просмотром и параметрами камеры, такие как режим фокуса, режим экспозиции, параметры зума и многое другое.

Далее, дальнейшее введение, различные общие классы и абстракции в API Camera2.

Класс камераагера

Характерный объект камеры может быть получен вышеуказанным кодом, например: передняя и задняя камера, разрешение и тому подобное.

Класс камеркактеристики

Следующие общие параметры

Sensor_orentation: получает направление камеры.

Flash_info_available: получает, поддерживается ли вспышка.

Scaler_available_max_digital_zoom: получить наибольшую цифровую ценность фокусировки, то есть Zoom max.

Lens_info_minimum_focus_distance: получите наименьшее расстояние фокуса, значения, полученные на некоторых мобильных телефонах, являются NULL или 0.0. Большинство передних камер имеют фиксированные фокусные расстояния и не могут быть отрегулированы.

Info_supported_hardware_level: Получить уровень камеры поддерживает определенные функции.

Несколько экстентов поддерживаются следующими мобильными телефонами:

Info_supported_hardware_lever_full: Общая аппаратная поддержка, разрешить ручное управление Full HD-камерой, поддержать режим непрерывной съемки и другие новые функции.

Info_supported_hardware_level_limited: ограниченная поддержка, это требует отдельного запроса.

Info_supported_hardware_level_lacy: Все устройства будут поддерживать, то есть характеристики, поддерживаемые старыми API камеры, являются последовательными.

Класс Камерадевице

Камерадевице reateCaptureRequest(int templateType) Методы CaptureRequest.Builder создан.

Параметр Templatetype имеет следующее:

Template_preview: предварительный просмотр

Template_record: стрельба видео

Template_video_snapshot: создать запрос на запись видео

Template_zero_shutter_lag: создать запрос на нулевую задержку затвора. Максимизируйте качество изображения, не влияя на частоту кадров предварительного просмотра.

Template_manual: Создание базового запроса захвата, все автоматическое управление в этом запросе отключено (автоматическая экспозиция, автоматический баланс белого, автоматический фокус).

Cameradevice.StateCallback Абстрактный класс

Этот абстрактный класс используется для обратных вызовов в камере Cemeradevice.

CameracaptureSions.StateCallback Абстрактный класс

Этот абстрактный класс используется для обратных вызовов в состоянии в процессе сеанса.

Далее следует описать этапы фотографического и записи процесса.

руководство по эксплуатации:

1. Откройте камеру в указанном направлении

Воплотить объект Cameramanager сначала через этот объект getCameraIdList() Получите несколько параметров камеры столбца.

Камера в указанном направлении получается путем цикла, такая как задняя камера, или тому подобное.

Конечно, в реальном развитии также необходимо получить характеристики, поддерживаемые камерой (Flash, Zoom Focusing, ручной фокусировкой и т. Д.), и устанавливают параметры камеры (например, размер предварительного просмотра).

2. Создайте интерфейс предварительного просмотра

Создайте объект Cameradevice.StateCallback и включите камеру. Когда камера включена, появится интерфейс предварительного просмотра камеры.

Cameradevice.StateCallback Объект включен в камераманагеру openCamera(mCameraId, stateCallback, workThreadManager.getBackgroundHandler()) Второй параметр используется для прослушивания состояния камеры.

После создания интерфейса вам необходимо начать обновление следующего.

3. Во время интерфейса предварительного просмотра необходимо обновить интерфейс интерфейса.

Предварительный просмотр камеры реализован с использованием TextureView. Создайте камеракапсись, через CaptureRequest, используемый для предварительного просмотра интерфейса к камеркаптуссии.

Этот мультиплексированный CaptureRequest будет повторять интерфейс предварительного просмотра, если вы не запускаете фотографирование действий или записывающих действий.

Далее, подождите, пока пользователь нажимает кнопку камеры или кнопку видео, чтобы сделать действие фото или видео действий.

4. Фотография фото

Сначала заблокировал фокус, предварительный просмотр индивидуальности интерфейса в камере, CaptreRequest. Тогда, аналогичным образом, вам нужно запустить предустановленную последовательность. Далее вы уже можете подготовить картину захвата. Создайте новый CaptreRequest и сделайте фотографию.

Сначала создайте объект imagereader и установите некоторые параметры столбца, такие как слушатель.

Далее настройте поверхность Imagereader в объект CaptureBuilder. captureBuilder.addTarget(imageReader.getSurface());

Наконец, когда фото завершено, обратный вызов в состоянии прослушивания:

Здесь используйте Rxjava + RxAndroid асинхронное общение, чтобы избежать слишком большого количества раздела обратного вызова.

5. Действие видео

Похоже на камеру, напишите видео данные в файлы диска, но также требуют реализации Mediarecorder класса операций.

Сначала создайте объект класса операций, установите некоторые параметры столбца:

Выходные данные интервалов в файл с видеозаписью.

Наконец, когда записанное видео завершено, остановите выход:

6. Восстановите до интерфейса предварительного просмотра

После завершения некоторых столбцов или записывающих действий возвращаются в интерфейс предварительного просмотра.

Конечно, существует также замкнутая операция камеры, а операция привязки к жизненному цикле активности, это больше не вводится.

Далее начните ввести, как разработать реальную камеру программы.

Источник

Как установить Google Camera Mod на любой телефон Android

Камеры для смартфонов прошли долгий путь за последние несколько лет, и даже бюджетные смартфоны в наши дни имеют довольно неплохие камеры.

Однако, если вы используете телефоны, отличные от Pixel 2 или Pixel 3, вы, очевидно, заметили, что качество изображения на других телефонах (даже флагманских) не такое хорошее.

К счастью, многое можно улучшить, просто используя приложение для камеры, отличное от стандартного, которое поставляется из коробки. Да, я говорю о моде Google Camera Mod, о котором довольно часто говорили, и он действительно вносит заметный вклад в качество изображения камеры смартфона.

Итак, если вам интересно, как установить GCam Mod на свой смартфон Android, мы предоставим вам это подробное руководство.

Подготовка

Прежде чем вы сможете установить GCam Mod на свой телефон, необходимо проверить пару вещей:

Что такое API Camera2?

Camera2 API — это платформа, которая позволяет разработчикам получать доступ к детализированным элементам управления камерой, таким как экспозиция, фокус или ISO, которые они могут затем использовать в своих сторонних приложениях в виде расширенных функций, чтобы предложить пользователям Android улучшенную съемку фотографий. опыт.

Этот API является преемником оригинального API камеры Android и использует модель конвейера, позволяя разработчикам получить прямой доступ к аппаратному обеспечению камеры.

Сторонние разработчики могут использовать Camera2 API для полного ручного управления датчиком, объективом и вспышкой вашего телефона, чтобы обеспечить лучшую частоту кадров (режим серийной съемки 30 кадров в секунду), поддержку захвата RAW, элементы управления HDR + и другие интеллектуальные функции.

Google Camera использует некоторые сложные алгоритмы и функции AI в своем приложении, чтобы делать потрясающие фотографии. Вот все элементы управления камерой, которые предлагает Camera2 API:

Камера 2 api что это. Смотреть фото Камера 2 api что это. Смотреть картинку Камера 2 api что это. Картинка про Камера 2 api что это. Фото Камера 2 api что это

Прошло довольно много времени с момента появления API Camera2, но не все производители телефонов, даже сегодня, внедрили то же самое на своих устройствах.

Многие флагманские смартфоны и смартфоны среднего класса теперь поставляются с API-интерфейсом Camera2, однако не обязательно, чтобы он был включен по умолчанию. Некоторые производители телефонов используют некоторые возможности Camera2 API, чтобы предлагать пользователям ручное управление, поддержку фильтров и другие полезные функции, но полная поддержка по-прежнему отсутствует на большом участке телефонов.

Если вам интересно, поддерживает ли ваш телефон Android API Camera2 или нет, то вот отличный способ проверить это.

Как проверить, поддерживает ли ваш телефон Camera2 API

Чтобы узнать, поддерживает ли какой-либо из ваших смартфонов Android API-интерфейс Camera2, вам просто нужно установить приложение Camera2 API Probe (бесплатно) из Play Store. Просто установите приложение и запустите его.

Камера 2 api что это. Смотреть фото Камера 2 api что это. Смотреть картинку Камера 2 api что это. Картинка про Камера 2 api что это. Фото Камера 2 api что это

Результаты Camera2 Probe для ZenFone Max Pro M1 (слева) и Nokia 7 Plus (справа)

Как вы можете видеть на скриншоте выше, приложение Camera2 API Probe отображает список «Уровень поддержки оборудования» для задней и передней камер с идентификатором камеры равным 0 и 1 соответственно. Он показывает информацию о возможностях Camera2 API, которые поддерживаются вашим смартфоном Android, и вот значение для каждого из уровней камеры:

Это означает, что ZenFone Max Pro M1 не включает поддержку API Camera2, и его необходимо будет включить перед установкой мода Google Camera, тогда как Nokia 7 Plus является «Level_3-совместимым», и приложение для мододированной камеры можно установить напрямую на этом смартфоне.

Как включить Camera2 API

Если на вашем телефоне включен Camera2 API, вы в значительной степени настроены. Однако, если ваш телефон не поддерживает API-интерфейс Camera2, не беспокойтесь, потому что вы можете включить API-интерфейс Camera2 самостоятельно, рутировав свое устройство и отредактировав файл «build.prop» на своем телефоне или используя Magisk для включения Camera2 API. Какой бы путь вы ни выбрали, зависит от вас, и мы объясним оба процесса здесь.

Замечания: Рутирование устройства Android не является очень сложной задачей, но оно очень зависит от устройства, поэтому здесь невозможно объяснить это подробно. Мы рекомендуем вам перейти к 4PDA и найти руководства по рутингу для вашего смартфона, чтобы получить подробное пошаговое руководство.

Источник

Поддерживает ли мой телефон поддержку Camera2 для Android? Узнай.

Android прошел долгий путь с точки зрения возможностей и функциональности. То, что начиналось как небольшая мечта с кучкой разработчиков, теперь превратилось в крупнейшую в мире мобильную операционную систему. Как и любой другой проект, вы не можете ожидать, что Android сможет развить все новейшие и передовые технологии и функции за один раз. Это скорее эволюция. Например, мы все помним старый добрый, мрачный дизайн, который Android пару лет назад качался в Ice Cream Sandwich. А потом появился изысканный и изощренный «Material Design».

Что такое Camera2 API?

Поддерживает ли мой телефон поддержку Camera2 для Android?

Чтобы быстро это проверить, вам необходимо загрузить и установить приложение Google Camera Store «Camera2 API Probe».

Как только приложение будет установлено, просто откройте приложение. Вам будет показана куча информации о поддержке Camera2 API на вашем устройстве.

Мы подробно рассмотрим ниже.

Приложение отображает много дополнительной информации о аппаратных средствах камеры, но нам нужен только первый раздел!

Поддержка API-интерфейса Camera2

Как вы можете видеть на изображении выше, общая аппаратная / программная информация телефона будет отображаться на самом верху. Мы можем пропустить это мимо. После этого будут два разных раздела: «Идентификатор камеры: 0» (представляет собой заднюю камеру) и «Идентификатор камеры: 1» (представляет собой фронтальную камеру).

В каждом из этих двух разделов будет несколько подкатегорий, указывающих возможности оборудования камеры, присутствующие в аппаратном обеспечении. Но все, что нам понадобится, это одна категория, которая говорит «Категория поддержки аппаратного уровня».

Камера 2 api что это. Смотреть фото Камера 2 api что это. Смотреть картинку Камера 2 api что это. Картинка про Камера 2 api что это. Фото Камера 2 api что это

Проще говоря, если вы видите Full или Level 3 зеленым цветом, значит, ваше устройство полностью поддерживает Camera2 API.

Не беспокойтесь, если ваше устройство не поддерживает Camera2 API из коробки, так как невозможно включить Camera2 API. Вы можете легко включить поддержку Camera2 API на вашем Android, используя Magisk Modules, но вам понадобится root. Теперь, когда порт камеры Google получает поддержку для множества новых устройств, Camera2 API получает много внимания!

Источник

ANdroid Camera2 API от чайника

Камера 2 api что это. Смотреть фото Камера 2 api что это. Смотреть картинку Камера 2 api что это. Картинка про Камера 2 api что это. Фото Камера 2 api что это

Не так давно я возился со своей роботележкой, пытаясь водрузить на нее ANDROID смартфон. Моей, то есть его задачей, было сделать тележку эволюционно продвинутой. Чтобы она, так сказать, чувствовала мир его сенсорами, смотрела его глазом (камерой), слышала микрофоном и ругалась по громкой связи. Ресурсов AVR, понятное дело, на это уже не хватало и поэтому бывший на телеге микроконтроллер переехал на уровень ниже, куда-то в район спинного мозга управлять моторчиками и разными безусловными рефлексами.

Но странное дело, когда я начал писать приложение для смартфона, нехорошая IDE ANDROID STUDIO стала постоянно зачеркивать мой код и называть его устаревшим.

Особенно, как вы видите, в тех частях, где я пытался работать с камерой. Это было очень обидно, потому что я прочитал в интернете и усвоил множество уроков работы с андроидом и камерой здесь, здесь, здесь и даже здесь. Там ничего не зачеркивалось. И называлось заурядно Camera API. Все там было просто и логично. Но Google упрямо толкал меня к какому-то Сamera2 API.

Я туда посмотрел и просто опупел от количества разных коллбэков, билдеров, хэндлеров и луперов на каждую строчку демонстрационного кода. Было совершенно непонятно с какой стороны к этому подступиться, если ты обычный любитель, а не android developer. Причем в сети даже на сегодня статей на тему Сamera2 API чуть, хотя вышло это обновление вроде как, аж четыре года назад. Но всё что я нашел, это статью в Хакере в 2016, пост в трех частях от украинских братьев того же года, двойной пост на Хабре в 2017 и статью Understanding Camera2 от японского мегагика Томоаки Имаи. И это я ещё имею в виду какую-то структурированную и оформленную информацию, а не раскиданные в интернете обрывки кода типа, «смотрите, как я могу» и простыни в стиле, «посмотрите код плиз, у меня ничего не работает».

А теперь, если вам всё ещё интересно зачем мне потребовалось пилить свой пост на эту тему
уже в 2019, то добро пожаловать под кат.

Собственно статья из Хакера мне понравилась тем, что дала хотя бы обзорное понимание того, на кой черт внедрили новую парадигму работы с камерой. Также стало понятно для чего нужны некоторые новые методы, которых не было в предыдущем API. Но написать работающую программу по этой статье было совершенно невозможно, поскольку авторы, видимо, как настоящие хакеры, приводили только лишь заглавия методов, ну может быть, ещё там пару строчек дополнительного кода. Но этого мне категорически не хватало.

Пост на Хабре был хорош, не спорю и я даже понял несколько первых абзацев, но на этом дело и встало, поскольку автор поста побеждал камеру при помощи RxJava2, что автоматически исключало меня из числа дальнейших читателей. Мне бы с ООП нормально разобраться, а тут какое-то реактивное программирование.

Статья японца была ещё лучше, пусть он и писал не на своем родном языке. Но Kotlin я тоже не знаю, хотя я, конечно, порадовался за отечественных разработчиков и оценил краткость его синтаксиса, в отличии от той JAVA-вермишели, которая была на странице разработчиков Google (кстати, с этой страницей, тоже было ясно, что мне там ясно мало чего).

Последней статьей, которая принесла мне практическую пользу, был пост из трех частей от братской Украины. Я даже что-то там запустил и что-то там увидел. Но к сожалению, к третьей части автор статьи очень сильно устал и начал также выдавать код обрывками, которые никак не складывались у меня в рабочее целое. Тем более, что в конце концов автор совсем расстроился, потому что у него получилось изображение не той цветовой палитры на которую он рассчитывал.

Камера 2 api что это. Смотреть фото Камера 2 api что это. Смотреть картинку Камера 2 api что это. Картинка про Камера 2 api что это. Фото Камера 2 api что это

Дескать, это от того, что версия Lollipop 5.0, а там баг. Надо вот обновить до Lollipop 5.1 и тогда всё будет хорошо. Но как-то пока не до этого. А ещё вредные хохлы пристегнули к статье JAVA SCRIPT, и при копировании кода мне в текст программы насыпалось дикое количество мусора. Ребята, ну нельзя же так… Пришлось специальный плагин в Firefox инсталлировать.

Поэтому мне пришлось подхватить упавшее знамя и довести дело до конца, что конечно, потребовало титанических умственных усилий. И поскольку как-то жалко было удовлетворяться всего лишь осознанием того, что рабочий результат получен, то мне захотелось поделиться им с такими же чайниками любителями. Причем, это далеко не конец истории. Мне всё ещё надо научиться передавать живое видео с камеры андроида на компьютер (роботележка должна развиваться, это закон эволюции) и не кусками, как я слепил, а плавненько. А там встают такие Монбланы препятствий в виде медиакодеков и прочего, что просто жесть жестянская.

Но с другой стороны, все дело может окончится полным разочарованием. И не потому что не удастся подняться на Монблан.

С месяц назад в сеть просочился слух о смартфонах Nokia с пятью основными камерами. Как к этому относиться? Интересный и многообещающий слух или очередная странная штука? Каким бы уникальным ни выглядел такой дизайн, Nokia уж точно не сможет стать пионером в области внедрения непривычного количества объективов и сенсоров в компактные устройства. Фотоаппарат Light L16 уже в 2015 году оснастили 16-ю объективами, и у компании, очевидно, имеется в работе новый прототип. Выше можно увидеть, как это потенциально может выглядеть.

После того, как в Huawei P20 Pro появилась тройная камера, переход к смартфону с пятью камерами уже не звучит так комично, как это могло бы быть еще пару лет назад. Впрочем, остается главный вопрос – а какой в этом смысл?
Что делать с таким количеством объективов?

Первое, что приходит на ум, это разнообразие типов сенсоров камер, доступных на современном рынке смартфонов, и возможность добавить еще. Зачем выбирать между широкоугольной, телефото, портретной с боке или монохромной съемкой, если можно получить все это в одном устройстве?

Будучи теоретически возможным, такой дизайн будет достаточно неуклюжим в использовании. ПО придется переключаться между режимами автоматически или предлагать сложный набор опций пользователю. Более того, разработка такого дизайна стоила бы очень дорого при всех сомнительных преимуществах такого решения. Каждая камера функционировала бы большей частью независимо, а покупатели вряд ли использовали бы какое-то большое число режимов. И непонятно, сколько они были бы готовы заплатить за такую функциональность. Так что камеры с несколькими модулями должны уметь больше, чтобы привлечь пользователя.

Huawei P20 Pro уже предлагает свою версию того, как несколько модулей камеры могут работать вместе, чтоб давать интересный результат. Речь о таких технологиях от Huawei, как Monochrome и Hybrid Zoom. Первая улучшает динамический диапазон стандартных кадров, объединяя данные обычного RGB и светочувствительного черно-белого сенсора. А Hybrid Zoom обещает и того больше: он объединяет данные с нескольких камер, чтобы повысить разрешение снимка для более качественного зума. В результате, в P20 Pro 8 MП сенсор телефото-объектива дает возможность снимать в разрешении 10 MП на 3x и 5x зуме.
Выше разрешение — больше гибкости

Первая камера Light L16 работала сходным образом, используя перископические зеркала, чтобы уместить модули камеры в компактный корпус. Камера брала данные с нескольких модулей на 28, 70 и 150 мм, в зависимости от уровня зума. В конечном итоге получался большой снимок на 52 МП, сделанный с 10 немного отличающихся ракурсов, доступных на уровне увеличения до 5x. Концепция новой модели, разработанной для смартфонов, работает с 5-9 объективами. Такой модуль камеры способен делать большие 64-мегапиксельные снимки.

Эта идея множественных снимков также добавляет преимуществ при съемке в условиях плохого освещения и в HDR за счет нескольких диафрагм. Высококачественный эффект глубины кадра также оказывается доступным благодаря одновременно программной эмуляции и использованию нескольких фокусных расстояний.

Light L16 принес разочарование, однако сама идея оказалась многообещающей. И следующее поколение с успехом может оказаться чем-то стоящим. Компания утверждает, что в конце года будет анонсирован смартфон, где будет установлено их новейшее решение с несколькими объективами.

Такую же идею можно проследить, обратившись к опыту Nokia в области внедрения нескольких камер, учитывая старую историю с инвестициями в Pelican Imaging в 2013 году. В отличие от Light, сенсор тут гораздо меньше. И даже при этом технология обещает очень похожие преимущества, в том числе программную смену фокуса, замера глубины и повышения размера итогового изображения. К сожалению, Tessera выкупила компанию в 2016, но сама идея могла и не покинуть умы инженеров Nokia.

Zeiss, нынешний партнер Nokia по фоточасти, имеет патент на переключаемый зум, но мы не слышали от них больше ничего о дизайне с несколькими объективами. Возможно, более многообещающим выглядит другой партнер Nokia, FIH Mobile. Эта компания принадлежит Foxconn, выпускает телефоны Nokia и также инвестировала в Light в 2015, дав ей лицензию на использование технологии.

И если вы думаете, что у утечки от Nokia и прототипа от Light есть нечто общее, это не совпадение. Связывает эти две компании Foxconn. Так будет ли смартфон от Nokia первым, где используется технология от Light?
Так это и есть будущее?

Сверхбольшое разрешение — не новая концепция.В 2014 году в Oppo Find 7 использовался сходный принцип, а Hybrid Zoom от Huawei позволил технологии работать с несколькими камерами. Исторически главной проблемой технологии были высокие требования производительности, качество алгоритма и энергопотребление. Но на стороне современных смартфонов более мощные процессоры обработки сигнала, энергоэффективные DSP чипы и даже улучшенные способности нейронных сетей, что постепенно снижает значимость проблемы.

Высокая детализация, возможности оптического зума и настраиваемый эффект боке возглавляют список требований к камере современного смартфона, и достичь успеха в этом могут помочь технологии нескольких камер. Вместо выполнения разных функций отдельными камерами будущее мобильной фотографии — за комбинированием нескольких камер для обеспечения более продвинутых и гибких возможностей.

По поводу технологии Light еще остаются вопросы, в особенности насчет склеивания изображений с разным фокусным расстоянием. Нам остается только ждать — увидим, что изменится к лучшему во втором поколении технологии.

Камера 2 api что это. Смотреть фото Камера 2 api что это. Смотреть картинку Камера 2 api что это. Картинка про Камера 2 api что это. Фото Камера 2 api что это

Непросто будет настроить такой агрегат из камер ручками в программе. Быть может, круг замкнётся и для того чтобы сделать снимок, нам снова придется писать явный intent, с содержанием, типа, “камера, сделай пожалуйста снимок сама как умеешь, но красиво, и верни мне его в моё activity”.

Но пока времени, хоть и немного нам ещё осталось. Поэтому приступим немедля.

Зачем всё это было нужно Гуглу

Вроде, как всё дело в безопасной и правильной многопоточности (а ещё стало можно делать напрямую всякие эффекты и фильтры ). Вот если в ванильной JAVA вам в случае необходимости надо везде грамотно распихивать мьютексы, синхронайзы и семафоры, то здесь Гугль берет почти всё на себя. Вам надо только прописать в тексте программы коллбэки, которые будут вызываться в случае необходимости. То есть, например, вы подаете запрос на включение камеры:

Но это не команда, это просьба. Сразу приступить к работе с камерой вы не можете. Во-первых ей надо время на включение, во-вторых у андроида и так полно важных дел, и ваше пожелание ставится в немаленькую очередь. Но зато нам не надо ждать открытия камеры в цикле в главном потоке, вешая всё приложение (все же помнят, что можно делать в UI-потоке, а что нет). Поэтому, мы отправляем свое пожелание и пока занимаемся своими делами, открываем вьюшки, пишем «hello world», настраиваем обработчики кнопок и тому подобное.

Тем временем, через какие-то десятки и сотни миллисекунд у операционной системы, наконец, доходят руки и до камеры и она её инициализирует. А как только камера готова, срабатывает тот самый коллбэк (если конечно вы заранее его прописали)

То есть, камера теперь открыта и может что-то там делать: выводить изображение с камеры на вьюшку, пересылать его дальше для сохранения и так далее.

В итоге, вся работа с камерой, по сути, сводится к прописыванию всевозможных коллбэков. Но в своём благородном стремлении разработчики Гугля слегка перегнули палку и как правильно заметил японский товарищ:

Одна из причин почему Camera2 приводит в недоумение, это то насколько много коллбэков надо использовать, чтобы сделать один снимок.

Но и этого мало. Полная схема работы камеры имеет вот такой устрашающий вид

Камера 2 api что это. Смотреть фото Камера 2 api что это. Смотреть картинку Камера 2 api что это. Картинка про Камера 2 api что это. Фото Камера 2 api что это

Но к счастью, для начала её можно свести к намного более привлекательной картинке

Камера 2 api что это. Смотреть фото Камера 2 api что это. Смотреть картинку Камера 2 api что это. Картинка про Камера 2 api что это. Фото Камера 2 api что это

Хоть там всё и по английски, но как говорится, понятно без слов. Для начала нам хватит такой конструкции. Откроем камеру, выведем изображение на экран смартфона, сделаем снимок и как только он будет готов (снова коллбэки), сработает слушатель этого события и запишет картинку в файл.

Приступаем к творению кода

Создадим новый проект в IDE Android Studio, выберем минимальную версию SDK 22, чтобы избежать зеленых картинок и заказываем empty Activity (а еще лучше взять 23 версию, а то с permissions траблы могут возникнуть). Для начала хватит. Даже разрешений в манифесте пока делать не нужно.

Работу начнём с создания экземпляра класса CameraManager. Это менеджер системного сервиса, который позволяет отыскать доступные камеры, получить их характеристики нужные вам для работы и задать для камер настройки съемки.

А характеристики мы посмотрим следующие:

идентификатор камеры ( 0, 1, 2 ….)
направление куда камера направлена (вперед, назад)
разрешение камеры в пихелях

Сначала мы получаем список камер в виде строкового массива, а затем выводим в цикле требуемые характеристики и пишем их в лог.

Нам эта информация, в принципе, особо и не нужна, любой чайник ещё по предыдущему API и так знает, что камеры имеют идентификаторы от нуля и далее, что разрешением 1920 на 1080 никого не удивишь, а форматом JPEG тем более. По сути, эти данные нужны уже «взрослому» приложению готовому для продакшена и которое на их основе сделает менюшки выбора для пользователя и так далее. В нашем же простейшем случае, в общем, и так все понятно. Но раз все статьи начинают с этого, то и мы начнём.

Убедившись, что фронтальная камера имеет идентификатор номер «1», а задняя «0» (они почему-то заданы в формате String), а также, что разрешение 1920 х 1080 и сохранение файла JPG нам доступны, продолжим наступление.

Получаем нужные permissions

Первоначально нам надо озаботится рядом разрешений. Для этого в манифесте придется прописать следующее:

Первое понятно для камеры, второе для записи картинки в файл (и это не внешняя карта памяти, как могло бы показаться из значения слова EXTERNAL, а вполне себе родная память смартфона)

Но Android тоже заботится о нас, поэтому, начиная с версии Lollipop разрешений прописанных в манифесте будет уже недостаточно. Ныне требуется, чтобы пользователь ручками одобрил своё согласие на открытие камеры и запись данных в память.

Для этого, в самом простом случае, требуется добавить вот это:

Почему же в самом простом? Потому что такие вещи делать в UI – потоке, как известно не надо. Во-первых вешается поток, пока юзер своими корявыми пальцами тыкает в экран, во-вторых, если дальше у вас инициализация камеры, то приложение, вообще может упасть. В данном демонстрационном случае всё нормально, но вообще предписано и для этого случая использовать нужный коллбэк типа:

Хотя я вот раньше не зная всего этого, запускал нужную Activity через AsyncTask, а ещё раньше просто лепил новый Thread как в Java.

Для удобства вынесем всё что связано с камерами в отдельный класс по совету умных людей и создадим класс CameraService. Там мы разместим инициализацию камер и затем пропишем все коллбэки, которые потребуются.

В главном потоке создаем экземпляр mCameraManager и с его помощью заполним массив объектов myCameras. В данном случае их всего два — фронтальная и селфи камеры.

В методе public void openCamera() можно видеть строчку:

именно отсюда ведет дорожка к первому коллбэку состояния камеры CameraDevice. StateCallback. Он сообщит нам открыта ли камера, закрыта или может быть вообще ничего там нет и выдаст ошибку. Пропишем его в методах класса CameraService.

Соответственно, если камера доступна для работы (сработал метод public void onOpened(CameraDevice camera) <>), то мы именно там пишем дальнейшие наши действия, например, вызов метода createCameraPreviewSession(). Он поможет вывести нам на вьюшку изображение с камеры и работать с ним далее.

Здесь мы пытаемся вывести изображение (поток данных) на текстуру mImageView, которая уже определена в макете. Можно даже определить с каким именно разрешением в пихелях.

И вот когда эта самая сессия готова, вызывается вышеупомянутый коллбэк и мы начинаем по выражению гуглоделов: «displaying the camera preview». Здесь же желающие могут настроить параметры автофокуса и вспышки, но мы пока обойдемся параметрами по умолчанию.

Теперь нам надо, так сказать, набросать красок на холст и создать гениальную картину в стиле

Камера 2 api что это. Смотреть фото Камера 2 api что это. Смотреть картинку Камера 2 api что это. Картинка про Камера 2 api что это. Фото Камера 2 api что это
Процесс это достаточно тривиальный и каждый может здесь развернуться как хочет. Но писать названия кнопок прямо в макете тоже моветон и так в рабочих версиях делать не надо.

Соответственно в самой Activity мы создаем listeners, то есть слушателей для кнопок и вьюшки.

Назначения кнопок понятны из названий, третью кнопку мы пока оставим для будущего снимка.

И если теперь свести все кусочки кода вместе то

Грузим, запускаем, работает!

Вообще, если вам этого мало, то сам процесс съемки можно значительно разнообразить. Наш японец Томоаки показывает и объясняет как, приведя красивую схему.

Камера 2 api что это. Смотреть фото Камера 2 api что это. Смотреть картинку Камера 2 api что это. Картинка про Камера 2 api что это. Фото Камера 2 api что это

Сначала камере надо навести фокус. Обычно это не вызывает проблем, но иногда требует нескольких попыток, которые тоже реализуются через коллбэк

Затем камера переходит в режим предварительной съемки PRECAPTURE. На этой стадии камера вычисляет экспозицию, баланс белого и светосилу (когда-то в детстве я знал что это, но теперь эти знания утрачены). Иногда коллбэк может вернуть требование CONTROL_AE_STATE_FLASH_REQUIRED, что означает «хорошо бы включить вспышку». Её можно кстати включить автоматически — setAutoFlash(mPreviewRequestBuilder).

Когда все нужные параметры для съемки определены, то коллбэк возвращает состояние CONTROL_AE_STATE_CONVERGED сигнализирующее нам о том, что камера готова сделать снимок.

На странице гуглоидов, всё это есть уже в примерах, и если у вас хватит терпения пробиться через эти минные поля и проволочные заграждения, то честь тогда вам и хвала.

Делаем снимок и сохраняем картинку в файл

Вот как раз с этого места у меня начались проблемы. Нет, судя по блок-схеме приведенной выше (не японской, а предыдущей) всё как бы не очень сложно. Дожидаемся, когда камера захватит изображение. После обработки классом CamerCaptureSession оно будет доступно в виде объекта Surface, который в свою очередь можно обработать с помощью класса ImageReader.

Правда на то, чтобы создать объект ImageReader опять же надо время. Дожидаемся этого времени мы в очередном слушателе под названием OnImageAvailableListener. И наконец, с помощью инстанса последнего класса ImageSaver сохраняем изображение в файл и естественно делаем это тоже асинхронно, потому как ImageSaver он у нас Runnable.

Проблема была в том, что я никуда не мог пристроить этот ImageReader, поскольку коллбэк CameraCaptureSession.StateCallback() уже был занят под трансляцию видео на вьюшку смартфона. А если я делал новую сессию то Android предсказуемо ругался и крашил приложение. В итоге (не спрашивайте меня как) я сумел скрестить коня и трепетную лань в одном методе createCameraPreviewSession(), который раньше выводил изображение с камеры только на вьюшку.

Вот этот кусок кода до:

Разница, если не считать определения инстанса ImageReader вверху, почти неуловима. Всего-то добавили к surface, через запятую mImageReader.getSurface() и всё. Но пока до этого дойдешь…

С этого момента дела пошли веселее и можно было задействовать третью экранную кнопку «Сделать Снимок». При ее нажатии вызывается метод makePhoto() (ну кто бы мог подумать):

А сразу за ним прописываем слушатель OnImageAvailableListener:

Пока он ничего не делает, просто сигнализирует тостом, что дескать, все в порядке, можно сохранять картинку в файл.

А для этого нам потребуется сам файл:

А также специальный объект класса ImageSaver, который быстренько перекачает данные с картинки в байтовый буфер, а оттуда уже в бинарный файл.

Этот класс статический да ещё и Runnable. Поэтому мы его размещаем в самой MainActivity:

А чтобы он сработал, пропишем в слушателе OnImageAvailableListener дополнительно:

Что ещё за mBackgroundHandler. Всё же прекрасно работало и без него.

Но на самом деле правильный вопрос — а как оно вообще работало без него? Потому что, как прописано в примерах Гугля BackgroundHandler обеспечивает работу BackgroundThread, который в свою очередь является потоком работающим в фоновом режиме и собственно отвечающим за деятельность камеры. И на самом деле мы должны еще в самом начале нашей Activity прописать:

Мало этого, еще надо добавить запуск и остановку BackgroundThread еще и сюда:

Что же касается mBackgroundHandler, то его надо добавить во все наши коллбэки, которые требуют handler и куда мы, не парясь, писали вместо этого null.

Самое интригующее, что этот фоновый поток мы сами НЕ запускаем при открытии приложения, как легко видеть из текста программы. То есть он запускается неявно и без нашей помощи. Зато мы должны его сами останавливать и запускать в режимах onPause() и onResume(). Какое-то здесь противоречие получается.

Но зато теперь картинка успешно сохраняется в файл. В этом легко убедиться запустив приложение. Как говорится, венец трудов превыше всех наград.

Камера 2 api что это. Смотреть фото Камера 2 api что это. Смотреть картинку Камера 2 api что это. Картинка про Камера 2 api что это. Фото Камера 2 api что это

Правда картинка почему-то лежит на боку, но решить эту проблему задача уже будущих поколений.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *