Сообщество - Android Developers

Android Developers

102 поста 2 042 подписчика

Популярные теги в сообществе:

84

Честная цена для Android - обновление, длинною в год

Привет, пикабуняне!

Прошел ровно год (и даже чуть больше) с момента, когда последний раз выпускалось обновление для Честной Цены. Давайте смотреть, что интересного добавилось в приложении

Для ЛЛ: Напомню, мы разрабатываем приложение (ваш покорный слуга) и сайт (передаю привет @Stich.626,), а вы в свою очередь можете рассчитывать цены в магазине удобным для вас способом

0 - Что по использованию

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

Также, немаловажно, что в приложении сохраняется практически 100% показатель "без сбоев", ну а еще бы, там нечему ломаться. Те небольшие скачки, что можно видеть на графике, это мои попытки поломать программу, но они не в счет.

1 - Давайте улучшать!

Первым делом давайте взглянем на главный экран ДО обновлений. Так как я сам пользуюсь приложением, меня стало сильно смущать, что основная часть рабочего пространства стала "уезжать" от места ее базирования. То есть некоторые диалоговые она (подсказки, обновления и так далее) засорили стартовый экран, и чтобы начать пользоваться, мне надо все это позакрывать / покликать / поработать пальцем.

Так вот, лишние подсказки были убраны, а те, что остались, сместились вниз и уменьшились по высоте - то есть пользоваться можно сразу, не обращая на них внимание. Также некоторые советы или предупреждения показываются только через Snackbar

До обновления ввод данных был практически во второй половине экрана

2 - Новые андроиды

С выходом обновлений ведроида также было поправлено несколько багов, относящихся к режиму Edge-to-Edge (или по Русски, от края до края). Функционал этой фичи таков, что при свайпу "назад" мы можем увидеть контент, который предшествовал этому экрану.

И если у вас много денег оригинальный Android, то при таком жесте вы увидите рабочий стол. На части смартфонов если не ошибаюсь этот функционал тоже завезли. У меня денег не много, поэтому самый новый пискель у меня только на компьютере.

Так как эта технология работала некорректно, для каждой активности в приложении были внесены правки, и теперь все показывается правильно, а на тех устройствах, которые работают в старом режиме просто переопределен метод @onBackPressed

ДО обновления экран на новых версиях "залезал на статус бар". Сейчас все хорошо

3 - Сравниваем!

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

Опять таки, коротко, и что смутило лично меня:

  • Много места занимают поля с вводом

  • Неудобный ввод в целом

  • Все скачет "хрен пойми куда"

  • Нет четкого визуала сколько можно вообще вводить показателей (установлено не больше пяти), после пятого ввода просто окно просто замирает

  • Ничего нельзя удалить и посчитать заново

И еще. Отдельно приложу картинку, посмотрите ее, и посчитайте, сколько раз указано слово "Сравнение".

Сравнение. Сравнивайте. Сравниваем. Добавить к сравнению.

Выбрал без мата

Выбрал без мата

Короче этот зоопарк надо переделать.

Далее чуть чуть технической части:

  • Изначально заведенные слои были созданы с поддержкой CoordinatorLayout. Это значит, что макет сам управляет поведением элементов внутри, в зависимости от действий (скролл, переключение режимов клавиатур и так далее)

  • Мы этим пользуемся, и разделяем вьюхи друг от друга - расчеты в своем слое, поля ввода в своем. И теперь они координируются, КАРЛ

  • Так как мы все это разграничили, мы можем указать приложению, что надо делать при вызове клавиатуры. Это выполняется с указанием параметра в манифесте android:windowSoftInputMode="adjustResize". Дословно - слой не будет скрываться при вызове клавиатуры, а будет сжиматься на место, необходимое для отображения этой самой клавиатуры

  • Чуть чуть магии, склеиваем поля ввода вместе, чтобы они занимали меньше высоты

  • Еще чуть чуть магии, поправляем визуально слой с расчетами, убираем все лишнее

  • Добавляем функционал удаления последнего элемента, чтобы можно было посчитать заново что то еще

  • Блокируем кнопки, когда количество ввода превышает пять штук. После удаления они снова активны

Ну вот и все. Вы великолепны.

А теперь посмотрим по слайдеру, как это красиво преобразилось:

Как обычно, Было - Стало, с промежуточными фиксациями во время переделок

А еще поля ввода автоматически "перепрыгивают" при вводе, чтобы ваши пальчики не уставали, и все добавляется, поля ввода сами очищаются. Да что это такое вообще

4 - Что дальше

А что дальше, господа и дамы, решать будем все вместе, для этого появилось отдельное окошко. В нем можно:

  • Написать свою идею, отправить по почте, и я заставил себя установить ЯндексПочту на телефон (прости Господи), и я буду все читать. И даже отвечать. Наверное.

  • Посмотреть, что в приоритете на ближайшее время. Эти пункты также расписал

  • Сказать спасибо через Пикабуху посредством покупки мне доширака. Да, так и написано

Отдельно, кстати, насчет последних обновлений, где появилась реклама.

Расскажу также кратко. Когда нам не блокировали ВПН, мы смотрели ролики на Том-Сайте-Который-Нельзя-Называть и вообще гуляли по интернету спокойно, я подумал - буду показывать рекламу вне РФ, это не запрещено. Так как мы сейчас все виртуально "не тут, а там", вы можете иногда встретить такую неприятность.

Что с ней делать? Заходим в настройки (появится через неделю) -> Отключить рекламу. Все. Вы опять великолепны.

Для тех, кто думает что я посыпаю свой доширак красной икрой, вот доход за год с приложения (2026 где то также, плюс минус тыщенка):

Опять таки возвращаясь к тому, что приложение не для получения каких то денег.

Ну вот и все товарищи, ссылки внизу, критика (в комментариях) внизу, кнопка для донатов внизу.

https://www.rustore.ru/catalog/app/ru.oneclickstudio.fairprice

https://play.google.com/store/apps/details?id=ru.oneclickstudio.fairprice

Чао!

Показать полностью 15
6

Сделал общие сады без аккаунтов: сервер не знает ни кто с кем связан, ни что в конверте

Серия Садик Добрых Дел: добрые дела и эмоции ребёнка

Привет!

Я тут уже дважды был с «Садиком Добрых Дел» — это приложение, где ребёнок вечером записывает, что хорошего сегодня сделал, и от этого растёт цветок. Первый раз пришёл за критикой и получил её, второй — отчитался, что починил.

Сейчас третий заход. Я сделал самую большую фичу за всё время — общие сады — и переделал обмен целиком уже после того, как он «работал». Аккаунтов в приложении так и не появилось: сервер не знает ни кто с кем связан, ни что лежит в конверте.

Что за фича. Раньше сад был один и жил на телефоне: ни аккаунтов, ни регистрации, ни сервера вообще. Теперь сады можно связать. Папа видит сад ребёнка, ребёнок — сад папы. И главное: в чужом саду можно записать то, что ты за этим человеком заметил. Родитель пишет «сам заметил, что бабушке тяжело» — и у ребёнка растёт цветок. Прямо при нём, пока они сидят рядом. Ребёнок ничего не нажимал.

Ссылка, чтобы не искать: RuStore.

Сервер, который про людей ничего не знает

Условие, которое я себе поставил: аккаунтов не будет. Ни телефона, ни почты, ни входа. Ребёнок семи лет не должен ничего регистрировать, а я не должен хранить базу детей.

Получилось так. Ключ связи рождается на телефоне того, кто зовёт, и уходит в приглашении — во фрагменте ссылки, после решётки. Фрагмент по устройству сети на сервер не уходит вообще: даже если ссылку открыть в браузере, ключ никуда не отправится.

Из ключа обе стороны считают две разные производные:

идентификатор ящика = sha256(ключ + "sadik-box-id")
токен доступа = sha256(ключ + "sadik-box-token")

Сервер хранит идентификатор открыто, а от токена — только его хеш. То есть он может проверить право на ящик, не зная ни ключа, ни токена, и не может ни притвориться участником, ни прочитать содержимое: внутри лежит шифротекст AES-GCM, ключ от которого есть только у двоих.

Весь сервер — это PUT и GET в почтовый ящик. Он не знает, кто с кем связан, сколько у человека связей и что в конверте. Из этого потом вылезет неожиданное следствие, но об этом ниже.

Что передаётся между телефонами

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

Разрешать конфликты я не стал. Сначала пересчитал, сколько в системе мест, куда пишут двое, и оказалось, что такое место ровно одно: запись, сделанная про другого человека. Цветок, настроение, пересадки пишет только хозяин сада, и спорить там не с кем.

Поэтому передаются теперь не счётчики, а сами записи, и сливаются объединением: порядок доставки не важен, повтор безвреден, «оба написали одновременно» перестаёт быть особым случаем. Счётчики и стадия цветка пересчитываются из записей на месте — они не данные, а следствие.

Свои слова при этом наружу не передаются вовсе. Другой видит, что момент был, и цветок от него вырос, но текста не читает: в списке стоит строка «Момент, о котором можно спросить». Об этом и разговор — приложение задаёт вопрос и не отвечает на него.

Почему не пуши

Хотелось, чтобы сад обновлялся быстро: вся сцена ради того, чтобы цветок вырос при вас. Первая мысль — пуши. Посчитал и передумал.

Чтобы отправить пуш, сервер обязан знать: «в ящик X положили → разбудить устройство D». Это таблица «кто с кем связан» плюс пуш-токен — устойчивый идентификатор телефона. Прямо сейчас сервер не знает ничего подобного и не может сопоставить двух людей. Пуши это ломают, и шифрование содержимого тут не помогает: утечёт граф.

Сделал проще: пока приложение на экране, оно ходит за почтой раз в десять секунд, после минуты тишины — раз в тридцать. Арифметика: три связи, опрос раз в десять секунд — 18 запросов в минуту на человека; сто человек одновременно — 30 запросов в секунду. Для Postgres на маленькой машине это ничто.

Вопрос к вам

Как бы вы доставляли обновление на второй телефон, не заводя аккаунтов и не отдавая серверу граф связей?

Есть ли третий путь, который я не вижу?

Сделал общие сады без аккаунтов: сервер не знает ни кто с кем связан, ни что в конверте
Показать полностью 1
3

Неделю назад вы разнесли моё приложение. Вот что я починил

Серия Садик Добрых Дел: добрые дела и эмоции ребёнка

Привет!

Неделю назад я приносил сюда «Садик Добрых Дел» — приложение, где ребёнок вечером записывает,
что хорошего сегодня сделал, и от этого растёт цветок. Просил критику и получил её.

Пришёл отчитаться: несколько замечаний были по делу, и я их починил.

@OneClickStudio, про клавиатуру

Вы написали, что при вводе доброго дела клавиатура закрывает кнопку «Сохранить», и посоветовали добавить в манифест `android:windowSoftInputMode="adjustResize"`. Я ответил, что контент поднимается через `imePadding`, и «видимо, у вас не сработало».

Я был не прав дважды.

Во-первых, никакого `imePadding` в этой шторке не было вообще. Проверять надо было в коде, а не по памяти.

Во-вторых, совет с манифестом тоже не сработал бы. При `targetSdk 35+` приложение в режиме
edge-to-edge, и потому система не ресайзит окно под клавиатуру. Надо учитывать именно ime padding. То есть баг был настоящий, а чинить его надо было не там, где мы оба думала.

Как починил: шторке заданы инсеты `BottomSheetDefaults.windowInsets.union(WindowInsets.ime)`
— беру максимум, а не сумму, иначе над клавиатурой повисает пустая полоса
в высоту панели навигации. И содержимому добавлен скролл: одного отступа мало. Посчитал на
экране `360×640` — заголовок, готовые фразы, поле и ряд кнопок вместе просят около `416 dp`
при доступных `340`.

Вы же спросили, как менять настроение: выбрал один раз и не понял, как поменять. Это оказалось хуже бага. Настроение меняется тапом по небу, подсказка про это в приложении была — но увидеть ее было сложно, теперь чуть легче. Допом сделал демо прокручивание всех пяти погод.

@TldM7 и @AnsyAgeeva, про графику

«Идея хорошая, графика — говно» и «но графику бы посимпатичнее». Пожалуй, про графику мне напихали больше всего.

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

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

Что поменялось кроме этого

Главное: у взрослого теперь может быть свой сад.

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

Цифра, которой у меня в прошлый раз не было

За неделю карточку в RuStore открыли около 450 раз. Установок с них — 2. Это 0,44% при
магазинной норме 20-30%.

Причём по своим запросам приложение стоит первым: «дневник добрых дел», «добрые дела для
детей», «добрые поступки», «доброта для детей», «настроение ребёнка» — везде первое место. То
есть находят. Открывают. И уходят.

Моя рабочая версия — пустой рейтинг: 0,0 и «Нет оценок» на детском приложении выглядит как
приговор. Но я не уверен, что дело только в нём.

Ссылка: https://www.rustore.ru/catalog/app/com.sadikdobrihdel — в прошлый раз мне справедливо
написали, что зря её не дал.

Одна просьба

Откройте карточку и скажите, на чём вы бы ушли. Не «что улучшить вообще», а
буквально: что первое не понравилось и в какой момент вы решили уйти с карточки приложения в сторе, не устанавливая его.

Показать полностью 7
4

Приложение, где ребёнок растит цветок за добрые дела. Пришёл за критикой

Серия Садик Добрых Дел: добрые дела и эмоции ребёнка

Приветы!

Я андроидщик, давно пишу мобильные приложение и тут решил сделать прилу для общения с моими детьми, но с надеждой на что-то большее.

В конце июня сел делать маленькую штуку на вечер и не смог остановиться: 46 коммитов, 13 700 строк, два с половиной месяца вечеров.

Что получилось. Ребёнок вечером рассказывает, что хорошего он сегодня сделал: помог, поделился, поддержал, убрал за собой. Каждое дело растит цветок. Три дела — цветок расцветает, остаётся в саду навсегда, и можно посадить новое семечко. Ещё можно ткнуть пальцем в небо и отметить настроение — сад отвечает погодой: ясно, облачно, дождь, гроза, туман. Все погоды одинаково красивые, грусть тут не хуже радости, и никто не спрашивает «а почему тебе грустно».

Что внутри: Compose Multiplatform, всё хранится локально, без аккаунтов, без интернета, без рекламы и без единой кнопки «купить». Данные ребёнка никуда не утекают, потому что утекать им некуда — бэкенда нет вообще. Только крашлитику подключил, чтобы сбои ловить.

Теперь неприятная часть.

В магазине приложение с конца лета. Установок — кот наплакал (меньше сотни). Отзывов — ноль. Ни одного, даже злого.

Платная реклама дала ориентир около 1000 руб за одну установку. 10 тыс потратил для пробы и увидел как я просто потратил эти деньги без пользы. Значит, пора нести моё приложение на публичный суд.

Заработало приложение ровно 0 ₽: монетизации в нём нет никакой.

На выходных я сел и посчитал, что будет, если монетизацию всё-таки прикрутить — родительский донат, никаких покупок и цен в детском экране. При честных допущениях (1,5% платящих, 400 ₽ в год с платящего) одна установка приносит около 6 ₽. Против 1000 ₽ за платную установку это окупаемость в полпроцента. То есть реклама тут не «дороговата», она невозможна в принципе: чтобы сходилось, установка должна стоить дешевле пятёрки.

Раз рекламу закупать бессмысленно, остаётся идти к живым людям и получать по шапке. Вот, пришёл.

За чем конкретно — можно сразу по всем трём:

1. Не выращиваю ли я лицемерие. Самый честный аргумент против моего приложения: ребёнок начнёт делать добро ради цветка, а не потому что так надо. Я специально не даю ни баллов, ни рейтингов, ни соревнования с другими, и цветок растёт от любой мелочи - но осадок остается. Особенно интересно мнение тех, кто реально работает с детьми.

2. Кому это на самом деле нужно — ребёнку или родителю. Есть подозрение, что настоящий пользователь тут взрослый. Это ему нужен повод вечером поговорить о чём-то кроме «как дела в школе — нормально».

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

Ссылку не даю, чтобы пост не выглядел рекламой: приложение бесплатное, без рекламы и без покупок, называется «Садик Добрых Дел», лежит в RuStore. Скажете, что ссылка уместна — положу в комментарии.

Напихайте в панамку, за этим и пришёл. Два месяца я разговаривал в основном с компилятором, а он на любой вопрос отвечает «BUILD SUCCESSFUL».

Показать полностью 4
3

Сделал бесплатное приложение LangDang для практики речи на Android

Привет! Я сделал LangDang — бесплатное приложение для изучения языков, которое разместил в RuStore.

Это мой небольшой проект про регулярную практику речи. Хотелось собрать простой инструмент, к которому можно возвращаться каждый день без лишней сложности. В разработке особенно интересно было соединить Android, работу с текстом и задачу, которая действительно пригодится тем, кто учит язык.

Я не обещаю волшебную кнопку и идеальный метод для всех. LangDang — живой проект, который я продолжаю развивать и улучшать по обратной связи. Если вы изучаете языки или сами делаете приложения, буду рад честным отзывам: что удобно, чего не хватает и какие сценарии практики речи стоит добавить.

Скачать приложение в RuStore: https://www.rustore.ru/catalog/app/com.langdang.app

Сайт проекта: https://www.langdang.ru

5

Сделал неоновую головоломку для Android — ищу тестеров на 14 дней

Привет, Пикабу! Я один делаю мобильную головоломку GLAZE BYTE. В ней нужно поворачивать всё игровое поле, менять направление гравитации и собирать цветные цепочки. Хотелось, чтобы каждое действие ощущалось физически: объёмные софт-тач «печеньки», светящаяся начинка, частицы, сочные звуки и короткие попытки в духе «ещё один заход — и всё».

Сейчас у игры открыт обязательный закрытый тест Google Play. Нужны живые игроки с Android, которые смогут оставить игру в тесте на 14 дней и запускать её несколько раз. Особенно важны честные впечатления от первых пяти минут, понятности управления, сложности и производительности.

Как присоединиться:

1. Вступить в группу с Google-аккаунта, к

оторый используется на телефоне:

https://groups.google.com/g/testers-community

2. Тем же аккаунтом открыть страницу теста и нажать «Стать тестировщиком»:

https://play.google.com/apps/testing/com.soyerstudio.pulse

3. Установить GLAZE BYTE из Google Play и поиграть.

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

Показать полностью 2
8

Гугл хочет 20 тестеров на 14 дней чтобы пустить моё приложение в Play. Ищу

Привет. Я один пилю одно приложение для андроида, PhotoEda — фоткаешь тарелку, оно считает калории и БЖУ. В RuStore лежит, работает. Хочу выложить и в Google Play, и вот тут затык.

Сразу: это моё приложение, разработчик я. Сюда пришёл не рекламировать, а реально просить помощи, ниже объясню.

В 2024 Гугл ввёл прикольное правило для новых разрабов: пока не прогонишь закрытый тест на 20 живых юзерах в течение 14 дней подряд — в открытый Play не пустят. Причём гугл смотрит не «опт-инулся и забил», а на реальную активность, DAU. Без этого Console тупо не даёт нажать кнопку «опубликовать». 20 живых тестеров я нигде не возьму. Соцсетей у проекта нет, бюджета на рекламу нет, делаю один. Поэтому пишу.

Про точность. Прогнал бенч на Nutrition5k — это открытый датасет от гугла, 195 фото блюд с реально взвешенными граммами и калориями (там еду на весах перед съёмкой взвешивали). Лучшая модель из того что я тестил — GPT-5.5, в массе ошибается на ~18%, в калориях на ~28%. Это конечно хуже кухонных весов. Но честно лучше чем «прикинул на глаз», у меня в том числе.

Что норм работает: простые блюда — тарелка пасты, мясо с гарниром, фрукты, тосты, омлет. Внутри есть дневник по дням, график веса, цели по калориям/БЖУ.

Что НЕ работает (для честности): многослойные блюда вроде оливье — путается в составе и считает не пойми что. Большие порции без референса размера (рука,

монета в кадре) занижает — видит «маленькую тарелку», а это была глубокая миска. В тёмном свете путает ингредиенты. Жидкости в стакане — мимо.

Кого ищу:

— андроид, хоть какой современный, лучше версии 9+

— готов 14 дней реально фоткать что ешь, хотя бы 1-2 раза в день. Не «опт-ин и в дальний ящик» — гугл это видит, и неактивный тестер мне не помогает

— готов написать внутри приложения если что-то отвалится, иначе я не починю

Что взамен:

— 2 месяца премиума бесплатно. После релиза тариф будет платным

— прямая связь со мной. Фичи которые тестеры реально просят — внедряю (если в рамках разумного)

Как присоединиться: пиши в личку Gmail (тот, на который у тебя стоит Google Play) и версию андроида. Я добавлю в гугл и скину ссылку для скачивания с гугл.

Это моё первое приложение и первый пост на Пикабу, так что если что не так — не серчайте.

Спасибо если поможете.

#моё #разработка #android #калории #похудение #нейросети

Показать полностью

Вы ж программисты...

А сделайте кто-нибудь приложение для Android, которое будет считать, какой картой выгоднее оплатить покупку для получения максимального кэшбэка?!. Условно 1,5% без округлений или 2% с округлением до 100 рублей покупки. Естественно чтобы можно было настроить условия, а на фронте чтобы ввести только сумму покупки...

Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества