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
Проект состоит из нескольких модулей:
Основной модуль, который объединяет все остальные модули в единое приложение. Включает:
MainActivity — главный экран приложения, обрабатывает запросы на чтение локальных треков.
Взаимодействие со всеми модулями.
Этот модуль содержит общие компоненты, используемые в других модулях.
Включает:
DeezerApi— клиент для работы с API Deezer.NetworkModule— предоставляет сетевые зависимости через Hilt.DeezerRepository— репозиторий для работы с треками.- UI-компоненты:
TracksScreen— общий экран списка треков.TrackItem— карточка трека.TrackSearchBottomSheet— UI-компонент для поиска треков.
Модуль, отвечающий за загрузку чартовых треков из Deezer API.
Содержит:
ChartTracksScreen— реализация общего экрана списка треков (TracksScreen) для чартов.
Модуль для работы с локально сохраненными треками.
Содержит:
DownloadedTracksScreen— реализацияTracksScreenдля локальных треков.- Реализация репозитория, работающего с локальными файлами через
ContentResolver.
Модуль, содержащий логику работы плеера.
Содержит:
PlayerViewModel— ViewModel, управляющая воспроизведением треков через ExoPlayer.- Используется в
feature_downloaded_tracksиfeature_api_tracks, чтобы позволять проигрывать треки из списка.
- Клонируйте репозиторий:
git clone https://github.com/mrInsaf/AvitoMusic.git
- Откройте проект в Android Studio.
- Синхронизируйте зависимости (Gradle Sync).
- Запустите на устройстве или эмуляторе.