Skip to content

Repository files navigation

AvitoMusic

AvitoMusic — это музыкальное приложение, позволяющее прослушивать локальные треки, а также треки из API Deezer. Приложение построено на модульной архитектуре, использует Jetpack Compose для UI и ExoPlayer для воспроизведения аудио.

Видео демонстрация работы

Стек технологий

  • Язык: Kotlin
  • Архитектура: MVVM
  • UI: Jetpack Compose
  • Работа с сетью: Retrofit, OkHttp
  • Многопоточность: Kotlin Coroutines, Flow
  • Сериализация: Kotlinx Serialization
  • Навигация: Jetpack Navigation
  • DI: Dagger Hilt
  • Медиаплеер: ExoPlayer

Архитектура проекта

Проект состоит из нескольких модулей:

1️⃣ app (точка входа)

Основной модуль, который объединяет все остальные модули в единое приложение. Включает:

MainActivity — главный экран приложения, обрабатывает запросы на чтение локальных треков.

Взаимодействие со всеми модулями.

2️⃣ core (базовые компоненты)

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

  • DeezerApi — клиент для работы с API Deezer.
  • NetworkModule — предоставляет сетевые зависимости через Hilt.
  • DeezerRepository — репозиторий для работы с треками.
  • UI-компоненты:
    • TracksScreen — общий экран списка треков.
    • TrackItem — карточка трека.
    • TrackSearchBottomSheet — UI-компонент для поиска треков.

3️⃣ feature_api_tracks (треки из API)

Модуль, отвечающий за загрузку чартовых треков из Deezer API.
Содержит:

  • ChartTracksScreen — реализация общего экрана списка треков (TracksScreen) для чартов.

4️⃣ feature_downloaded_tracks (локальные треки)

Модуль для работы с локально сохраненными треками.
Содержит:

  • DownloadedTracksScreen — реализация TracksScreen для локальных треков.
  • Реализация репозитория, работающего с локальными файлами через ContentResolver.

5️⃣ feature_player (плеер)

Модуль, содержащий логику работы плеера.
Содержит:

  • PlayerViewModel — ViewModel, управляющая воспроизведением треков через ExoPlayer.
  • Используется в feature_downloaded_tracks и feature_api_tracks, чтобы позволять проигрывать треки из списка.

🚀 Запуск проекта

  1. Клонируйте репозиторий:
    git clone https://github.com/mrInsaf/AvitoMusic.git
  2. Откройте проект в Android Studio.
  3. Синхронизируйте зависимости (Gradle Sync).
  4. Запустите на устройстве или эмуляторе.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages