Руководство(EN,6м) от команды CameraX по созданию эффекта как на видео, когда весь ваш UI на Compose. Используется определение лиц в кадре и наложение масок
🔗Ссылка без VPN
#android#jetpack#camerax#камера#compose
Как лишние ресурсы могут повлиять на UI вашего приложения
Библиотеки от Google и других популярных SDK часто содержат строки для десятков локалей, тогда как большинство приложений поддерживают всего 7–10 наиболее востребованных языков.
Механизм выбора ресурсов в Android устроен таким образом, что система подбирает наиболее подходящий ресурс с учётом квалификаторов (например, локали). Если для конкретной локали, установленной на устройстве, в вашем проекте отсутствует соответствующий перевод, система может использовать строку из библиотеки по умолчанию. Это может привести к неожиданному отображению интерфейса.
Чтобы избежать подобных ситуаций, вы можете явно задать набор локалей, которые поддерживает ваше приложение. Тогда все ресурсы для неуказанных локалей не попадут в финальный APK, что не только снижает его размер, но и обеспечивает предсказуемость UI.
Пример настройки в build.gradle.kts (application модуль):
android {
androidResources {
// Автоматически сгенерировать список локалей на основе ресурсов проекта
// По умолчанию false
generateLocaleConfig = true
// Либо явно указать поддерживаемые локали
localeFilters.addAll(setOf("en", "ru", "es", "de"))
}
}
Ранее Android Gradle Plugin позволял фильтровать ресурсы по различным группам квалификаторов (например, плотность экрана, ориентация и т.д.), однако начиная с AGP 8.0 эта возможность объявлена устаревшей и поддерживается только фильтрация по локалям. Это связано с тем, что App Bundle эффективно разделяет ресурсы по плотности экрана, а применение других фильтров использовалось крайне редко.
#android#gradle#локализация#лучшиепрактики
🤖Точная настройка цветовой температуры и оттенка в Camera2
В Android 16 появилась поддержка точной настройки цветовой температуры и оттенка для камеры, что особенно полезно для профессиональных видеосъёмочных приложений.
Ранее в Android управление балансом белого осуществлялось через CONTROL_AWB_MODE, но выбор ограничивался предустановками (например, “Лампа накаливания”, “Облачно”, “Сумерки”).
Теперь новый режим COLOR_CORRECTION_MODE_CCT позволяет использовать параметры COLOR_CORRECTION_COLOR_TEMPERATURE и COLOR_CORRECTION_COLOR_TINT для более точной коррекции баланса белого на основе коррелированной цветовой температуры (CCT).
Пример кода:
fun setCCT() {
val colorTemperatureRange: Range<Int> =
mStaticInfo.characteristics[CameraCharacteristics.COLOR_CORRECTION_COLOR_TEMPERATURE_RANGE]
// Переключаемся в ручной режим для активации CCT
reqBuilder[CaptureRequest.CONTROL_AWB_MODE] = CameraMetadata.CONTROL_AWB_MODE_OFF
reqBuilder[CaptureRequest.COLOR_CORRECTION_MODE] = CameraMetadata.COLOR_CORRECTION_MODE_CCT
reqBuilder[CaptureRequest.COLOR_CORRECTION_COLOR_TEMPERATURE] = 5000
reqBuilder[CaptureRequest.COLOR_CORRECTION_COLOR_TINT] = 30
val request: CaptureRequest = reqBuilder.build()
}
Теперь разработчики могут добиваться более точной цветопередачи, что особенно важно для профессиональной видеосъёмки.
#android#android16#camera2#камера
⚙️Профессиональные функции Camera2 API. Гибридная автоэкспозиция 🎥✨
В Android 16 добавлены новые режимы гибридной автоэкспозиции (Hybrid AE) в Camera2. Теперь можно вручную управлять отдельными параметрами экспозиции, оставляя остальное на алгоритм автоэкспозиции (AE).
Доступны два новых режима:
👉 ISO + AE – вы задаёте ISO, а автоэкспозиция регулирует выдержку.
👉 Выдержка + AE – вы управляете временем экспозиции, а AE настраивает ISO.
Это даёт больше гибкости по сравнению с прежним подходом, где нужно было либо полностью полагаться на автоэкспозицию, либо вручную контролировать все параметры.
fun setISOPriority() {
// ...
val availablePriorityModes = mStaticInfo.characteristics.get(
CameraCharacteristics.CONTROL_AE_AVAILABLE_PRIORITY_MODES
)
// ...
// Включение AE режима
reqBuilder.set(
CaptureRequest.CONTROL_AE_MODE,
CameraMetadata.CONTROL_AE_MODE_ON
)
reqBuilder.set(
CaptureRequest.CONTROL_AE_PRIORITY_MODE,
CameraMetadata.CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY
)
reqBuilder.set(
CaptureRequest.SENSOR_SENSITIVITY,
TEST_SENSITIVITY_VALUE
)
val request: CaptureRequest = reqBuilder.build()
// ...
}
#android#android16#камера#camera2
🤖Вышла CameraX 1.6.0 с крутыми улучшениями
Вышел стабильный релиз CameraX 1.6.0. Цикл разработки был долгим, зато список изменений получился весомым.
👉Переход на CameraPipe — CameraX теперь работает на том же стеке, что и приложение камеры Pixel. Все оптимизации и новые computational photography фичи отныне приходят в CameraX автоматически.
👉Media3 Muxer по умолчанию — видеозапись через VideoCapture теперь использует Media3 Muxer. Если приложение упадёт во время записи, файл не повредится. Плюс более эффективный процессинг в целом.
👉Feature Group обновился — GroupableFeatures пополнился константами VIDEO_STABILIZATION и UHD_RECORDING. Теперь их можно комбинировать с другими фичами в одном SessionConfig, туда же вписываются CameraEffect и ImageAnalysis.
👉SessionConfig стал стабильным API — вышел из experimental вместе с HighSpeedVideoSessionConfig. Появился isSessionConfigSupported для проверки совместимости конкретной комбинации фич до биндинга к lifecycle. Также появился ExtensionSessionConfig для работы с CameraX Extensions.
Также исправили баг на Android 17. Версия 1.5.2 падает.
🔗 Источник - developer.android.com
🐱Примеры на Github
#Android#AndroidDev#CameraX#Jetpack#Камера
Tech, Media, and Business News Headlines—Day 5
👉#Apple will host a virtual #WWDC this year — starts on 22 June (link)
👉#Twitter tests a warning message that tells users to rethink offensive replies (link)
👉#Twitter rolls out changes to threaded conversations following tests in its prototype app, #twttr (link)
👉#Airbnb cuts 1,900 jobs, around 25% of its global workforce (link)
👉#Bitcoin is set for ‘Halving’ this month (link)
👉 Leaked videos show #Lenovo’s first gaming #smartphone (link)
👉#Android 11’s public beta to launch with 3 June via live stream (link)
👉#Google’s #Stadia controller will finally work wirelessly with computers starting this week (link)
👉#Microsoft launches #SurfaceBook 3 (link) and #SurfaceHeadphones 2 (link)
👉#Microsoft offers $100,000 to hack its custom Linux OS (link)
👉#Uber lays off 14% of its workforce in COVID-19-related cost-cutting (link)
👉#Pinterest Q1: revenue of $272M, vs. $270M est., up 35% YoY; user base grew to 367M MAUs, up 26% YoY (link)
👉#EA Q4: revenues of $1.39B, beating expectations of $1.19B, up 12% YoY (link)
#️⃣#EarningsCalls
📰@iXDaily by @PerspectiveIX
💌Weekly Newsletter.
Мы с вами говорили про отличия между платформами, но что говорить о мультиплатформе, если даже на разных Android-устройствах могут быть отличия в поведении, и явным рекордсменом по количеству особенностей являются устройства Xiaomi 🧡
Сегодня поговорим про регулярные выражения и букву ё. Кто ее только не отменял, но Xiaomi пошли дальше всех.
К нам прилетел баг, что при введении ФИО буква ё не проходит валидацию по регулярному выражению. Первое, что приходит в голову, это, что мы написали кривой regex, ведь на самом деле, если использовать такое регулярное выражение ^[а-яА-Я]*$ то буква ё не попадает в этот диапазон и нужно определять ее отдельно, но нет, дело было не в этом.
Дальше мы подумали, а что если клавиатура на Xiaomi использует какой-то другой символ ё и мы оказались правы. Действительно стандартная клавиатура использовала \u00eb символ юникода вместо \u0401
Все дело в клавиатуре, которая выбрана по умолчанию, если поменять клавиатуру на Gboard, то все будет окей. Так что перед проверкой данных нам пришлось делать замену данного символа, чтобы пройти валидацию и на бекенде
👍
Давайте порадуемся за Семëна с Xiaomi, теперь у него все будет хорошо
🫡
#Android#Regex#Xiaomi
Qualcomm продлевают поддержку Android до 8 лет!
Новая инициатива Qualcomm и Google позволит устройствам на Snapdragon 8 Elite и будущих чипах получать обновления Android и патчи безопасности в течение 8 лет. Это огромный шаг вперёд для Android-экосистемы, повышая долговечность устройств и снижая затраты для OEM-производителей.
Какие устройства получат поддержку?
👉 Смартфоны на Snapdragon 8 Elite с Android 15
👉 Будущие устройства на новых Snapdragon 8 и 7-й серии
👉 Включает 2 обновления ядра Android Common Kernel
Однако финальное решение остаётся за производителями. Будут ли OEM-ы действительно поддерживать свои устройства так долго? Samsung уже делает 7 лет, Google столько же, но у них свои чипы.
#Android#Qualcomm#Snapdragon
Chrome на Android получит поддержку сторонних менеджеров паролей
Ранее стало известно, что в Beta-версии все менеджеры паролей для Android начнут работать с Chrome. Google на основе обратной связи добавила полезные возможности:
1️⃣Узнать любому приложению, используется ли в Chrome сторонний менеджер паролей
2️⃣Добавили Deep Link для открытия настройки выбора сервиса автозаполнения в Chrome
val autofillSettingsIntent = Intent(Intent.ACTION_APPLICATION_PREFERENCES).apply {
addCategory(Intent.CATEGORY_DEFAULT)
addCategory(Intent.CATEGORY_APP_BROWSER)
addCategory(Intent.CATEGORY_PREFERENCE)
}
val chooser = Intent.createChooser(autofillSettingsIntent, "Pick Chrome Channel")
startActivity(chooser)
Chrome 135 выйдет в релиз 1 апреля 2025
#android#autofill#chrome