diff --git a/app/build.gradle b/app/build.gradle index f598088b3..65c9e2c4d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,7 +15,7 @@ android { applicationId "code.name.monkey.retromusic" versionCode 10584 - versionName '5.8.4' + versionName '5.9.0' buildConfigField("String", "GOOGLE_PLAY_LICENSING_KEY", "\"${getProperty(getProperties('../public.properties'), 'GOOGLE_PLAY_LICENSE_KEY')}\"") } @@ -51,8 +51,7 @@ android { } } lint { - abortOnError false - disable 'MissingTranslation', 'InvalidPackage' + disable 'MissingTranslation', 'ImpliedQuantity' } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -90,7 +89,7 @@ dependencies { implementation "androidx.cardview:cardview:1.0.0" implementation "androidx.appcompat:appcompat:$appcompat_version" implementation 'androidx.annotation:annotation:1.3.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.3' + implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.recyclerview:recyclerview:1.2.1' implementation "androidx.preference:preference-ktx:$preference_version" implementation 'androidx.core:core-ktx:1.7.0' @@ -116,9 +115,11 @@ dependencies { implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" - implementation "androidx.core:core-splashscreen:1.0.0-beta02" + implementation "androidx.core:core-splashscreen:1.0.0-rc01" + + implementation 'com.google.android.play:feature-delivery:2.0.0' + implementation 'com.google.android.play:review:2.0.0' - implementation 'com.google.android.play:core-ktx:1.8.1' implementation "com.google.android.material:material:$mdc_version" def retrofit_version = '2.9.0' @@ -165,6 +166,6 @@ dependencies { implementation 'com.github.dhaval2404:imagepicker:2.1' implementation 'me.zhanghai.android.fastscroll:library:1.1.8' implementation 'cat.ereza:customactivityoncrash:2.3.0' - implementation 'me.tankery.lib:circularSeekBar:1.3.2' + implementation 'me.tankery.lib:circularSeekBar:1.4.0' debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.9.1' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e5f246d68..66b48f9c4 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -23,7 +23,10 @@ tools:ignore="ProtectedPermissions" /> - + - @@ -123,7 +125,10 @@ - + - - - - - - - @@ -192,16 +183,6 @@ - - - - +
+
May 14, 2022
+

v5.9.0

+

What's New

+
    +
  • Better Cast
  • +
  • Mini player in settings screen
  • +
+

Fixed

+
    +
  • Fixed Top/Recent Artists/Albums not updating (Wrong sort order)
  • +
+
May 13, 2022

v5.8.4

diff --git a/app/src/main/java/code/name/monkey/retromusic/App.kt b/app/src/main/java/code/name/monkey/retromusic/App.kt index 4d4bf4d00..84eadfb8f 100644 --- a/app/src/main/java/code/name/monkey/retromusic/App.kt +++ b/app/src/main/java/code/name/monkey/retromusic/App.kt @@ -20,6 +20,7 @@ import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.VersionUtils import code.name.monkey.retromusic.Constants.PRO_VERSION_PRODUCT_ID import code.name.monkey.retromusic.activities.ErrorActivity +import code.name.monkey.retromusic.activities.MainActivity import code.name.monkey.retromusic.appshortcuts.DynamicShortcutManager import code.name.monkey.retromusic.extensions.showToast import code.name.monkey.retromusic.helper.WallpaperAccentManager @@ -69,7 +70,7 @@ class App : Application() { }) // setting Error activity - CaocConfig.Builder.create().errorActivity(ErrorActivity::class.java).apply() + CaocConfig.Builder.create().errorActivity(ErrorActivity::class.java).restartActivity(MainActivity::class.java).apply() } override fun onTerminate() { diff --git a/app/src/main/java/code/name/monkey/retromusic/Constants.kt b/app/src/main/java/code/name/monkey/retromusic/Constants.kt index 59532ab49..3818186d3 100644 --- a/app/src/main/java/code/name/monkey/retromusic/Constants.kt +++ b/app/src/main/java/code/name/monkey/retromusic/Constants.kt @@ -88,12 +88,7 @@ const val CIRCULAR_ALBUM_ART = "circular_album_art" const val USER_NAME = "user_name" const val TOGGLE_FULL_SCREEN = "toggle_full_screen" const val TOGGLE_VOLUME = "toggle_volume" -const val ROUND_CORNERS = "corner_window" -const val TOGGLE_GENRE = "toggle_genre" -const val PROFILE_IMAGE_PATH = "profile_image_path" -const val BANNER_IMAGE_PATH = "banner_image_path" const val ADAPTIVE_COLOR_APP = "adaptive_color_app" -const val TOGGLE_SEPARATE_LINE = "toggle_separate_line" const val HOME_ARTIST_GRID_STYLE = "home_artist_grid_style" const val HOME_ALBUM_GRID_STYLE = "home_album_grid_style" const val TOGGLE_ADD_CONTROLS = "toggle_add_controls" @@ -108,7 +103,6 @@ const val SAF_SDCARD_URI = "saf_sdcard_uri" const val SONG_SORT_ORDER = "song_sort_order" const val SONG_GRID_SIZE = "song_grid_size" const val GENRE_SORT_ORDER = "genre_sort_order" -const val LAST_PAGE = "last_start_page" const val BLUETOOTH_PLAYBACK = "bluetooth_playback" const val INITIALIZED_BLACKLIST = "initialized_blacklist" const val ARTIST_SORT_ORDER = "artist_sort_order" diff --git a/app/src/main/java/code/name/monkey/retromusic/LanguageContextWrapper.kt b/app/src/main/java/code/name/monkey/retromusic/LanguageContextWrapper.kt index a14c8fdd5..d6bb6f1c4 100644 --- a/app/src/main/java/code/name/monkey/retromusic/LanguageContextWrapper.kt +++ b/app/src/main/java/code/name/monkey/retromusic/LanguageContextWrapper.kt @@ -3,17 +3,15 @@ package code.name.monkey.retromusic import android.content.Context import android.content.ContextWrapper import android.os.LocaleList -import code.name.monkey.appthemehelper.util.VersionUtils.hasNougatMR -import com.google.android.gms.common.annotation.KeepName +import code.name.monkey.appthemehelper.util.VersionUtils.hasNougat import java.util.* class LanguageContextWrapper(base: Context?) : ContextWrapper(base) { companion object { - @KeepName fun wrap(context: Context?, newLocale: Locale?): LanguageContextWrapper { if (context == null) return LanguageContextWrapper(context) val configuration = context.resources.configuration - if (hasNougatMR()) { + if (hasNougat()) { configuration.setLocale(newLocale) val localeList = LocaleList(newLocale) LocaleList.setDefault(localeList) diff --git a/app/src/main/java/code/name/monkey/retromusic/MainModule.kt b/app/src/main/java/code/name/monkey/retromusic/MainModule.kt index c1c58f3de..dbb5bcc78 100644 --- a/app/src/main/java/code/name/monkey/retromusic/MainModule.kt +++ b/app/src/main/java/code/name/monkey/retromusic/MainModule.kt @@ -1,12 +1,9 @@ package code.name.monkey.retromusic import androidx.room.Room -import androidx.room.RoomDatabase -import androidx.sqlite.db.SupportSQLiteDatabase import code.name.monkey.retromusic.auto.AutoMusicProvider import code.name.monkey.retromusic.cast.RetroWebServer -import code.name.monkey.retromusic.db.BlackListStoreDao -import code.name.monkey.retromusic.db.BlackListStoreEntity +import code.name.monkey.retromusic.db.MIGRATION_23_24 import code.name.monkey.retromusic.db.PlaylistWithSongs import code.name.monkey.retromusic.db.RetroDatabase import code.name.monkey.retromusic.fragments.LibraryViewModel @@ -20,10 +17,6 @@ import code.name.monkey.retromusic.network.provideLastFmRest import code.name.monkey.retromusic.network.provideLastFmRetrofit import code.name.monkey.retromusic.network.provideOkHttp import code.name.monkey.retromusic.repository.* -import code.name.monkey.retromusic.util.FilePathUtil -import kotlinx.coroutines.Dispatchers.IO -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.launch import org.koin.android.ext.koin.androidContext import org.koin.androidx.viewmodel.dsl.viewModel import org.koin.dsl.bind @@ -49,32 +42,14 @@ private val roomModule = module { single { Room.databaseBuilder(androidContext(), RetroDatabase::class.java, "playlist.db") - .allowMainThreadQueries() - .addCallback(object : RoomDatabase.Callback() { - override fun onOpen(db: SupportSQLiteDatabase) { - super.onOpen(db) - GlobalScope.launch(IO) { - FilePathUtil.blacklistFilePaths().map { - get().insertBlacklistPath(BlackListStoreEntity(it)) - } - } - } - }) - .fallbackToDestructiveMigration() + .addMigrations(MIGRATION_23_24) .build() } - factory { - get().lyricsDao() - } factory { get().playlistDao() } - factory { - get().blackListStore() - } - factory { get().playCountDao() } @@ -84,7 +59,7 @@ private val roomModule = module { } single { - RealRoomRepository(get(), get(), get(), get(), get()) + RealRoomRepository(get(), get(), get()) } bind RoomRepository::class } private val autoModule = module { diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/DriveModeActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/DriveModeActivity.kt index 81f880ace..1fb04f469 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/DriveModeActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/DriveModeActivity.kt @@ -20,7 +20,6 @@ import android.graphics.Color import android.graphics.PorterDuff import android.os.Bundle import android.view.animation.LinearInterpolator -import android.widget.SeekBar import androidx.lifecycle.lifecycleScope import code.name.monkey.retromusic.R import code.name.monkey.retromusic.activities.base.AbsMusicServiceActivity @@ -36,11 +35,11 @@ import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper.Callback import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler -import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.repository.RealRepository import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil +import com.google.android.material.slider.Slider import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext @@ -113,17 +112,15 @@ class DriveModeActivity : AbsMusicServiceActivity(), Callback { } private fun setUpProgressSlider() { - binding.progressSlider.setOnSeekBarChangeListener(object : SimpleOnSeekbarChangeListener() { - override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { - if (fromUser) { - MusicPlayerRemote.seekTo(progress) - onUpdateProgressViews( - MusicPlayerRemote.songProgressMillis, - MusicPlayerRemote.songDurationMillis - ) - } + binding.progressSlider.addOnChangeListener { _: Slider, progress: Float, fromUser: Boolean -> + if (fromUser) { + MusicPlayerRemote.seekTo(progress.toInt()) + onUpdateProgressViews( + MusicPlayerRemote.songProgressMillis, + MusicPlayerRemote.songDurationMillis + ) } - }) + } } override fun onPause() { @@ -249,9 +246,9 @@ class DriveModeActivity : AbsMusicServiceActivity(), Callback { } override fun onUpdateProgressViews(progress: Int, total: Int) { - binding.progressSlider.max = total + binding.progressSlider.valueTo = total.toFloat() - val animator = ObjectAnimator.ofInt(binding.progressSlider, "progress", progress) + val animator = ObjectAnimator.ofFloat(binding.progressSlider, "value", progress.toFloat()) animator.duration = AbsPlayerControlsFragment.SLIDER_ANIMATION_TIME animator.interpolator = LinearInterpolator() animator.start() diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/ErrorActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/ErrorActivity.kt index 3b3377bb1..99bff34cb 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/ErrorActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/ErrorActivity.kt @@ -3,19 +3,19 @@ package code.name.monkey.retromusic.activities import android.os.Bundle import android.widget.Button import android.widget.ImageView -import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import cat.ereza.customactivityoncrash.CustomActivityOnCrash import code.name.monkey.retromusic.R import code.name.monkey.retromusic.util.FileUtils.createFile import code.name.monkey.retromusic.util.Share.shareFile +import com.google.android.material.dialog.MaterialAlertDialogBuilder import java.text.DateFormat import java.text.SimpleDateFormat import java.util.* class ErrorActivity : AppCompatActivity() { private val dayFormat: DateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()) - private val ReportPrefix = "bug_report-" + private val reportPrefix = "bug_report-" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.customactivityoncrash_default_error_activity) @@ -39,7 +39,7 @@ class ErrorActivity : AppCompatActivity() { findViewById