canaree-music-player
Introduction: Complete music player published in the Play Store. Heavily relies on Dagger, kotlin coroutines and Clean architecture.
Tags:
Complete music player published in the Play Store. Heavily relies on Dagger, RxJava kotlin coroutines and Clean architecture.
Screenshots
Build
Compilation can be done in 2 ways. Using the first method will prevent you from supporting FFMPEG, FLAC and OPUS formats.
Method 1 (Fast)
In build.gradle service-music module.
- Uncomment
implementation 'com.google.android.exoplayer:exoplayer-core:$latest_exoplayer_version
- Comment
implementation project(':exoplayer-library-core')
implementation project(':exoplayer-extension-flac')
implementation project(':exoplayer-extension-opus')
implementation project(':exoplayer-extension-ffmpeg')
Open setting.gradle and comment the last three lines like below:
//gradle.ext.exoplayerRoot = '/Users/eugeniuolog/AndroidStudioProjects/ExoPlayer'
//gradle.ext.exoplayerModulePrefix = 'exoplayer-'
//apply from: new File(gradle.ext.exoplayerRoot, 'core_settings_min.gradle')
Method 2
- Clone ExoPlayer
- In
settings.gradle:- Update
gradle.ext.exoplayerRootto match your ExoPlayer repo path - Change
withapply from: new File(gradle.ext.exoplayerRoot, 'core_settings_min.gradle')apply from: new File(gradle.ext.exoplayerRoot, 'core_settings.gradle')
- Update
After both
- Create
gradle.propertiesin project root folder.
# OPTIONAL properties
org.gradle.jvmargs=-Xmx4096m
org.gradle.parallel=true
org.gradle.daemon=true
android.useAndroidX=true
android.enableJetifier=true
android.enableSeparateAnnotationProcessing=true
# incremental
kotlin.incremental=true
kapt.incremental.apt=true
# parallel
kapt.use.worker.api=true
# compilation avoidance
kapt.include.compile.classpath=false
# proguard
android.enableR8=true
android.enableR8.fullMode=true
# MANDATORY properties (keys)
last_fm_key="your_key"
last_fm_secret="your_secret"
aes_password="your_aes_password"
Extensions (Linux or macOS recommended)
To support FLAC, FFMPEG and OPUS formats to you need to compile manually the corresponding ExoPlayer extensions using NDK-r17c or older, newer version of NDK are not supported.
Translations
Help translate the app to your language here
Issues
If you find any problems, please feel free to file an issue.
Open-source libraries
- ExoPlayer
- Dagger
- kotlinx.coroutines
- Scroll helper
- Color desaturation
- Content resolver SQL
- Glide
- Lottie
- Retrofit
- OkHttp
- Gson
- LastFm bindings
- java-aes-crypto
- Custom tabs
- Material dialogs
- fuzzywuzzy
- Leak canary
- Stetho

