Обновить
256K+

Android *

Пишем под самую популярную мобильную ОС

146,06
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Тактильный отклик в мобильных приложениях: что это такое, когда использовать и зачем?

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели19K

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

Прочитать материал

Главный метод Android-приложения

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели14K

Если вы когда-нибудь писали «Hello World» на Java (или любом другом C-подобном языке), то наверняка делали это в статическом методе main. Этот метод вызывается в JVM и является точкой входа любой Java программы.

Но при разработке приложений для Android вы возможно, как и я до недавнего времени, ни разу метод main не встречали. Создается ощущение, что его вообще не существует, а при нажатии на иконку в лаунчере наши Application и Activity создаются какими-то волшебными гномами, спрятанными в устройстве.

Читать далее

Как написать Android приложение, которое не будет стыдно положить в портфолио. Гайд для новичков в Android разработке

Уровень сложностиПростой
Время на прочтение22 мин
Охват и читатели29K

Гайд по написанию Android-приложения с нуля, используя лучшие архитектурные подходы – Clean Architecture и MVI, они обеспечат поддерживаемость, тестируемость и масштабируемость приложения, что особенно важно для сложных и долгосрочных проектов.

Читать далее

Изолируем Whatsapp с помощью Separated apps в KNOX Service Plugin (KSP)

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели4.4K

Допустим такой кейс: cотрудники компании использовали корпоративные устройства под управлением EMM системы (Enterprise Mobility Management), политики которой запрещали WhatsApp, что было неудобно сотрудникам, потому что партнёры и клиенты компании иногда предпочитали общение в этом приложении.

«Левым» приложениям не доверяют, потому что они могут совать нос в конфиденциальные данные компании или сканировать частную корпоративную сеть. Как тогда разрешить ситуацию? В конце статьи бонусом расскажу об условиях, при которых получение root прав или прошивка неофициальной ОС превращает смартфон или планшет Samsung в «кирпич»

Читать далее

Кастомный Date and Time picker как в Telegram на Kotlin Jetpack Compose

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели9.2K

Вдохновившись классными колесиками для выбора времени и даты напоминаний Telegram я захотел сделать на одном из своих пет‑проектов что‑то подобное. Первой мыслью было — найти этот код в исходниках Telegram, но т.к. скорее всего, у них это написано на Java, я решил не играть в лотерею и не тратить время на раскопки в Java‑коде, потому что я хотел сделать это на «реактивном ранце».

Читать далее

Мобильная разработка за неделю #561 (21 — 27 октября)

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели2.6K
В этом выпуске ключевые изменения в UIKit и восстановление удаленных сообщений в Telegram, самые весёлые TODO из Android-фреймворка и короткий путь с Senior-ами, инфляция званий, сравнение доходов App Store и Google Play, Yolo на пятирублёвой монете и многое другое. Подключайтесь!

Читать дальше →

Анализ и оптимизация проблемы задержек и пропуска кадров в анимации загрузки

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели1.1K

На новом устройстве тестировщики заметили баг: при загрузке система сильно фризит, а анимация идет рывками и пропускает кадры, из-за чего она выглядит дерганой и неплавной. Анализ показал, что это вызвано новой функцией в Android, которая активируется только на более свежих версиях системы. Эта проблема отличается от тех, что мы встречали раньше.

Читать далее

Как работать с разрешениями для чтения и записи файлов в Android 13+ на примере React Native

Время на прочтение10 мин
Охват и читатели8.6K

В МойОфис мы разрабатываем iOS- и Android-приложения цифрового рабочего пространства Squadus с помощью кроссплатформенного фреймворка React Native. В функциональность нашего приложения входит загрузка и отправка различных вложений другим пользователям.

В какой-то момент мы получили фидбек, что пользователи с Android не могут отправить медиафайлы и посмотреть превью. Наши доблестные QA-инженеры выяснили, что проблема напрямую связана с тем, какая именно версия Android стоит у пользователей. Сложности начинались с версии 13 — оказалось, что Android добавил новые Permissions для повышения безопасности приложений.

Под катом рассказываю, как работают новые Permissions, как Android рекомендует реализовывать запрос к пользователю, и каким образом наша команда решила проблемы при реализации новых разрешений. Думаю, наш опыт будет интересен специалистам, погруженным в тему Permissions на Android, да и вообще всем React Native и Android разработчикам, так как особенности версионирования разрешений будут жить с нами ещё долго.

Читать далее

Крутить или не крутить?

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели9.2K

В нашем увлекательном путешествии по миру IT, мы сталкиваемся с множеством вызовов и возможностей. Одной из самых обсуждаемых тем сегодня является накрутка опыта. С каждым днем она набирает все большую популярность, и я никогда не мог представить, что эта тема вызовет такой ажиотаж.

Недавно я узнал о сообществе людей, предлагающих легкий способ войти в IT-индустрию. Самым сложным этапом на этом пути считается процесс интервью. Пройдя его, вы получите заветный оффер и работу мечты. Для новичка, который только начинает свой путь, это может показаться идеальным решением.

Читать далее

Основы View и ViewGroup. Создаём интерфейсы в Android-приложениях

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели11K

Всем привет!

Я — Дарья Касьяненко, эксперт Центра непрерывного образования факультета компьютерных наук НИУ ВШЭ.

Сейчас мир Android‑разработки активно меняется, но многие из используемых технологий остаются актуальными, и их стоит знать каждому начинающему разработчику. Мой коллега Даниел Цуркан, эксперт и преподаватель курса «Android‑разработчик на Kotlin» Центра непрерывного образования ФКН, подробно расскажет о компонентах View и ViewGroup, которые лежат в основе построения пользовательских интерфейсов Android‑приложений.

Эта статья станет полезной как для тех, кто только начинает свой путь в Android‑разработке, так и для junior‑разработчиков, которые хотят углубиться в детали создания интерфейсов на базе View и ViewGroup. В статье разберем ключевые особенности, с которыми сталкиваются разработчики при создании пользовательских интерфейсов с использованием View, рассмотрим актуальность этого подхода для разработки визуальной части Android‑приложений, а в качестве наглядного примера — создадим экран авторизации пользователя.

Читать далее

Решение проблемы race condition в Kotlin корутинах

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели13K

Синхронизация корутин в Android имеет огромное значение для обеспечения безопасности и эффективности многопоточности. Коррутины упрощают управление асинхронными задачами, но без должной синхронизации могут возникнуть проблемы, такие как race condition, что приведет к неправильному поведению приложения.

Читать далее

Самые весёлые TODO из Android-фреймворка

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели13K

Привет, меня зовут Абакар и я работаю главным техлидом Android в Альфа-Банке. Сегодня я расскажу про самые забавные тудухи из AOSP на которые мне приходилось натыкаться во время изучения исходников.

Читать далее

Создадим команду Wild Politics вместе

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели864

Здравствуйте, Хабровчане!

Мой предыдущий пост "Как потратить шесть лет и быть невидимкой в Play Market" собрал пусть и не рекордные, но всё-таки 13 тысяч просмотров, благодаря чему в мой пет-проект заглянуло много новых лиц. Я благодарен вам за внимание к игре, отзывы и критику.

Оптимизация. Планируется в самое ближайшее время. Многие вещи в игре делались ещё тогда, когда я только начинал изучать фреймворк Django и в целом веб-разработку. Сейчас опыта у меня прибавилось, и ко многим вещам я возвращаюсь, чтобы переработать их более вдумчиво.

Обучение. По отзывам многих людей, оно обрывается слишком резко, не даёт понимания, чем можно заняться в игре, банально не затягивает. Планирую переработать его так, чтобы игрок в процессе обучения сразу мог прикоснуться к функционалу управления страной, пусть это и будет страна-"заглушка" (никакой реальной политики!), а в конце, проведя по всем аспектам игры, показать итоговое "окно возможностей", где резюмировать всё то, чем уже можно заняться в игре.

Доступность в Play Market. Вероятнее всего, игру не видно в поиске, в первую очередь из-за того, что она находится на стадии пре-регистрации. Также, ранее слабой была ASO-оптимизация страницы игры (буквально мало "ключевых слов" в тексте описания). Полагаю, ситуация изменится с выходом игры в публичный доступ. Но уже сейчас она собрала более 200 заявок на предварительное скачивание.

Прежде чем публиковать игру для "миллиардов пользователей Google Play", я планирую завершить перевод игры на анг

Читать далее

Ближайшие события

Восстанавливаем удалённые сообщения в Telegram

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели286K

Телеграм довольно ответственно относится к конфиденциальности пользователей. В частности, можно удалить любое сообщение в переписке, как у себя, так и у собеседника. И сообщение действительно удалится, у обоих и навсегда. Но есть пара «но».

Читать далее

Как в eXpress достигали мгновенного рендера отправки сообщения: оптимизация локальной базы данных

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели7.3K

Откройте eXpress, и отправьте в чат простое "Привет". Обратите внимание на то, сколько времени прошло между тем, как вы нажали на кнопку "отправить", и тем, как сообщение появилось в чате. Для человеческого глаза отображение отправленного сообщения в чате происходит мгновенно. Это современный стандарт - действия в чате должны происходить максимально быстро. В идеальном случае никаких задержек быть не должно.

Отправка сообщения, тем не менее - это сложная операция, которая требует проделать большой объем работы. Самая существенная её часть - это работа с локальной базой данных. eXpress спроектирован как offline-first, и много данных хранит локально. У одного пользователя могут быть тысячи активных чатов, и десятки/сотни тысяч сообщений, и работа со всеми ними должна оставаться быстрой.

Меня зовут Воронская Дарья, я работаю в Android Core команде eXpress и занимаюсь оптимизацией работы приложения. Я расскажу про подходы, которые мы использовали, чтобы довести скорость отправки и рендера сообщения до того самого идеального результата. 

В этой статье речь пойдет только о работе с локальной базой данных. Оптимизация БД - лишь часть большой работы, мы расскажем про наши решения по оптимизации presentation слоя в других статьях.

Наш стек: Kotlin, Room, Coroutines, WebSocket, OkHttp.

Читать далее

Как потратить шесть лет и быть невидимкой в Play Market

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели43K

Всем привет!

Этот пост в большей степени — рассказ о пути одной идеи к реализации.
И немного — о трудностях, с которыми я сталкиваюсь прямо сейчас, когда вроде бы всё готово — но никто о твоей игре не знает.

Если вкратце: шесть лет трачу вечера на то, чтобы написать собственную игру.
Игра доступна на своём сайте, но в Play Market её не видно.

Читать далее

Забудьте про терминал! Как я избавлялся от рутинных ADB команды с помощью Shortcuts

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели6.9K

До этого года я спокойно пользовался терминалом для установки android приложений на тестовые устройства: каждый раз вручную копировал название файла, выбирал нужную команду из истории терминала, стирал старое название и вставлял новое. Это меня очень раздражало, но я не искал решений.

А ведь кроме установки, есть множество других команд ADB, которые приходится использовать время от времени. Например, отправка фалов на устройство или выгрузка последних логов из logcat на компьютер, для чего тоже нужно было прописывать путь для сохранения файла — очень неудобно и отнимает драгоценное время.

Сегодня попробуем наконец избавиться от рутинных штук, чтобы работалось в кайф, а приложения ставились в два клика.

В конце статьи ссылки на готовые команды 🌚

Читать далее

Мобильная разработка за неделю #560 (14 — 20 октября)

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели3K
В новом дайджесте бажная корзина в Додо Пицце и сложности Combine, улучшение производительности навигации на Android и кодревью “как не войти в айти в 2024”, самые важные пакеты в экосистеме Flutter, 12 маленьких уроков большого приложения для баскетбола, топ быстрорастущих приложений в России в октябре и многое другое. Подключайтесь!

Подписывайтесь на мой Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

Читать дальше →

Как настроить правильное расположение элементов в Android-приложении для арабского языка

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели1.5K

Поддержка языков с направлением текста справа налево (RTL), таких как арабский, — важная часть разработки Android-приложений. C помощью следующих шагов можно легко настроить RTL.

Читать далее

Понимание прогноза глюкозы в AndroidAPS часть 2

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели1.2K

Попробуем развить мысль на счет прогноза глюкозы в AndroidAPS. Ранее в статье я описывал какие прогнозы существуют и в общих чертах описал как принимаются решения. Сейчас уточним и улучшим понимание прогноза глюкозы. Ведь финально нас интересует не прогноз сам по себе, а сколько инсулина на основе всех вводных данных система примет решение нам подать, чтобы отрегулировать глюкозу в крови. Это важно, так как в системе есть несколько прогнозов, а не один единственный и правильный, как можно было бы предположить. Так что давайте начнем решать эту задачу с конца.

Разбирать будем не базовый AndroidAPS от Милоша, а версию от Метью (MTR93600, ссылка на ГитХаб), я же работаю непосредственно вот в этой (ссылка на ГитХаб) версии, которая является измененный вариантом приложения Метью в части прогноза). Идея состоит в том чтобы вывести для отображения самый релевантный прогноз и ввести отдельные коэффициенты для трех типов нагрузок (легкой, средней и тяжелой), а так же отдельный интерфейс для удобного взаимодействия с нагрузками, вывести приложение в часы. Напишите в комментарии, была бы вам такая доработка актуальна? А пока продолжу по теме...

Дисклеймер

Кстати! Эта статья все еще попытка осмысления алгоритма прогнозирования в программе AndroidAPS и предполагает дискуссию. Не стоит воспринимать ее как финальную истину в отношения прогноза. Я стараюсь приводить код и аргументы, которые вы самостоятельно можете оценить и если у вас есть возможность посмотреть код - то и оспорить представленную логику.

Читать далее