Найти в Дзене

Камера в Android 11 — коротко и по делу

Android 11 добавил одноразовые права, автосброс разрешений, support для одновременных камер и точный zoom; важно проверять возможности устройства и корректно обрабатывать права и ресурсы. - Разрешения: обрабатывайте one‑time и авто‑сброс — показывайте rationale, используйте shouldShowRequestPermissionRationale() и предлагайте перейти в настройки, если доступ потерян. - Проверка возможностей: читайте CameraCharacteristics (hardware level, REQUESTAVAILABLECAPABILITIES), StreamConfigurationMap и getConcurrentCameraIds() перед включением функций (RAW, concurrent cameras, точный zoom). - Форматы и размеры: для анализа — YUV420888; для превью по производительности — PRIVATE; фото — JPEG, RAW только если устройство поддерживает FULL. Выбирайте превью разрешение ради FPS/латентности (720/1080), а фото — с учётом времени обработки. - Частые проблемы и быстрые исправления: - "Камера занята" — слушайте CameraManager.AvailabilityCallback, корректно закрывайте CameraDevice/Session в onPause/onStop

Камера в Android 11 — коротко и по делу

Android 11 добавил одноразовые права, автосброс разрешений, support для одновременных камер и точный zoom; важно проверять возможности устройства и корректно обрабатывать права и ресурсы.

- Разрешения: обрабатывайте one‑time и авто‑сброс — показывайте rationale, используйте shouldShowRequestPermissionRationale() и предлагайте перейти в настройки, если доступ потерян.

- Проверка возможностей: читайте CameraCharacteristics (hardware level, REQUESTAVAILABLECAPABILITIES), StreamConfigurationMap и getConcurrentCameraIds() перед включением функций (RAW, concurrent cameras, точный zoom).

- Форматы и размеры: для анализа — YUV420888; для превью по производительности — PRIVATE; фото — JPEG, RAW только если устройство поддерживает FULL. Выбирайте превью разрешение ради FPS/латентности (720/1080), а фото — с учётом времени обработки.

- Частые проблемы и быстрые исправления:

- "Камера занята" — слушайте CameraManager.AvailabilityCallback, корректно закрывайте CameraDevice/Session в onPause/onStop.

- Чёрный превью — используйте совместимые пары output‑sizes из StreamConfigurationMap или ResolutionSelector (CameraX).

- Поворот/зеркало — учитывайте SENSORORIENTATION и выставляйте setTargetRotation / JPEGORIENTATION.

- Производительность: писать изображения асинхронно, ограничить количество удерживаемых Image, использовать acquireLatestImage для анализа и PRIVATE surfaces/аппаратное кодирование, чтобы избежать OOM и тормозов.

Вывод: для большинства проектов начать с CameraX — быстрее и надёжнее; обязательно тестируйте сценарии прав (one‑time/auto‑reset) и комбинации concurrent cameras на целевых устройствах.

Подробнее: https://www.ivan-kornev.ru/articles/android/apps/camera-android11-settings-permissions