160*600

Новости сегодня на DirectAdvert

Новости сегодня от Adwile

Актуальные новости сегодня от ValueImpression.com


Опубликовать свою новость бесплатно - сейчас


<
>

Умное музыкальное радио, не требующее постоянного Интернет–соединения

D3.ru 

https://hsto.org/webt/gw/cx/_x/gwcx_xfnigailrw3e9221n3rpes.jpeg

Во время работы и прогулок я часто слушаю фоновую музыку. Раньше я использовал интернет радио под названием Jango, которое меня почти всем устраивало, за исключением следующих вещей:

недоступность во время почти ежедневных прогулок по лесу (т.е. без подключения к Интернету).
Необходимость переключения между разными каналами, чтобы сменить жанр музыки. Другими словами, у слушателя Jango мало шансов открывать для себя новые музыкальные жанры.

Однажды в голову пришла идея мобильного приложения для прослушивания музыки, которое большую часть времени могло бы работать без Интернета (т.е. кэшировало бы музыку) с автоматическим определением музыкальных пристрастий пользователя. Ничего подобного я не видел (может, просто плохо искал?), поэтому решил реализовать самостоятельно. Сейчас, после нескольких месяцев кодирования в свободное от основной работы время я опубликовал первую, ещё очень сырую, но уже достаточно рабочую версию Android–приложения.

Хотелось реализовать приложение с очень простым и интуитивным интерфейсом (по–сути, только с двумя кнопками: "pause" и "skip"), но с достаточно продвинутой внутренней логикой для анализа музыкальных предпочтений (на основе сбора статистики о продолжительности прослушивания треков до пропуска) и кэширования треков. Поскольку не хотелось дублировать логику для разных платформ, было решено её реализовать на C++ (являющимся "общим знаменателем" для iOS и Android).

Для хранения метаданных о треках, а также пользовательских настроек я выбрал SQLite. Файлы обложек альбомов и музыкальных треков хранятся в трёхуровневом дереве директорий на основе хеша (подобно тому, как это устроено в Git).

Размер кэша выбрал 512 MiB (эти и любые другие цифры, разумеется, могут конфигурироваться). Логика ротации треков следующая: за одну итерацию обновления закачивается по 20 треков. После того, как пользователь как минимум дважды прослушал каждый трек инициируется новое обновление. Удаляются треки, у которых среднее время прослушивания ниже заданного предела, и с сервера загружаются метаданные новых треков, после чего начинается их скачивание.

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

Будучи опытным C++–разработчиком, я не испытал особых трудностей в реализации описанной выше логики (хотя в реальности она несколько более сложная). Однако, не имея опыта написания приложений под Android, мне пришлось затратить много времени и усилий на реализацию соответствующего программного слоя (особенно UI). Уверен, что многие вещи сейчас реализованы не самым лучшим образом.

Android–обёртку я решил писать на Kotlin. В самом деле, Java не сулила никаких преимуществ, ведь всё равно пришлось бы возиться с JNI (в iOS ситуация будет другая, там Objective C гораздо удобнее Swift по части интеграции с нативным кодом основной логики).

Для загрузки JSON–метаданных я использовал Fuel, а для загрузки файлов — Fetch (был удивлён, что Fuel не умеет эффективно скачивать файлы). Кстати, ко второй библиотеке у меня есть претензии по стабильности работы.

Серверный код был написан на Golang и использует PostgreSQL через reform. Текущая база метаданных была построена путём индексирования Free Music Archive, в будущем планирую проиндексировать и другие открытые источники. Треки на сервере пока не хранятся для экономии места (экономлю на хостинге), а напрямую ссылаются на хранилище источника.

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

Буду рад, если попробуете моё приложение. Вдруг вам понравится. Наверняка во время использования вы столкнётесь с багами (программа пока сырая). Скорость их исправления будет напрямую зависеть от востребованности моей работы.

Написал ababo на android.d3.ru / комментировать

Читайте на 123ru.net

Другие проекты от 123ru.net



Архангельск

Территорию у метро «Бульвар Генерала Карбышева» ждёт масштабное озеленение



Здоровье

Международный день безопасности пациентов






Новости 24 часа

В Подмосковье сотрудники Росгвардии провели встречу со студентами финансового университета



Game News

Эти игры настолько сложны, что доведут вас до безумия



Москва

Росгвардия обеспечила безопасность футбольного матча в Дагестане



News Every Day

Frustrated Hamilton had to "yank" steering wheel in Azerbaijan GP



Настроение

"Это будет бесконечный кишлак". Мигранты почуяли волю. Россия готовит 33 ответных удара



Москва

В Петербурге снесут два жилых дома для строительства путей ВСМ



PR time

Орган в Планетарии на Halloween



Москва

Спектакль "Борис Годунов" открывает оперный сезон в Улан-Удэ



WTA

Кудерметова вышла во второй круг турнира WTA в Сеуле



Москва

Соцфонд проиндексирует пенсии работающим пенсионерам в феврале



Сергей Собянин

Собянин: Гранты города помогают НКО в реализации социально значимых проектов



Симферополь

Презентация экстравагантного учебника по журналистике прошла в Крыму



Москва

Пластический хирург Александр Вдовин: мифы вокруг операции по удалению комков Биша



Москва

Сергей Собянин: Стремимся быть самыми лучшими по всем направлениям



Москва

Фестиваль «Большая сцена» приглашает к участию талантливых людей со всей России



Другие популярные новости дня сегодня


123ru.net — быстрее, чем Я..., самые свежие и актуальные новости Вашего города — каждый день, каждый час с ежеминутным обновлением! Мгновенная публикация на языке оригинала, без модерации и без купюр в разделе Пользователи сайта 123ru.net.

Как добавить свои новости в наши трансляции? Очень просто. Достаточно отправить заявку на наш электронный адрес mail@29ru.net с указанием адреса Вашей ленты новостей в формате RSS или подать заявку на включение Вашего сайта в наш каталог через форму. После модерации заявки в течении 24 часов Ваша лента новостей начнёт транслироваться в разделе Вашего города. Все новости в нашей ленте новостей отсортированы поминутно по времени публикации, которое указано напротив каждой новости справа также как и прямая ссылка на источник информации. Если у Вас есть интересные фото Вашего города или других населённых пунктов Вашего региона мы также готовы опубликовать их в разделе Вашего города в нашем каталоге региональных сайтов, который на сегодняшний день является самым большим региональным ресурсом, охватывающим все города не только России и Украины, но ещё и Белоруссии и Абхазии. Прислать фото можно здесь. Оперативно разместить свою новость в Вашем городе можно самостоятельно через форму.



Новости 24/7 Все города России




Загрузка...


Топ 10 новостей последнего часа






Персональные новости

123ru.net — ежедневник главных новостей Вашего города и Вашего региона. 123ru.net - новости в деталях, свежий, незамыленный образ событий дня, аналитика минувших событий, прогнозы на будущее и непредвзятый взгляд на настоящее, как всегда, оперативно, честно, без купюр и цензуры каждый час, семь дней в неделю, 24 часа в сутки. Ещё больше местных городских новостей Вашего города — на порталах News-Life.pro и News24.pro. Полная лента региональных новостей на этот час — здесь. Самые свежие и популярные публикации событий в России и в мире сегодня - в ТОП-100 и на сайте Russia24.pro. С 2017 года проект 123ru.net стал мультиязычным и расширил свою аудиторию в мировом пространстве. Теперь нас читает не только русскоязычная аудитория и жители бывшего СССР, но и весь современный мир. 123ru.net - мир новостей без границ и цензуры в режиме реального времени. Каждую минуту - 123 самые горячие новости из городов и регионов. С нами Вы никогда не пропустите главное. А самым главным во все века остаётся "время" - наше и Ваше (у каждого - оно своё). Время - бесценно! Берегите и цените время. Здесь и сейчас — знакомства на 123ru.net. . Разместить свою новость локально в любом городе (и даже, на любом языке мира) можно ежесекундно (совершенно бесплатно) с мгновенной публикацией (без цензуры и модерации) самостоятельно - здесь.



Загрузка...

Загрузка...

Экология в России и мире
Москва

На севере Москвы жители стали дежурить по ночам из-за незаконной вырубки деревьев





Путин в России и мире
Москва

Песков: Путин выступит на Российской энергетической неделе


Лукашенко в Беларуси и мире
Минск

Лукашенко захотел разочаровать международных наблюдателей




123ru.netмеждународная интерактивная информационная сеть (ежеминутные новости с ежедневным интелектуальным архивом). Только у нас — все главные новости дня без политической цензуры. "123 Новости" — абсолютно все точки зрения, трезвая аналитика, цивилизованные споры и обсуждения без взаимных обвинений и оскорблений. Помните, что не у всех точка зрения совпадает с Вашей. Уважайте мнение других, даже если Вы отстаиваете свой взгляд и свою позицию. Smi24.net — облегчённая версия старейшего обозревателя новостей 123ru.net.

Мы не навязываем Вам своё видение, мы даём Вам объективный срез событий дня без цензуры и без купюр. Новости, какие они есть — онлайн (с поминутным архивом по всем городам и регионам России, Украины, Белоруссии и Абхазии).

123ru.net — живые новости в прямом эфире!

В любую минуту Вы можете добавить свою новость мгновенно — здесь.





Зеленский в Украине и мире
Киев

Глава офиса Зеленского ответил на предложение министра иностранных дел Польши по


Навальный в России и мире
Москва

Иван Дроботов: «Молоток — неподходящий инструмент решения политических конфликтов»



Здоровье в России и мире


Частные объявления в Вашем городе, в Вашем регионе и в России






Загрузка...

Загрузка...



Концерт

Концерт «Бах vs Бетховен»



Москва

Туристическое мероприятие «БОКСЗАБЕГ» состоится в Подмосковье 21 сентября

Друзья 123ru.net


Информационные партнёры 123ru.net



Спонсоры 123ru.net