TGINSIGHT CHAT
Android Broadcast
@android_broadcast
TechnologiesПодборка новостей и статей для Android разработчиков. Реклама и связь с автором @ab_manager РКН https://abdev.by/rkn_tg_ab#MQRZR
Posts récents
Page 76 sur 84 · 1,000 posts
Publié 14 févr.
🤖Улучшения поддержки UltraHDR в Android 16 Появилась поддержка UltraHDR в HEIC, также работают на поддержкой в AVIF. Также добавили новые параметры UltraHDR из черновика стандарта ISO 21496-1 #android#android16
Hashtags
Publié 14 févr.
🤖Точная настройка цветовой температуры и оттенка в 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#камера
Publié 14 févr.
⚙️Профессиональные функции 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
Publié 14 févr.
🤖Появился новый Intent для съёмки Motion Photo val intent = Intent(MediaStore.ACTION_MOTION_PHOTO_CAPTURE) // или MediaStore.ACTION_MOTION_PHOTO_CAPTURE_SECURE // Задаем куда сохранить intent.putExtra(MediaStoreEXTRA_OUTPUT, uri) // или Uri через ClidData intent.setClipData(clipData) context.startActivity(intent) #android16
Hashtags
Publié 14 févr.
🤖Вышла вторая Beta Android 16 Вышла вторая из четырёх Beta версий Android 16. Улучшили работу с медиа, новые возможности Camera2 API, форсирование Edge-to-edge и другие. Как всегда расскажу отдельными постами про самые интересные фичи #android16
Hashtags
Publié 13 févr.
Три слова для привлечения внимания любого тимлида: OKR, планирование и мотивация команды 🚀 А теперь, пока вы тут: встречаемся 26 февраля на Avito TeamLead Drinkup #3! Обсудим, как оценивать софт скиллы на собеседовании, растить и мотивировать команду и зачем ИИ в менеджменте. Без нетворка, конечно, не оставим — он будет после основной программы. Для регистрации кликайте сюда. Осталось не так много мест! 🔥 #management_avitotech
Hashtags
Publié 13 févr.
Как лишние ресурсы могут повлиять на 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#локализация#лучшиепрактики
Publié 12 févr.
🚀 Вышла первая Beta версия Room 2.7.0. Самое важное нововведение - переход на KMP с поддержкой Android, iOS и Desktop 🔥🔥🔥. Также на Android теперь можно использовать SQLite из артефакта, а не только тот что в Android ОС #android#kmp#jetpack#room#sqlite
Publié 12 févr.
📹Опасности в Android: уязвимости и защитные меры (42м) Увлекательное путешествие в мир безопасности Android! Разобрали самые интересные и коварные уязвимости, такие как Path Traversal, SQL-инъекции и Tapjacking. Но основное внимание уделили WebView: неправильной валидации данных, уязвимостям в библиотеке для парсинга URL, JavaScript Interface и загрузке диплинков. В докладе нет скучных терминов и монотонных объяснений. Вместо этого — захватывающая история поиска уязвимостей и их устранения, основанная на личном опыте при разработке приложений. Будет полезно всем тем, кто интересуется безопасностью Android-приложений. 📹 Версия на VK Video #android#безопасность#mobius
Hashtags
Publié 12 févr.
Publié 12 févr.
Не нужно делать UseCase для простых вызовов В статье приводится пример с получением данных через UseCase с простым вызовом метода из единственной зависимости. Конечно, есть принятый подход, но зачем делать лишний класс только потому, что "так принято". Мне не нравится делать так: class FetchMemesUseCaseImpl( private val memeRepository: MemeRepository ) : FetchMemesUseCase { override suspend operator fun invoke(): List<Meme> { return memeRepository.fetchMemes() } class MemeListViewModel( private val fetchMemesUseCase: FetchMemesUseCase ) : ViewModel() а на замену просто получать данные из репозитория в ViewModel: class MemeListViewModel( private val memeRepository: MemeRepository ) : ViewModel() Не делайте избыточный код просто потому, что так принято у всех остальных или потому, что так сказал какой-то умный эксперт по разработке. Оценивайте здраво, что вам нужно сейчас, и при изменении требований вводите новые элементы в архитектуре. #android#архитектура#лучшиепрактики
Publié 12 févr.
Большой обзор по использованию UseCase (EN,16м) в Android #android#архитектура
Hashtags