...

пятница, 11 июля 2014 г.

Android last.fm скробблер WAIL Beta теперь Open Source

Привет. Примерно полгода назад я запилил Android приложение для скробблинга проигрываемой в разных плеерах музыки в last.fm.

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


Я пишу этот пост на Хабр с небольшой надеждой на то, что здесь есть люди, которым было бы интересно развивать WAIL дальше, добавлять новые фичи, фиксить баги и просто участвовать в оупен-сорс проекте Android приложения :)


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


Скриншоты для поддержания интереса


Кратко о возможностях WAIL:



  • Перехват событий (броадкаст интентов) о проигрывании музыки из различных плееров и скробблинг этой информации в last.fm

  • Обновление #nowplaying на last.fm

  • Оффлайн работа (когда появится доступ к сети — WAIL отправит информацию в last.fm)

  • Минималистичный UI в Holo стиле (хотя на Android L тоже неплохо смотрится)

  • Возможность звуковых уведомлений о скробблинге трека или о пропуске трека (если по различным условиям трек игнорируется приложением)

  • Список обработанных треков

  • И еще по мелочи :)


Еще немного скриншотов:



Теперь про архитектуру приложения для тех, кому интересно будет покопаться внутри



  • WAIL — What am I listening

  • 1) Главная часть WAIL — BroadCastRecevierы, которые ловят интенты от музыкальных приложений

  • 2) Вторая главная часть WAIL — WAILService, которому передают информацию о треках, он уже решает что с ними делать — скробблить, обновить #nowplaying и прочее

  • 3) Внутренняя SQLite база данных, в частности TracksDBHelper, сюда WAIL записывает обработанные треки, соответственно, эта БД позволяет работать оффлайн. WAILService периодически проходится по этой информации и отправляет её в last.fm

  • 4) Ну и собственно UI: Все построено на фрагментах, есть поддержка верстки для планшетов


Что в приоритете по фичам



  • Поддержка RemoteControllerClient — это API для медиаплееров, гораздо лучше, чем обработка интентов т.к. на него есть хоть какой-то стандарт. Кстати, ваш экран блокировки использует именно этот API для отображения и управления проигрываемой музыкой. У меня есть кое-какие наработки по этому направлению, но все осложняется практически полным отсутствием документации от гугла по этой теме. Суть поддержки RemoteControllerClient в том, что WAIL автоматически сможет обрабатывать ВСЕ музыкальные плееры, которые используют этот API

  • Вывод текущего обрабатываемого трека на главном экране — многие пользователи не понимают, обрабатывает ли сейчас WAIL какой-то трек или нет… В общем, фича нужная и полезная

  • Вывод уведомлений о скробблинге, обновлении #nowplaying в статус бар

  • Настройки для отключения скробблинга в зависимости от типа подключения к сети (мобильные сети/wifi)

  • Можете свободно предлагать свои пожелания в issues на гитхабе


Кому может быть интересно покопаться в WAIL





  • Опытным Android разработчикам, которые хотят показать свое мастерство в Open Source проекте :)

  • Начинающим Android разработчикам, которым я предлагаю делать небольшие фиксы/фичи и потихонько осваивать Android development на реальной практике с выходом в Google Play к реальным пользователям

  • Тем пользователям WAIL, которые по совместительству являются Android или Java разработчиками и хотят что-то изменить в приложении :)


Если вы решили помочь WAIL




1) Во-первых — большое спасибо, как от меня, так и от пользователей :)

2) Во-вторых, я написал небольшое wiki на тему стайлгайдов по коммитам, по git flow и стайлгайдам по исходникам и ресурсам проекта, пожалуйста, прочитайте его, оно коротенькое.


3) В-третьих — да, успешно смерженные пулл-реквесты от вас попадут в Google Play!


4) Я буду мейтенером проекта, периодически проверяя пулл-реквесты, буду помогать проекту как разработчик, когда будет время. Релизы в Google Play будут делаться по мере развития проекта, я бы хотел делать частые релизы, чтобы быстро получать фидбек от пользователей и выстраивать планы на следующие релизы


5) Если хотите начать с легкого — придумайте небольшое issue, например фикс иконки или перевод на понятный вам язык, заведите issue на гитхабе, потом сделайте пулл-реквест с фиксом/фичей и всё :)


Всем спасибо за внимание, надеюсь, WAIL будет развиваться и жить дальше :)


Ссылка на гитхаб WAIL Beta — Android last.fm scrobbler


P.S.

Если вы посмотрите гитхаб, вы увидите, что там очень мало коммитов. Это связанно с тем, что в приватном репозитории лежали ключи с паролями, которыми я подписываю приложения (фейл, согласен), я решил не доверять git filter-branch и bfg и просто создал новый репозиторий перенеся исходники и убрав приватные данные, около ~250 коммитов потеряно.

Кроме того, в приложении опубликованы ключи к last.fm api, да на гитхабе. Но блин, декомпилировать Android приложение и достать все эти данные совсем не сложно, да и усложнять разработку другим людям тем, что им придется регистрироваться на last.fm в разделе разработчиков, получать ключи я бы не хотел, пожалуйста, не используйте их для плохих намерений :)


Пост не в «Я пиарюсь» по причине того что: 1) Проект оупен-сорсный 2) Он абсолютно не коммерческий, сделан с душой для тех, кому приложение полезно 3) Если модераторы Хабра посчитают, что пост надо перенести в «Я пиарюсь» — ок


P.P.S

Естественно, код не идеальный… Сейчас я бы переписал половину, но в целом, архитектура гибкая и расширяемая :)


Готов ответить на вопросы в комментариях к статье.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий