Как я использовал ChatGPT, чтобы создать музыкальный плеер на Java и монетизировать разработку

46

Этот текст написан в Сообществе, в нем сохранены авторский стиль и орфография

Цели и задачи

У меня было несколько телефонов, и стандартные приложения для прослушивания музыки в них оказались перегружены лишними функциями, разделами, рекламой и подписками. Было неудобно слушать музыку, сохранённую в самом телефоне. Зная начальные основы в языках программирования (незаконченный онлайн-курс по Java), я задался целью создать свой музыкальный плеер — с теми функциями, которые нужны именно мне, и без лишнего хлама.

Изначально разработка велась на модели GPT-4o. Это создавало определённые сложности, так как она не самая умная. Но уже за несколько часов у меня был готовый плеер с основными функциями: прослушиванием треков, перемоткой, перелистыванием треков и фоновым воспроизведением музыки из уведомлений. Затем появилась более умная модель GPT-o1, и плеер обрёл возможность добавлять треки в избранный плейлист. Дизайн оставлял желать лучшего, но даже этому я был рад.

Затем я случайно узнал о приложении Cursor и решил его попробовать. Интуитивно догадался открыть папку проекта Android Studio через это приложение — и случилось чудо: нейросеть увидела весь мой проект и начала предлагать улучшения. Я просто соглашался с изменениями, и они автоматически вносились в проект. Иногда возникали ошибки, я отправлял их в чат, затем снова соглашался с изменениями, и ошибки исправлялись. Больше не нужно было в большинстве случаев полностью копировать код и просить писать целиком методы или классы (хотя иногда всё равно приходится). Стоит отметить, что такой способ повышает риск дублирования кода и даже целых классов, так как Cursor создает их мгновенно.

У меня быстро появились иконки элементов приложения, созданные векторной графикой, а также светлая и тёмная темы. Появилась возможность добавлять песни в созданные плейлисты и создавать неограниченное количество плейлистов. Затем я добавил эквалайзер с кучей пресетов и мини-плеер с приятной анимацией волны при воспроизведении. Реализовал возможность ставить трек на рингтон, предварительно обрезав его, как мне нужно. Внедрил режим сна, чтобы плеер сам выключался в промежутке от 15 минут до 2 часов.

Добавил локализацию на английском и китайском языках. Теперь, если приложение скачивается и системный язык на телефоне — китайский, то интерфейс и название приложения автоматически отображаются на китайском языке (то же самое с английской и русской локализацией). Это особенно полезно, так как я выложил приложение «Плеер для музыки» в AppGallery и на RuStore. Также в приложении я реализовал возможность делиться треками с друзьями, теперь удобно перекидывать треки с телефона на телефон.

В общем, получилось реализовать даже больше того, что изначально задумывал, и добиться стабильной работы приложения. Теперь оно выглядит более профессионально, и уже не скажешь, что создал его не программист. На RuStore «Плеер для музыки» скачали более 2 000 раз. Последний положительный отзыв после обновлений говорит о том, что всё сделано правильно и плеер нравится не только мне.

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

Результаты

В результате, приложение получилось просто отличным. Я сам активно слушаю в нем треки, создавая плейлисты в дорогу и при занятии в спорт зале. Особенно часто пользуюсь функциями «поделиться треком», таймером сна, установкой и обрезкой трека на рингтон и эквалайзером.

Плюсы и минусы чат-бота

Плюсов огромное количество. Без чат-бота я бы не смог так быстро и качественно создать приложение и, скорее всего, даже не стал бы начинать. Но есть и минусы: часто приходится исправлять ошибки, и иногда он неправильно понимает задачу, что усложняет разработку. Порой приходится начинать с нуля. Однако очень выручает копирование папки с проектом: тогда можно начать с той точки, где проект был на нужной стадии разработки.

Советы

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

Надеюсь, статья была полезной! Спасибо, что дочитали!

  • МаксимНесколько рублей в день — реально рублей или тысяч рублей?0
  • РоманМаксим, реально рублей, а не тысяч.0
  • МаксимРоман, ну кстати это круто. Вашим продуктом пользуются2
  • РоманМаксим, согласен. По сути плеер только несколько дней назад стал стабильным и более функциональным. Поэтому и создал его с разной локализацией. Только со временем узнаю, скачивают его в других странах через AppGallary или нет. Первое китайское название было занято, пришлось придумывать новое. Значит у них своих плееров полно.)0
  • Boris Köln"очень выручает копирование папки с проектом: тогда можно начать с той точки, где проект был на нужной стадии разработки" Научитесь пользоваться Git18
  • РоманBoris, обязательно научусь, спасибо.1
  • Илья С.Лол, а я тоже буквально вчера закончил делать музыкальный плеер на сайте (на JavaScript с помощью нейронок) 1. Кнопки (назад ¦ воспроизведение ¦ вперёд) 2. Background-color меняется в зависимости от цвета обложки 3. Регулировка громкости: зажал ЛКМ на обложке, крутишь вверх или вниз (визуально появляется кружок заполняющий обложку с процентами; на 0 обложка становится чёрно-белой) 4. Проблема одна осталась -- перемотка. Она не работает никак. Сколько бы я методов не перепробовал и сколько бы я логов не понаставил. Когда на progress-bar кликаешь, трек перезагружается. Хотя время отображается, когда наводишь.0
  • Илья С.Boris, в lmarena появился repochat, который позволяет скинуть ссылку на любой репозиторий github и тогда нейронки получат доступ ко всем файлами проекта. Очень удобная штука. Можно начать с того места, где остановился. Я теперь вообще не плачу деньги за LLM и не имею никаких лимитов в запросах или количестве символов.1
  • Илья С.О, вы вот пишите про Cursor. Тема интересная. Я изучал ещё 6 нейронок, которые позволяют работать с ними прям в IDE. Типа Devika, Open Hands, ещё что-то (щас уже не вспомню названия). Они все в основном платные. Есть у кого-то пробный период. И только 1 нейронка бесплатная. Так вот, мне всегда было интересно, может ли эта или другая нейронка открыть папку уже готового проекта? А не начинать всю работу с нуля. Ибо я всё ещё по старинке общаюсь с LLM: через чат. И код скидываю через чат. Вот так всё неудобно, да.0
  • Виктор ПлюснинИнтересно, как это у современных человеков получается сочетать в одном не особо длинном абзаце «качественно создать приложение» и «часто приходится исправлять ошибки»...4
  • РоманВиктор, сейчас ошибок в плеере нет. Я всё, что замечал, сразу старался исправить. На это ушло время, можно судить по истории версий. Отсутствия ошибок и стабильной работы плеера удалось достичь путем исправления выявленных багов в ходе тестирования. В ходе добавления новых функций, появляются новые баги. Работа с ИИ - это в основном исправление ошибок. Это не противоречит итоговому хорошему результату.1
  • РоманИлья, тоже часто сталкивался с тем, что нейросеть по кругу водит и ни в какую не даёт что-то исправить. Я тогда этот вопрос задавал другим нейросетям и в итоге решение находилось обычно.0
  • РоманИлья, у Cursor есть бесплатный период. Я довольно много успел в нём поработать. Потом удалил аккаунт и зарегался повторно - опять получил бесплатный период. А третий раз так сделать не получилось, видимо, пофиксили. Пришлось 20 баксов отдать за подписку. Я не мог остановиться, так как придумывал логическую игру с числами. Игра объединила логику 3 в ряд и 2048. Уже кстати выложена она "Магия чисел." Вот Cursor очень круто помог с анимациями в игре.0
  • Panzer KaiserТакие вот чатомамкины "программисты" и заху...дожат или скайнет или ядерные ракеты с неба всем на радость. Пироги должен печь пирожник, а сапоги точать - сапожник.0
  • Panzer KaiserРоман, смех - это хорошо. Но еще лучше было бы понимание того, что строительство дома без фундамента в технических науках обязательно закончится его развалом. Это музыку или картины можно писать будучи безграмотным. С программированием так не выйдет. Чем большими костылями будут закрываться костыли предыдущие...2
  • РоманPanzer, практика показывает, что приложение созданное с помощью ИИ в разы стабильнее приложений, созданных не очень умелыми программистами. Достаточно почитать комментарии к большинству приложений. Большинство делают их с кучей багов, вставляют рекламу и забрасывают. А ИИ мотивирует все до последнего бага исправить. Я создал уже достаточно много приложений и уже могу делать такие выводы. Вот только ИИ тоже нужно правильно использовать, так как все относительно и абсолютной истины в этом вопросе нет.0
  • Quirky QuokkaПогодите, правильно ли я понял, что автора раздражала реклама в плеере, покупать лицензию он не хотел, но потом создал свой плеер, запихнул туда рекламу и теперь монетизирует его?10
  • Михаил ЧекановСогласен, приходится начинать сначала, постоянно. И надо бэкапить. Потому что такого наворотит, что ни я, ни Ai понять не можем, почему не работает и так по кругу 😁1
  • РоманМихаил, ничто не вечно, кроме ошибок ИИ.)1
  • MaEdВот поэтому ИИ заменит программистов0
  • Боливар Ди ГризMaEd, ИИ может заменить разве что мамкиных эникейщиков, которые делают какие-то элементарные приложения. В реальных крупных проектах всё куда сложнее.5
  • Розарио АгроСпасибо, не куплю 😆0
  • ДенисЭто всё замечательно, но я до сих пор не могу понять. Неужели в f-droid и вообще в open-source не нашлось ни одного подходящего плеера? Ведь там нет рекламы, но при этом есть возможность что-то поменять, предложить это изменение самому разработчику. Я понимаю, когда используется проприетарный софт с кучей рекламы за неимением альтернативны… но плеер? Кстати, в некоторых смартфонах (например, Samsung) есть и свой неплохой стоковый плеер, его тоже можно использовать1
  • РоманДенис, сама идея создать что-то свое уже очень сильная мотивация. Когда я начал создавать у меня был хуавей и стандартный плеер там совсем уж плох. Заходишь в него и сразу предлагаются подписки непонятные с бесплатным периодом. Куча хлама, а свои песни ещё нужно поискать. Сейчас у меня самсунг. Согласен, что в нем плеер неплохой, но не забрасывать же из-за этого свой труд.0
  • Влад БеляковА почему не kotlin/swift в качестве языка программирования?0
  • РоманВлад, на java проще, так как знаю базу. Но в Cursor сейчас рисовалку делаю на kotlin+java. Сегодня, кстати, доделал рисовалку и выложил. Вроде получилось круто (на мой взгляд) - все, что задумывал реализовал.0
  • РоманВлад, кстати про рисовалку на котлине. Сегодня испытывал её и нарисовал такую картину.0
  • Panzer KaiserРоман, если бы это было так бизнес бы использовал ИИ, а не людей. Ну и относительно ИИ - это сборщик инфы по инету. Включая помойную и дезинформацию( 99.9% коей в интернете). Думать он не умеет и даже инфу предоставлять не умеет. Попроси его текст нужного закона, к примеру, и он вместо того, чтобы найти ответ из оф.источника ответ выдумает. Толк от него есть конечно (если ты уже программист с фундаментальным знаниями, а не волшебник тяп-ляп), но верить ему нельзя.0
  • РоманPanzer, можно размышлять и быть философом сколько угодно. А можно брать и делать то, что нравится и не смотреть на других. В итоге в выигрывает тот, кто делает и не боится браться за то, чего поначалу не умеет. Может не сразу, но тот, кто делает, будет совершенствовать свои навыки. А тот, кто размышляет и находит причину для бездействия никогда не будет двигать прогресс или просто обретать новые умения.0
  • Смбат Алиханянкруто)1
  • мумитрольВсё было прекрасно до момента "выложил в стор и добавил рекламу для монетизации".0
  • Андрей АстафьевХех .. все приложения когда так начинались - "без всякой ненужной шелухи ..", а потом начинается холивар - кто первый напишет свою ОС: Nero или ACDSee3
  • TogamyПользуюсь аимпом везде, бесплатный плеер.1
  • Panzer KaiserРоман, это к чему? Я лично ИИ юзаю, но аккуратно. Ибо врун он еще тот. Но мне распознать его ложь помогают фундаментальные знания в тех областях, где я его задействую. Я не понимаю каким образом его используют профаны. Ошибка выжившего + удача 99лвл? По моему только так. И научиться ничему хорошему нельзя без ревьюинга и контроля на начальных этапах. Нужен ментор. Учитель. Будь то разработка, музыка или еще что. Переучивать же потом.0
  • РоманPanzer, мне не требуется истина в последней инстанции, чтобы разработать работающее приложение, которое предоставляет необходимые функции. Поэтому для кого ваши комментарии мне тоже непонятно. И также непонятен ваш мотив, с какой целью пытаетесь переубедить меня заниматься тем, что нравится и что я делаю с каждым разом все лучше? Вы останетесь в итоге при своём мнении, а я при своём. К чему тогда этот бессмысленный спор?0
  • РоманTogamy, хорошо, что есть много предложений и вариантов, что повышает свободу выбора пользователей.0
  • Panzer KaiserРоман, я вас не пытался переубедить. Вы свои фантазии и домыслы выдаете за мои слова. Не надо так делать. Истины же вообще не существует.1
  • РоманPanzer, рад, что мы друг друга в итоге поняли. Согласен, что абсолютной истины в подобных вопросах нет.0
  • Alex Vetrov"стандартные приложения для прослушивания музыки в них оказались перегружены лишними функциями, разделами, рекламой и подписками" "я задался целью научиться монетизировать приложение с помощью рекламы" ты хотел бороться со злом, а в итоге примкнул к нему. и вот у нас есть ещё один плеер со стандартным набором функций и рекламой.2
  • РоманAlex, такова жизнь. Достигнув одной цели, ставишь новую. Раньше на мне зарабатывали, показывая рекламу, а теперь я, хоть и копейки. А статья призвана показать пример, что так может попробовать каждый. Надеюсь, что кого-то она вдохновит и даст толчок к развитию.0
  • Александр СавушкинБред. Создал ещё один велосипед. Никогда кастомный плеер не будет лучше стандартного плеера Sony или iPhone, хотя бы даже потому, что, к примеру у Sony, есть аппаратная поддержка DSD. Ну и кастомные плееры ушли в прошлое с развитием стриминговых сервисов.0
  • РоманАлександр, в статье специально есть скриншот статистики скачиваний. Если он никому не нужен, зачем люди им пользуются? Если он вам не нужен, не вопрос. Но у каждого человека своё мнение и свои интересы. Да и смысл статьи совсем не в плеере, а в том, что каждый при желании может, следуя инструкциям ИИ, воплощать свои идеи и искать способ их монетизировать.0