Android Broadcast – Telegram
Android Broadcast
14.4K subscribers
3.68K photos
367 videos
11 files
6.1K links
Подборка новостей и статей для Android разработчиков.

Реклама и связь с автором @ab_manager

РКН https://abdev.by/rkn_tg_ab #MQRZR
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Также напомнили про Widget Canonical Layouts — рекомендуемые шаблоны для App Widget. Подробнее в статье, шаблоны можно найти в Figma.

#android #appwidget
👍21👎621🔥1
Media is too big
VIEW IN TELEGRAM
В Android Auto можно будет устанавливать игры, но вот запустить их получится только когда машина припаркована

#android #androidauto #googleplay
👍51👎7💯1
🚀 Jetpack Media3 Transformer API: Новый уровень обработки медиа в Android!

Google представила обновленный Jetpack Media3 Transformer, который значительно ускоряет и упрощает обработку медиафайлов на Android. Теперь можно быстрее применять эффекты, трансформировать видео и использовать GPU для ускорения!

Что нового?
👉 Аппаратное ускорение: кодирование видео на GPU вместо CPU!
👉 Поддержка новых форматов: HDR, AV1 и другие.
👉 Проще, быстрее, эффективнее: API стал более удобным и гибким.

👨‍💻 Кому пригодится?
Разработчикам, работающим с видеофильтрами, монтажом, сжатием и кодированием видео прямо на устройстве.

Подробнее про API читайте в документации.

#Android #Jetpack #медиа
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29🔥9👎5
💉 Koin Annotations 2.0 Stable

Koin Annotations — надстройка над Koin для описания зависимостей с помощью аннотаций и последующей генерации части графа для них.

Что нового в движке:
👉 Совместимость с KSP2
👉 Улучшена работа компилятора DI кода
👉 Улучшена генерация кода
👉 Полноценная поддержка KMP проектов
👉 Шаринг описаний зависимостей между модулями проектов
👉 Работает с Koin 4.0, Kotlin 2.0.21 и KSP 2.0.21-1.0.28

Новые фичи для разработчиков:
👉 Создание собственных аннотаций квалификаторов
👉 Автоматические биндинги
👉 ComponentScan работает сквозь Gradle модули
👉 Аннотации над ViewModel (работает с Jetpack и KMP)
@KoinViewModel
class MyViewModel(deps: Deps): ViewModel()


Ссылка без VPN

#kotlin #kmp #di #koin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31👎7👍51
Lynx.js теперь поддерживает нативные модули! 🎉

Фреймворк Lynx.js от ByteDance сделал большой шаг вперёд — теперь разработчики могут использовать нативные модули для создания мощных и высокопроизводительных приложений.

🔹 Что это значит?
Теперь вы можете:
👉 Интегрировать нативные API iOS и Android прямо в коде на Lynx.js
👉 Вызывать код на Swift/Kotlin без сложных обёрток
👉 Повышать производительность приложений, используя платформенно-специфичные оптимизации

🔥 Это открывает новые возможности для разработчиков гибридных приложений!

Как вам такая новость? Уже есть идеи, где можно использовать? Делитесь в комментариях! ⬇️

#android #ios #crossplatform
🤯10👍5👎5
Lynx уже используют много где для встраивания в TikTok, например TikTok Studio написано на нём. Плавность UI показали, но вот как проверить всё это мне на своем устройстве?

Исходный код Lynx закрыт, но обсуждают переход в open-source
👎10👍6
Качественное приложение для расписания ВУЗа (8м)

Разработчик создал качественное Android-приложение для расписания ВУЗов. Он использовал шаблон через GitHub Template, и теперь вы можете легко получить приложение с расписанием для своего ВУЗа (возможно, и школы).

🛒 Скачать приложение
🐱 Шаблон на GitHub

Знаю, что автор подписан на @android_broadcast, поэтому в комментариях можете задавать свои вопросы, а также подписаться на его блог @mxkmn_inc

#android #opensource
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥40👎136👏6👍4
VK запустила онлайн-платформу «Секреты цифровой доступности» и поделилась внутренней базой знаний по инклюзии сервисов. На платформе собрано более бесплатных 30 видеоуроков и 20 практических материалов

#vk #accessibility
👎13👍12
Forwarded from Видео в кружок | CIRCLES
This media is not supported in your browser
VIEW IN TELEGRAM
126🎉23👎22👍10🔥1
🔨⚙️ Kelp — IDE-плагин для кастомных дизайн-систем на Jetpack Compose (9 мин)

Рассказ о плагине для Android Studio, который упрощает работу с кастомными дизайн-системами на Jetpack Compose.

Возможности:
👉 Настраиваемые иконки для компонентных функций
👉 Иконки дизайн-системы
👉 Предпросмотр цветов
👉 Интеграция демо-приложения
👉 Рендеринг изображений в KDoc
👉 Шаблоны кода (Live Templates)

#android #androidstudio #compose
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍28👎7🔥21
📹 Как проходит собеседование в Wildberries? Разбираем на практике! (2.5 часа)

Формат: Практическая задача на реализацию фичи, многопоточность, корутины, Kotlin Flow, Java/Kotlin + теоретические вопросы, разбор примеров кода

Собеседует Александр Гирев, Senior Android developer в Wildberries. Провел более 150 технических интервью!

Кандидат - Android-разработчик, 5 лет опыта в IT компании.

Доступ только для платных подписчиков на 🪙Boosty или в Telegram

0:00 Знакомство с собеседующим и формат интервью
7:48 Представление кандидата
8:32 Софтовая часть
17:03 Практическая задача
33:33 Секция многопоточности, основы
38:22 Корутины, ревью кода
54:16 Корутины, теория
1:07:45 Секция Kotlin, ревью кода
1:18:36 Kotlin n Java, теория
1:37:07 Платформенная секция
1:48:17 Вопросы по библиотекам
1:57:06 Вопросы от кандидата
2:03:21 Результат собеседования
2:10:06 Обсуждение собеседования и ответы на вопросы зрителей

#AndroidBroadcast #android #собес
Please open Telegram to view this post
VIEW IN TELEGRAM
1👎57👍303🤯3
Поддержите Koin IDE плагин на Product Hunt. Команда проделывают большую работу и точно заслуживает поддержки от сообщества!

#kotlin #koin #ide #androidstudio
👍39👎15
🤖 ServerSocket для IPC в Android и примеры межпроцессного взаимодействия (6 мин)

Разработчик решил разобраться, как организовать общение между браузером и Android-приложением для передачи данных. В поисках удобного решения он обратил внимание на ServerSocket — простой и гибкий способ локального взаимодействия без лишних сложностей. Что из этого вышло, читайте в статье.

Практическое применение статья будет иметь для малого количества разработчиков, но для лучшего понимания Android ОС и работы её принципов однозначно сделает вас сильнее.

#android #подкапотом
👍20👎12🔥3
🔨 AI Assistant от JetBrains теперь и в Android Studio

Плагин предоставит вам AI-функции для автодополнения, пояснения кода, рефакторинга, генерации сообщений к коммитам и многого другого. Из России и Беларуси сервис работать не будет, но если вы настроите, то сможете использовать и бесплатный Gemini. Скорее всего, он будет лучше интегрирован.

Кроме того, сервис платный, даётся 7 дней пробного периода, что кажется очень мало для полноценной проверки.

#android #androidstudio #jetbrains #ai
Please open Telegram to view this post
VIEW IN TELEGRAM
👎45🔥9👍7🤯1
🤖 Лимиты памяти в Android: как они работают и можно ли их обойти?

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

Какие есть лимиты?

1. Heap Size (размер кучи) для кода, исполняющегося в JVM
- Android ограничивает объём памяти, доступный одному процессу (приложение может иметь их несколько).
- Лимит зависит от устройства: размера его оперативной памяти, разрешения и размера экрана, версии ОС и прочих характеристик.
- Узнать доступный объём можно так:
val maxMemoryMb = Runtime.getRuntime().maxMemory() / (1024 * 1024)
Log.d("MemoryInfo", "Max heap size: ${maxMemory}MB")


2. Large Heap Mode
- Можно попросить систему выделить больше памяти через задание в в AndroidManifest android:largeHeap="true", но увеличение не гарантируется. Узнать доступный размер можно так:
val activityManager = getSystemService<ActivityManager>() 
val largeMemoryClass = activityManager.largeMemoryClass
Log.d("MemoryInfo", "Large Heap: ${largeMemoryClass}MB")


Для Pixel 9 Pro XL с 16 Гб оперативной памяти стандартный лимит - 512 Мб, а c флагом large heap - 1 Гб. Google Play никак не ограничивает вас в выставлении этого флага и сможете смело опубликоваться, но использовать опцию без явной причины не стоит!

Как можно использовать больше памяти?

Запуск нескольких процессов
Каждый процесс имеет свой heap limit. Можно вынести часть логики в сервис с android:process=":extra_process". Каждый Android компонент связан с определённым процессом и динамически из кода создать/задать не получится.

NDK (Native Code, C++)
Обход heap-лимитов возможен через выделение памяти в C++:
void* bigMemory = malloc(500 * 1024 * 1024); // 500MB

Но при этом важен контроль утечек памяти.

Перенос части нагрузки на видеопамять
Можно использовать GPU для хранения и обработки данных, например:
- Текстуры и буферы в OpenGL/Vulkan
GLuint buffer;
glGenBuffers(1, &buffer);
glBindBuffer(GL_ARRAY_BUFFER, buffer);
glBufferData(GL_ARRAY_BUFFER, size, data, GL_STATIC_DRAW);

- Аппаратное декодирование видео через MediaCodec
val decoder = MediaCodec.createDecoderByType("video/avc")

- Использование Hardware Bitmaps для рендеринга изображений
val options = BitmapFactory.Options().apply { inPreferredConfig = Bitmap.Config.HARDWARE }
val bitmap = BitmapFactory.decodeResource(resources, R.drawable.image, options)


Злоупотребление Large Heap
Запрос большого heap-а не даёт гарантий – Android всё равно ограничит память при нехватке ресурсов. Некоторые производители вовсе игнорируют этот флаг из манифеста

#android #подкапотом
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍695👎3💯2
🚀 Вышел Jetpack WindowManager 1.4 - библиотека с API для построения адаптивного UI в Material3 (можно применить и к другим UI Kit): WindowSizeClass, Activity embedding, WindowsInfoTracker и др.

Про изменения отдельными постами дальше

#jetpack #ui #material
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13👎3
🚀 Изменения в WindowSizeClass

Сделали рефакторинг API, чтобы оно позволило добавлять собственные значения в будущем (помимо NORMAL, LARGE, EXPANDED), а также отказались от WindowWidthSizeClass и WindowHeightSizeClass.
// Было. Теперь deprecated 

val sizeClass = WindowSizeClass.compute(widthDp, heightDp)
when (sizeClass.widthSizeClass) {
COMPACT -> doCompact()
MEDIUM -> doMedium()
EXPANDED -> doExpanded()
else -> doDefault()
}


// Стало в 1.4
val sizeClass = WindowSizeClass.BREAKPOINTS_V1
.computeWindowSizeClass(widthDp, heightDp)


// Проверяем от самого большого размера к наименьшему
when {
sizeClass.isWidthAtLeastBreakpoint(WIDTH_DP_EXPANDED_LOWER_BOUND) -> {
doExpanded()
}
sizeClass.isWidthAtLeastBreakpoint(WIDTH_DP_MEDIUM_LOWER_BOUND) -> {
doMedium()
}
else -> {
// Ветка по умолчанию должна быть для
// самого маленького поддерживаемого UI
doCompact()
}
}


#jetpack #material #adaptive #ui
Please open Telegram to view this post
VIEW IN TELEGRAM
👎10👍9😢2
🚀 Обновления Activity Embedding

👉 Изменение размера панелей теперь поддерживается из коробки
val splitAttributesBuilder: SplitAttributes.Builder = SplitAttributes.Builder()
.setSplitType(SplitAttributes.SplitType.ratio(0.33f))
.setLayoutDirection(SplitAttributes.LayoutDirection.LEFT_TO_RIGHT)

if (WindowSdkExtensions.getInstance().extensionVersion >= 6) {
splitAttributesBuilder.setDividerAttributes(
DividerAttributes.DraggableDividerAttributes.Builder()
.setColor(getColor(context, R.color.divider_color))
.setWidthDp(4)
.setDragRange(
DividerAttributes.DragRange.DRAG_RANGE_SYSTEM_DEFAULT)
.build()
)
}
val splitAttributes: SplitAttributes = splitAttributesBuilder.build()


👉 Управление затемнением интерфейса под диалогом диалога

👉 Возможность закрепить Activity Task (набор Activity) по id в части экрана
fun pinActivityStackExample(taskId: Int) {
val splitAttributes: SplitAttributes = SplitAttributes.Builder()
.setSplitType(SplitAttributes.SplitType.ratio(0.66f))
.setLayoutDirection(SplitAttributes.LayoutDirection.LEFT_TO_RIGHT)
.build()

val pinSplitRule = SplitPinRule.Builder()
.setDefaultSplitAttributes(splitAttributes)
.build()

SplitController.getInstance(applicationContext)
.pinTopActivityStack(taskId, pinSplitRule)
}


#jetpack #ui #material #activity
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7👎7
This media is not supported in your browser
VIEW IN TELEGRAM
Пример изменения размера панелей с помощью нового API из Jetpack WindowManager 1.4
1🔥33👍5👎4