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
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
🚀 Улучшили API для работы с Foldable

Добавили возможность получения больше о физическом состоянии складного устройства. Новое API WindowInfoTracker.supportedPostures позволит понять поддерживает ли устройство режим tabletop (устройство частично сложено, складной экран разделён на 2 зоны)

val currentSdkVersion = WindowSdkExtensions.getInstance().extensionVersion
val message =
if (currentSdkVersion >= 6) {
val supportedPostures = WindowInfoTracker.getOrCreate(LocalContext.current).supportedPostures
buildString {
append(supportedPostures.isNotEmpty())
if (supportedPostures.isNotEmpty()) {
append(" ")
append(
supportedPostures.joinToString(
separator = ",", prefix = "(", postfix = ")"))
}
}
} else {
"N/A (WindowSDK version 6 is needed, current version is $currentSdkVersion)"
}


#jetpack #android #foldable
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16👎5😢1
Сравнение Dagger 2, Dagger Hilt и Koin (4м)

Быстрый рассказ про популярные DI для Android. Полезно тем, кто выбирает свой первый DI или сомневается в выборе

#android #di
👍52👎12🎉3
Media is too big
VIEW IN TELEGRAM
📺 Обзор Kotlin Inject или как будет выглядеть Dagger на Kotlin Multiplatform

Обзор библиотеки Kotlin Inject - DI для KMP, API которого аналогично Dagger. В видео происходит демонстрация возможностей, сравнение с другими DI и личное мнение о том стоит ли использовать эту библиотеку в проде.

#видео #kmp #di
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍32👎9
‼️ Vulkan становится обязательным для Android

В рамках Game Developer Conference Google объявила что все чипы, которые будут выходить с Android 17+ (выйдет летом 2026 года) как первый релиз будут обязаны поддерживать Vulkan API 1.4.

Вендоры при выпуске устройств с Android 17+ (не обновления) должны будут поддерживать ANGLE

ANGLE (Almost Native Graphics Layer Engine) — это реализация OpenGL ES поверх Vulkan или Direct3D, используемая в Android для запуска приложения без поддержки Vulkan


#android #android17
Please open Telegram to view this post
VIEW IN TELEGRAM
👍35🔥11👎5
Google добавила поддержку мультимодального Gemini в Android Studio. Теперь можно загрузить мокап или диаграмму и получить код. Источник - @MishaalAndroidNews

#androidstudio #ai #gemini
👍19👎9