diff --git a/README.md b/README.md
index a4caedfee..e959d1084 100644
--- a/README.md
+++ b/README.md
@@ -35,9 +35,9 @@
|:-----: |:-----: |:-----: |:-----: |:-----: |
| Normal | Fit | Flat | Color | Material |
-|
|
|
|
|
|
+|
|
|
|
|
|
|:-----: |:-----: |:-----: |:-----: |:-----: |
-| Classic | Adaptive | Blur | Tiny | Peak |
+| Classic | Adaptive | Blur | Tiny | Peek |
### 🧭 Navigation never made easier
Self-explanatory interface without overloaded menus.
diff --git a/app/build.gradle b/app/build.gradle
index be0f8592a..ba63953b1 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -14,8 +14,8 @@ android {
vectorDrawables.useSupportLibrary = true
applicationId "code.name.monkey.retromusic"
- versionCode 10564
- versionName '5.7.1'
+ versionCode 10567
+ versionName '5.7.2'
buildConfigField("String", "GOOGLE_PLAY_LICENSING_KEY", "\"${getProperty(getProperties('../public.properties'), 'GOOGLE_PLAY_LICENSE_KEY')}\"")
}
@@ -113,7 +113,7 @@ dependencies {
implementation "androidx.room:room-ktx:$room_version"
kapt "androidx.room:room-compiler:$room_version"
- def lifecycle_version = "2.5.0-alpha01"
+ def lifecycle_version = "2.4.1"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"
@@ -126,7 +126,7 @@ dependencies {
def retrofit_version = '2.9.0'
implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
implementation "com.squareup.retrofit2:converter-gson:$retrofit_version"
- implementation 'com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.3'
+ implementation 'com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.4'
def material_dialog_version = "3.3.0"
implementation "com.afollestad.material-dialogs:core:$material_dialog_version"
@@ -146,9 +146,10 @@ dependencies {
implementation "io.insert-koin:koin-core:$koin_version"
implementation "io.insert-koin:koin-android:$koin_version"
- implementation 'com.github.bumptech.glide:glide:4.12.0'
- kapt 'com.github.bumptech.glide:compiler:4.12.0'
- implementation 'com.github.bumptech.glide:okhttp3-integration:4.12.0'
+ def glide_version = '4.13.0'
+ implementation "com.github.bumptech.glide:glide:$glide_version"
+ kapt "com.github.bumptech.glide:compiler:$glide_version"
+ implementation "com.github.bumptech.glide:okhttp3-integration:$glide_version"
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 9518270a5..0dbf3e677 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -38,7 +38,8 @@
android:name=".activities.MainActivity"
android:exported="true"
android:label="@string/app_name"
- android:theme="@style/SplashTheme">
+ android:theme="@style/SplashTheme"
+ android:launchMode="singleTop">
diff --git a/app/src/main/assets/retro-changelog.html b/app/src/main/assets/retro-changelog.html
index a4e36fb15..44e64dec7 100644
--- a/app/src/main/assets/retro-changelog.html
+++ b/app/src/main/assets/retro-changelog.html
@@ -58,21 +58,28 @@
}
{style-placeholder}
-
-
-
-
-
-
-
-
+
+
February 13, 2022
+
v5.7.2Beta
+
What's New
+
+ - Animated splash screen on Android 12 devices
+
+
Fixed
+
+ - Fixed crash when removing song from Playing queue
+ - Fixed lyrics editing crash
+ - Fixed shuffle button not working
+ - Fixed crash on song deletion
+
+
February 1, 2022
-
v5.7.1
+
v5.7.1Beta
What's New
- Added option to disable changing song by swiping anywhere on the now playing screen
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/LockScreenActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/LockScreenActivity.kt
index 8a7d50469..9691ba676 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/LockScreenActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/LockScreenActivity.kt
@@ -15,10 +15,10 @@
package code.name.monkey.retromusic.activities
import android.app.KeyguardManager
-import android.content.Context
import android.os.Build
import android.os.Bundle
import android.view.WindowManager
+import androidx.core.content.getSystemService
import androidx.core.view.ViewCompat
import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.R
@@ -63,8 +63,8 @@ class LockScreenActivity : AbsMusicServiceActivity() {
override fun onSlideClosed(): Boolean {
if (VersionUtils.hasOreo()) {
val keyguardManager =
- getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
- keyguardManager.requestDismissKeyguard(this@LockScreenActivity, null)
+ getSystemService()
+ keyguardManager?.requestDismissKeyguard(this@LockScreenActivity, null)
}
finish()
return true
@@ -86,8 +86,8 @@ class LockScreenActivity : AbsMusicServiceActivity() {
private fun lockScreenInit() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
setShowWhenLocked(true)
- val keyguardManager: KeyguardManager = getSystemService(KeyguardManager::class.java)
- keyguardManager.requestDismissKeyguard(this, null)
+ val keyguardManager = getSystemService()
+ keyguardManager?.requestDismissKeyguard(this, null)
} else {
this.window.addFlags(
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD or
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt
index 3a2b249a0..5bde635bb 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt
@@ -129,15 +129,15 @@ class MainActivity : AbsCastActivity(), OnSharedPreferenceChangeListener {
override fun onSupportNavigateUp(): Boolean =
findNavController(R.id.fragment_container).navigateUp()
- override fun onResume() {
- super.onResume()
+ override fun onNewIntent(intent: Intent?) {
+ super.onNewIntent(intent)
PreferenceUtil.registerOnSharedPreferenceChangedListener(this)
- val expand = extra(EXPAND_PANEL).value ?: false
+ val expand = intent?.extra(EXPAND_PANEL)?.value ?: false
if (expand && PreferenceUtil.isExpandPanel) {
fromNotification = true
slidingPanel.bringToFront()
expandPanel()
- intent.removeExtra(EXPAND_PANEL)
+ intent?.removeExtra(EXPAND_PANEL)
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt
index f78dbac7e..4037421f0 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt
@@ -54,7 +54,7 @@ import code.name.monkey.retromusic.fragments.player.full.FullPlayerFragment
import code.name.monkey.retromusic.fragments.player.gradient.GradientPlayerFragment
import code.name.monkey.retromusic.fragments.player.material.MaterialFragment
import code.name.monkey.retromusic.fragments.player.normal.PlayerFragment
-import code.name.monkey.retromusic.fragments.player.peak.PeakPlayerFragment
+import code.name.monkey.retromusic.fragments.player.peek.PeekPlayerFragment
import code.name.monkey.retromusic.fragments.player.plain.PlainPlayerFragment
import code.name.monkey.retromusic.fragments.player.simple.SimplePlayerFragment
import code.name.monkey.retromusic.fragments.player.tiny.TinyPlayerFragment
@@ -241,7 +241,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() {
binding.slidingPanel.viewTreeObserver.removeOnGlobalLayoutListener(this)
- if (nowPlayingScreen != Peak) {
+ if (nowPlayingScreen != Peek) {
val params = binding.slidingPanel.layoutParams as ViewGroup.LayoutParams
params.height = ViewGroup.LayoutParams.MATCH_PARENT
binding.slidingPanel.layoutParams = params
@@ -454,7 +454,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
Color -> ColorFragment()
Gradient -> GradientPlayerFragment()
Tiny -> TinyPlayerFragment()
- Peak -> PeakPlayerFragment()
+ Peek -> PeekPlayerFragment()
Circle -> CirclePlayerFragment()
Classic -> ClassicPlayerFragment()
else -> PlayerFragment()
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/bugreport/BugReportActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/bugreport/BugReportActivity.kt
index c446fdcfd..22b66929e 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/bugreport/BugReportActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/bugreport/BugReportActivity.kt
@@ -29,6 +29,7 @@ import android.widget.Toast
import androidx.annotation.StringDef
import androidx.annotation.StringRes
import androidx.appcompat.app.AlertDialog
+import androidx.core.content.getSystemService
import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.MaterialUtil
import code.name.monkey.appthemehelper.util.TintHelper
@@ -161,9 +162,9 @@ open class BugReportActivity : AbsThemeActivity() {
}
private fun copyDeviceInfoToClipBoard() {
- val clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
+ val clipboard = getSystemService()
val clip = ClipData.newPlainText(getString(R.string.device_info), deviceInfo?.toMarkdown())
- clipboard.setPrimaryClip(clip)
+ clipboard?.setPrimaryClip(clip)
Toast.makeText(
this@BugReportActivity,
R.string.copied_device_info_to_clipboard,
diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt
index 85d89edf0..2d2fba8c9 100644
--- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt
@@ -138,7 +138,7 @@ class AlbumCoverPagerAdapter(
private fun getLayoutWithPlayerTheme(): Int {
return when (PreferenceUtil.nowPlayingScreen) {
Card, Fit, Tiny, Classic, Gradient, Full -> R.layout.fragment_album_full_cover
- Peak -> R.layout.fragment_peak_album_cover
+ Peek -> R.layout.fragment_peek_album_cover
else -> {
if (PreferenceUtil.isCarouselEffect) {
R.layout.fragment_album_carousel_cover
diff --git a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/DynamicShortcutManager.kt b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/DynamicShortcutManager.kt
index 6582d408d..a943ed0c8 100644
--- a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/DynamicShortcutManager.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/DynamicShortcutManager.kt
@@ -21,14 +21,15 @@ import android.content.pm.ShortcutInfo
import android.content.pm.ShortcutManager
import android.graphics.drawable.Icon
import android.os.Build
+import androidx.core.content.getSystemService
import code.name.monkey.retromusic.appshortcuts.shortcuttype.LastAddedShortcutType
import code.name.monkey.retromusic.appshortcuts.shortcuttype.ShuffleAllShortcutType
import code.name.monkey.retromusic.appshortcuts.shortcuttype.TopTracksShortcutType
@TargetApi(Build.VERSION_CODES.N_MR1)
class DynamicShortcutManager(private val context: Context) {
- private val shortcutManager: ShortcutManager =
- this.context.getSystemService(ShortcutManager::class.java)
+ private val shortcutManager: ShortcutManager? =
+ this.context.getSystemService()
private val defaultShortcuts: List
get() = listOf(
@@ -39,12 +40,12 @@ class DynamicShortcutManager(private val context: Context) {
fun initDynamicShortcuts() {
// if (shortcutManager.dynamicShortcuts.size == 0) {
- shortcutManager.dynamicShortcuts = defaultShortcuts
+ shortcutManager?.dynamicShortcuts = defaultShortcuts
// }
}
fun updateDynamicShortcuts() {
- shortcutManager.updateShortcuts(defaultShortcuts)
+ shortcutManager?.updateShortcuts(defaultShortcuts)
}
companion object {
@@ -66,7 +67,7 @@ class DynamicShortcutManager(private val context: Context) {
}
fun reportShortcutUsed(context: Context, shortcutId: String) {
- context.getSystemService(ShortcutManager::class.java).reportShortcutUsed(shortcutId)
+ context.getSystemService()?.reportShortcutUsed(shortcutId)
}
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/dialogs/DeleteSongsDialog.kt b/app/src/main/java/code/name/monkey/retromusic/dialogs/DeleteSongsDialog.kt
index 8aa52fbd2..57621e9b6 100644
--- a/app/src/main/java/code/name/monkey/retromusic/dialogs/DeleteSongsDialog.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/dialogs/DeleteSongsDialog.kt
@@ -18,6 +18,9 @@ import android.app.Activity
import android.app.Dialog
import android.content.Intent
import android.os.Bundle
+import android.provider.MediaStore
+import androidx.activity.result.IntentSenderRequest
+import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.os.bundleOf
import androidx.core.text.HtmlCompat
import androidx.fragment.app.DialogFragment
@@ -61,56 +64,75 @@ class DeleteSongsDialog : DialogFragment() {
libraryViewModel = activity?.getViewModel() as LibraryViewModel
val songs = extraNotNull>(EXTRA_SONG).value
if (VersionUtils.hasR()) {
- dismiss()
- MusicUtil.deleteTracksR(requireActivity(), songs)
- reloadTabs()
- }
- val pair = if (songs.size > 1) {
- Pair(
- R.string.delete_songs_title,
- HtmlCompat.fromHtml(
- String.format(getString(R.string.delete_x_songs), songs.size),
- HtmlCompat.FROM_HTML_MODE_LEGACY
- )
- )
- } else {
- Pair(
- R.string.delete_song_title,
- HtmlCompat.fromHtml(
- String.format(getString(R.string.delete_song_x), songs[0].title),
- HtmlCompat.FROM_HTML_MODE_LEGACY
- )
- )
- }
-
- return materialDialog()
- .title(pair.first)
- .message(text = pair.second)
- .noAutoDismiss()
- .negativeButton(android.R.string.cancel) {
- dismiss()
- }
- .positiveButton(R.string.action_delete) {
- if ((songs.size == 1) && MusicPlayerRemote.isPlaying(songs[0])) {
- MusicPlayerRemote.playNextSong()
- }
- if (!SAFUtil.isSAFRequiredForSongs(songs)) {
- CoroutineScope(Dispatchers.IO).launch {
- dismiss()
- MusicUtil.deleteTracks(requireContext(), songs)
+ val deleteResultLauncher =
+ registerForActivityResult(ActivityResultContracts.StartIntentSenderForResult()) { result ->
+ if (result.resultCode == Activity.RESULT_OK) {
+ if ((songs.size == 1) && MusicPlayerRemote.isPlaying(songs[0])) {
+ MusicPlayerRemote.playNextSong()
+ }
+ MusicPlayerRemote.removeFromQueue(songs)
reloadTabs()
}
- } else {
- if (SAFUtil.isSDCardAccessGranted(requireActivity())) {
- deleteSongs(songs)
+ dismiss()
+ }
+ val pendingIntent =
+ MediaStore.createDeleteRequest(requireActivity().contentResolver, songs.map {
+ MusicUtil.getSongFileUri(it.id)
+ })
+ deleteResultLauncher.launch(
+ IntentSenderRequest.Builder(pendingIntent.intentSender).build()
+ )
+ return super.onCreateDialog(savedInstanceState)
+ } else {
+ val pair = if (songs.size > 1) {
+ Pair(
+ R.string.delete_songs_title,
+ HtmlCompat.fromHtml(
+ String.format(getString(R.string.delete_x_songs), songs.size),
+ HtmlCompat.FROM_HTML_MODE_LEGACY
+ )
+ )
+ } else {
+ Pair(
+ R.string.delete_song_title,
+ HtmlCompat.fromHtml(
+ String.format(getString(R.string.delete_song_x), songs[0].title),
+ HtmlCompat.FROM_HTML_MODE_LEGACY
+ )
+ )
+ }
+
+ return materialDialog()
+ .title(pair.first)
+ .message(text = pair.second)
+ .noAutoDismiss()
+ .negativeButton(android.R.string.cancel)
+ {
+ dismiss()
+ }
+ .positiveButton(R.string.action_delete)
+ {
+ if ((songs.size == 1) && MusicPlayerRemote.isPlaying(songs[0])) {
+ MusicPlayerRemote.playNextSong()
+ }
+ if (!SAFUtil.isSAFRequiredForSongs(songs)) {
+ CoroutineScope(Dispatchers.IO).launch {
+ dismiss()
+ MusicUtil.deleteTracks(requireContext(), songs)
+ reloadTabs()
+ }
} else {
- startActivityForResult(
- Intent(requireActivity(), SAFGuideActivity::class.java),
- SAFGuideActivity.REQUEST_CODE_SAF_GUIDE
- )
+ if (SAFUtil.isSDCardAccessGranted(requireActivity())) {
+ deleteSongs(songs)
+ } else {
+ startActivityForResult(
+ Intent(requireActivity(), SAFGuideActivity::class.java),
+ SAFGuideActivity.REQUEST_CODE_SAF_GUIDE
+ )
+ }
}
}
- }
+ }
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
diff --git a/app/src/main/java/code/name/monkey/retromusic/dialogs/SleepTimerDialog.kt b/app/src/main/java/code/name/monkey/retromusic/dialogs/SleepTimerDialog.kt
index ffd869495..954ad2dad 100755
--- a/app/src/main/java/code/name/monkey/retromusic/dialogs/SleepTimerDialog.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/dialogs/SleepTimerDialog.kt
@@ -17,7 +17,6 @@ package code.name.monkey.retromusic.dialogs
import android.app.AlarmManager
import android.app.Dialog
import android.app.PendingIntent
-import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.os.CountDownTimer
@@ -26,6 +25,7 @@ import android.widget.CheckBox
import android.widget.SeekBar
import android.widget.TextView
import android.widget.Toast
+import androidx.core.content.getSystemService
import androidx.fragment.app.DialogFragment
import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.R
@@ -93,8 +93,8 @@ class SleepTimerDialog : DialogFragment() {
val pi = makeTimerPendingIntent(PendingIntent.FLAG_CANCEL_CURRENT)
val nextSleepTimerElapsedTime = SystemClock.elapsedRealtime() + minutes * 60 * 1000
PreferenceUtil.nextSleepTimerElapsedRealTime = nextSleepTimerElapsedTime.toInt()
- val am = requireContext().getSystemService(Context.ALARM_SERVICE) as AlarmManager
- am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, nextSleepTimerElapsedTime, pi)
+ val am = requireContext().getSystemService()
+ am?.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, nextSleepTimerElapsedTime, pi)
Toast.makeText(
requireContext(),
@@ -105,9 +105,8 @@ class SleepTimerDialog : DialogFragment() {
.setNegativeButton(android.R.string.cancel) { _, _ ->
val previous = makeTimerPendingIntent(PendingIntent.FLAG_NO_CREATE)
if (previous != null) {
- val am =
- requireContext().getSystemService(Context.ALARM_SERVICE) as AlarmManager
- am.cancel(previous)
+ val am = requireContext().getSystemService()
+ am?.cancel(previous)
previous.cancel()
Toast.makeText(
requireContext(),
diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityExtensions.kt
index 3ccc81f4a..bf3d9d8cd 100644
--- a/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityExtensions.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityExtensions.kt
@@ -14,8 +14,8 @@
*/
package code.name.monkey.retromusic.extensions
-import android.R
import android.app.Activity
+import android.content.Intent
import android.view.View
import android.view.ViewGroup
import androidx.annotation.DimenRes
@@ -33,6 +33,11 @@ inline fun Activity.extra(key: String, default: T? = null) = l
if (value is T) value else default
}
+inline fun Intent.extra(key: String, default: T? = null) = lazy {
+ val value = extras?.get(key)
+ if (value is T) value else default
+}
+
inline fun Activity.extraNotNull(key: String, default: T? = null) = lazy {
val value = intent?.extras?.get(key)
requireNotNull(if (value is T) value else default) { key }
@@ -42,4 +47,4 @@ fun Activity.dip(@DimenRes id: Int): Int {
return resources.getDimensionPixelSize(id)
}
-inline val Activity.rootView: View get() = findViewById(R.id.content).getChildAt(0)
\ No newline at end of file
+inline val Activity.rootView: View get() = findViewById(android.R.id.content).getChildAt(0)
\ No newline at end of file
diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/DialogExtension.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/DialogExtension.kt
index 95c99033e..63f77e134 100644
--- a/app/src/main/java/code/name/monkey/retromusic/extensions/DialogExtension.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/extensions/DialogExtension.kt
@@ -39,5 +39,5 @@ fun AlertDialog.colorButtons(): AlertDialog {
fun Fragment.materialDialog(): MaterialDialog {
return MaterialDialog(requireContext())
- .cornerRadius(res = R.dimen.m3_alert_dialog_corner_size)
+ .cornerRadius(res = R.dimen.m3_dialog_corner_size)
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/FragmentExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/FragmentExtensions.kt
index 734b60243..a4082a824 100644
--- a/app/src/main/java/code/name/monkey/retromusic/extensions/FragmentExtensions.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/extensions/FragmentExtensions.kt
@@ -22,6 +22,7 @@ import android.widget.Toast
import androidx.annotation.*
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.content.res.AppCompatResources
+import androidx.core.content.getSystemService
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.navigation.fragment.NavHostFragment
@@ -41,7 +42,7 @@ val Context.generalThemeValue
fun Context.isSystemDarkModeEnabled(): Boolean {
val isBatterySaverEnabled =
- (getSystemService(Context.POWER_SERVICE) as PowerManager?)?.isPowerSaveMode ?: false
+ (getSystemService())?.isPowerSaveMode ?: false
val isDarkModeEnabled =
(resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES
return isBatterySaverEnabled or isDarkModeEnabled
diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt
index 38f9c64ed..d4e759619 100644
--- a/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt
@@ -16,7 +16,6 @@ package code.name.monkey.retromusic.extensions
import android.animation.Animator
import android.animation.ObjectAnimator
-import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@@ -27,6 +26,7 @@ import androidx.annotation.LayoutRes
import androidx.annotation.Px
import androidx.core.animation.doOnEnd
import androidx.core.animation.doOnStart
+import androidx.core.content.getSystemService
import androidx.core.view.*
import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.TintHelper
@@ -95,8 +95,8 @@ fun View.focusAndShowKeyboard() {
// We still post the call, just in case we are being notified of the windows focus
// but InputMethodManager didn't get properly setup yet.
val imm =
- context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
- imm.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT)
+ context.getSystemService()
+ imm?.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT)
}
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/NowPlayingScreen.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/NowPlayingScreen.kt
index 5cf112c03..448df7112 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/NowPlayingScreen.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/NowPlayingScreen.kt
@@ -40,7 +40,7 @@ enum class NowPlayingScreen constructor(
Gradient(R.string.gradient, R.drawable.np_gradient, 17, AlbumCoverStyle.Full),
Material(R.string.material, R.drawable.np_material, 11, AlbumCoverStyle.Normal),
Normal(R.string.normal, R.drawable.np_normal, 0, AlbumCoverStyle.Normal),
- Peak(R.string.peak, R.drawable.np_peak, 14, AlbumCoverStyle.Normal),
+ Peek(R.string.peek, R.drawable.np_peek, 14, AlbumCoverStyle.Normal),
Plain(R.string.plain, R.drawable.np_plain, 3, AlbumCoverStyle.Normal),
Simple(R.string.simple, R.drawable.np_simple, 8, AlbumCoverStyle.Normal),
Tiny(R.string.tiny, R.drawable.np_tiny, 7, null),
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumDetailsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumDetailsFragment.kt
index 204c44c2c..97a232020 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumDetailsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumDetailsFragment.kt
@@ -82,7 +82,6 @@ import kotlinx.coroutines.withContext
import org.koin.android.ext.android.get
import org.koin.androidx.viewmodel.ext.android.viewModel
import org.koin.core.parameter.parametersOf
-import java.util.*
class AlbumDetailsFragment : AbsMainActivityFragment(R.layout.fragment_album_details),
IAlbumClickListener, ICabHolder {
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/artists/AbsArtistDetailsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/artists/AbsArtistDetailsFragment.kt
index 764afe769..5463de969 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/artists/AbsArtistDetailsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/artists/AbsArtistDetailsFragment.kt
@@ -5,7 +5,10 @@ import android.content.Intent
import android.graphics.Color
import android.os.Bundle
import android.text.Spanned
-import android.view.*
+import android.view.Menu
+import android.view.MenuInflater
+import android.view.MenuItem
+import android.view.View
import androidx.activity.addCallback
import androidx.appcompat.widget.PopupMenu
import androidx.core.os.bundleOf
@@ -51,7 +54,6 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.koin.android.ext.android.get
import java.util.*
-import kotlin.collections.ArrayList
abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragment_artist_details),
IAlbumClickListener, ICabHolder {
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt
index 6052390c3..678554246 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt
@@ -306,7 +306,7 @@ abstract class AbsPlayerFragment(@LayoutRes layout: Int) : AbsMainActivityFragme
super.onResume()
val nps = PreferenceUtil.nowPlayingScreen
- if (nps == NowPlayingScreen.Circle || nps == NowPlayingScreen.Peak || nps == NowPlayingScreen.Tiny) {
+ if (nps == NowPlayingScreen.Circle || nps == NowPlayingScreen.Peek || nps == NowPlayingScreen.Tiny) {
playerToolbar()?.menu?.removeItem(R.id.action_toggle_lyrics)
} else {
playerToolbar()?.menu?.findItem(R.id.action_toggle_lyrics)?.apply {
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt
index 61b49b8b6..ceb39d34e 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt
@@ -19,7 +19,10 @@ import android.media.MediaScannerConnection
import android.os.Bundle
import android.os.Environment
import android.text.Html
-import android.view.*
+import android.view.Menu
+import android.view.MenuInflater
+import android.view.MenuItem
+import android.view.View
import android.webkit.MimeTypeMap
import android.widget.Toast
import androidx.activity.OnBackPressedCallback
@@ -57,8 +60,9 @@ import code.name.monkey.retromusic.misc.UpdateToastMediaScannerCompletionListene
import code.name.monkey.retromusic.misc.WrappedAsyncTaskLoader
import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.providers.BlacklistStore
-import code.name.monkey.retromusic.util.*
+import code.name.monkey.retromusic.util.FileUtil
import code.name.monkey.retromusic.util.PreferenceUtil.startDirectory
+import code.name.monkey.retromusic.util.RetroColorUtil
import code.name.monkey.retromusic.util.ThemedFastScroller.create
import code.name.monkey.retromusic.views.BreadCrumbLayout.Crumb
import code.name.monkey.retromusic.views.BreadCrumbLayout.SelectionCallback
@@ -70,7 +74,9 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.shape.MaterialShapeDrawable
import com.google.android.material.snackbar.Snackbar
import com.google.android.material.transition.MaterialFadeThrough
-import java.io.*
+import java.io.File
+import java.io.FileFilter
+import java.io.IOException
import java.lang.ref.WeakReference
import java.util.*
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenreDetailsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenreDetailsFragment.kt
index 28f5dc229..c286bf794 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenreDetailsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenreDetailsFragment.kt
@@ -38,7 +38,6 @@ import com.google.android.material.shape.MaterialShapeDrawable
import com.google.android.material.transition.MaterialSharedAxis
import org.koin.androidx.viewmodel.ext.android.viewModel
import org.koin.core.parameter.parametersOf
-import java.util.*
class GenreDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playlist_detail) {
private val arguments by navArgs()
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/other/LyricsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/other/LyricsFragment.kt
index bf7f85c03..aa36c29b4 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/other/LyricsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/other/LyricsFragment.kt
@@ -145,6 +145,7 @@ class LyricsFragment : AbsMusicServiceFragment(R.layout.fragment_lyrics) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setHasOptionsMenu(true)
+ updateTitleSong()
enterTransition = Fade()
exitTransition = Fade()
lyricsSectionsAdapter = LyricsSectionsAdapter(requireActivity())
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/other/VolumeFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/other/VolumeFragment.kt
index 89d3f5301..67f1b7d1f 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/other/VolumeFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/other/VolumeFragment.kt
@@ -14,7 +14,6 @@
*/
package code.name.monkey.retromusic.fragments.other
-import android.content.Context
import android.graphics.Color
import android.graphics.PorterDuff
import android.media.AudioManager
@@ -23,6 +22,7 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.SeekBar
+import androidx.core.content.getSystemService
import androidx.fragment.app.Fragment
import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.retromusic.R
@@ -42,7 +42,7 @@ class VolumeFragment : Fragment(), SeekBar.OnSeekBarChangeListener, OnAudioVolum
private var audioVolumeObserver: AudioVolumeObserver? = null
private val audioManager: AudioManager
- get() = requireContext().getSystemService(Context.AUDIO_SERVICE) as AudioManager
+ get() = requireContext().getSystemService()!!
override fun onCreateView(
inflater: LayoutInflater,
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptivePlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptivePlaybackControlsFragment.kt
index a65c1cc47..d811b8e3a 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptivePlaybackControlsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptivePlaybackControlsFragment.kt
@@ -14,10 +14,8 @@
*/
package code.name.monkey.retromusic.fragments.player.adaptive
-import android.animation.ObjectAnimator
import android.os.Bundle
import android.view.View
-import android.view.animation.LinearInterpolator
import android.widget.ImageButton
import android.widget.SeekBar
import android.widget.TextView
@@ -31,7 +29,6 @@ import code.name.monkey.retromusic.databinding.FragmentAdaptivePlayerPlaybackCon
import code.name.monkey.retromusic.extensions.*
import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
import code.name.monkey.retromusic.helper.MusicPlayerRemote
-import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/card/CardPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/card/CardPlaybackControlsFragment.kt
index f325bc39e..4179b28a6 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/card/CardPlaybackControlsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/card/CardPlaybackControlsFragment.kt
@@ -14,11 +14,9 @@
*/
package code.name.monkey.retromusic.fragments.player.card
-import android.animation.ObjectAnimator
import android.graphics.PorterDuff
import android.os.Bundle
import android.view.View
-import android.view.animation.LinearInterpolator
import android.widget.ImageButton
import android.widget.SeekBar
import code.name.monkey.appthemehelper.ThemeStore
@@ -36,7 +34,6 @@ import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
import code.name.monkey.retromusic.fragments.base.goToAlbum
import code.name.monkey.retromusic.fragments.base.goToArtist
import code.name.monkey.retromusic.helper.MusicPlayerRemote
-import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurPlaybackControlsFragment.kt
index 2aabe4669..8a43cfada 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurPlaybackControlsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurPlaybackControlsFragment.kt
@@ -14,12 +14,10 @@
*/
package code.name.monkey.retromusic.fragments.player.cardblur
-import android.animation.ObjectAnimator
import android.graphics.Color
import android.os.Bundle
import android.view.View
import android.view.animation.DecelerateInterpolator
-import android.view.animation.LinearInterpolator
import android.widget.ImageButton
import android.widget.SeekBar
import code.name.monkey.appthemehelper.util.ColorUtil
@@ -33,7 +31,6 @@ import code.name.monkey.retromusic.extensions.show
import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
-import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/circle/CirclePlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/circle/CirclePlayerFragment.kt
index 4827980f8..1763c7351 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/circle/CirclePlayerFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/circle/CirclePlayerFragment.kt
@@ -16,7 +16,6 @@ package code.name.monkey.retromusic.fragments.player.circle
import android.animation.ObjectAnimator
import android.annotation.SuppressLint
-import android.content.Context
import android.graphics.Color
import android.graphics.PorterDuff
import android.graphics.drawable.ColorDrawable
@@ -28,8 +27,12 @@ import android.view.animation.Animation
import android.view.animation.LinearInterpolator
import android.widget.SeekBar
import androidx.appcompat.widget.Toolbar
+import androidx.core.content.getSystemService
import code.name.monkey.appthemehelper.ThemeStore
-import code.name.monkey.appthemehelper.util.*
+import code.name.monkey.appthemehelper.util.ColorUtil
+import code.name.monkey.appthemehelper.util.MaterialValueHelper
+import code.name.monkey.appthemehelper.util.TintHelper
+import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.databinding.FragmentCirclePlayerBinding
import code.name.monkey.retromusic.extensions.*
@@ -38,7 +41,10 @@ import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment
import code.name.monkey.retromusic.fragments.base.goToAlbum
import code.name.monkey.retromusic.fragments.base.goToArtist
-import code.name.monkey.retromusic.glide.*
+import code.name.monkey.retromusic.glide.GlideApp
+import code.name.monkey.retromusic.glide.GlideRequest
+import code.name.monkey.retromusic.glide.RetroGlideExtension
+import code.name.monkey.retromusic.glide.crossfadeListener
import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper.Callback
@@ -64,7 +70,7 @@ class CirclePlayerFragment : AbsPlayerFragment(R.layout.fragment_circle_player),
private var audioVolumeObserver: AudioVolumeObserver? = null
private val audioManager: AudioManager
- get() = requireContext().getSystemService(Context.AUDIO_SERVICE) as AudioManager
+ get() = requireContext().getSystemService()!!
private var _binding: FragmentCirclePlayerBinding? = null
private val binding get() = _binding!!
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorPlaybackControlsFragment.kt
index 53d3624a1..60c7d0a85 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorPlaybackControlsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorPlaybackControlsFragment.kt
@@ -15,14 +15,12 @@
package code.name.monkey.retromusic.fragments.player.color
import android.animation.Animator
-import android.animation.ObjectAnimator
import android.graphics.Color
import android.os.Bundle
import android.view.View
import android.view.ViewAnimationUtils
import android.view.animation.AccelerateInterpolator
import android.view.animation.DecelerateInterpolator
-import android.view.animation.LinearInterpolator
import android.widget.ImageButton
import android.widget.SeekBar
import android.widget.TextView
@@ -38,7 +36,6 @@ import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
import code.name.monkey.retromusic.fragments.base.goToAlbum
import code.name.monkey.retromusic.fragments.base.goToArtist
import code.name.monkey.retromusic.helper.MusicPlayerRemote
-import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
import kotlin.math.sqrt
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitPlaybackControlsFragment.kt
index 87e437961..f1256ddcb 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitPlaybackControlsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitPlaybackControlsFragment.kt
@@ -14,11 +14,9 @@
*/
package code.name.monkey.retromusic.fragments.player.fit
-import android.animation.ObjectAnimator
import android.os.Bundle
import android.view.View
import android.view.animation.DecelerateInterpolator
-import android.view.animation.LinearInterpolator
import android.widget.ImageButton
import android.widget.SeekBar
import android.widget.TextView
@@ -33,7 +31,6 @@ import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
import code.name.monkey.retromusic.fragments.base.goToAlbum
import code.name.monkey.retromusic.fragments.base.goToArtist
import code.name.monkey.retromusic.helper.MusicPlayerRemote
-import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt
index 075a245e8..e49e5ad7d 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt
@@ -14,7 +14,6 @@
*/
package code.name.monkey.retromusic.fragments.player.full
-import android.animation.ObjectAnimator
import android.content.Intent
import android.content.res.ColorStateList
import android.graphics.Color
@@ -24,7 +23,6 @@ import android.os.Bundle
import android.view.MenuItem
import android.view.View
import android.view.animation.DecelerateInterpolator
-import android.view.animation.LinearInterpolator
import android.widget.ImageButton
import android.widget.SeekBar
import android.widget.TextView
@@ -49,7 +47,6 @@ import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.service.MusicService
-import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.RetroUtil
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/lockscreen/LockScreenControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/lockscreen/LockScreenControlsFragment.kt
index e4015e077..d970908b5 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/lockscreen/LockScreenControlsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/lockscreen/LockScreenControlsFragment.kt
@@ -14,11 +14,9 @@
*/
package code.name.monkey.retromusic.fragments.player.lockscreen
-import android.animation.ObjectAnimator
import android.os.Bundle
import android.view.View
import android.view.animation.DecelerateInterpolator
-import android.view.animation.LinearInterpolator
import android.widget.ImageButton
import android.widget.SeekBar
import android.widget.TextView
@@ -34,7 +32,6 @@ import code.name.monkey.retromusic.extensions.textColorSecondary
import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
-import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialControlsFragment.kt
index 7752c2f51..dd19448b9 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialControlsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialControlsFragment.kt
@@ -14,11 +14,9 @@
*/
package code.name.monkey.retromusic.fragments.player.material
-import android.animation.ObjectAnimator
import android.graphics.PorterDuff
import android.os.Bundle
import android.view.View
-import android.view.animation.LinearInterpolator
import android.widget.ImageButton
import android.widget.SeekBar
import android.widget.TextView
@@ -33,7 +31,6 @@ import code.name.monkey.retromusic.fragments.base.goToAlbum
import code.name.monkey.retromusic.fragments.base.goToArtist
import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
-import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerControlFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/peek/PeekPlayerControlFragment.kt
similarity index 90%
rename from app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerControlFragment.kt
rename to app/src/main/java/code/name/monkey/retromusic/fragments/player/peek/PeekPlayerControlFragment.kt
index 947c08c50..dd02d92ac 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerControlFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/peek/PeekPlayerControlFragment.kt
@@ -12,14 +12,12 @@
* See the GNU General Public License for more details.
*
*/
-package code.name.monkey.retromusic.fragments.player.peak
+package code.name.monkey.retromusic.fragments.player.peek
-import android.animation.ObjectAnimator
import android.graphics.Color
import android.graphics.PorterDuff
import android.os.Bundle
import android.view.View
-import android.view.animation.LinearInterpolator
import android.widget.ImageButton
import android.widget.SeekBar
import android.widget.TextView
@@ -28,12 +26,11 @@ import code.name.monkey.appthemehelper.util.ATHUtil
import code.name.monkey.appthemehelper.util.MaterialValueHelper
import code.name.monkey.appthemehelper.util.TintHelper
import code.name.monkey.retromusic.R
-import code.name.monkey.retromusic.databinding.FragmentPeakControlPlayerBinding
+import code.name.monkey.retromusic.databinding.FragmentPeekControlPlayerBinding
import code.name.monkey.retromusic.extensions.applyColor
import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
-import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
@@ -41,9 +38,9 @@ import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
* Created by hemanths on 2019-10-04.
*/
-class PeakPlayerControlFragment : AbsPlayerControlsFragment(R.layout.fragment_peak_control_player) {
+class PeekPlayerControlFragment : AbsPlayerControlsFragment(R.layout.fragment_peek_control_player) {
- private var _binding: FragmentPeakControlPlayerBinding? = null
+ private var _binding: FragmentPeekControlPlayerBinding? = null
private val binding get() = _binding!!
override val progressSlider: SeekBar
@@ -72,7 +69,7 @@ class PeakPlayerControlFragment : AbsPlayerControlsFragment(R.layout.fragment_pe
savedInstanceState: Bundle?
) {
super.onViewCreated(view, savedInstanceState)
- _binding = FragmentPeakControlPlayerBinding.bind(view)
+ _binding = FragmentPeekControlPlayerBinding.bind(view)
setUpPlayPauseFab()
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/peek/PeekPlayerFragment.kt
similarity index 88%
rename from app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerFragment.kt
rename to app/src/main/java/code/name/monkey/retromusic/fragments/player/peek/PeekPlayerFragment.kt
index d8a8a2aaa..dc5116399 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/peek/PeekPlayerFragment.kt
@@ -12,14 +12,14 @@
* See the GNU General Public License for more details.
*
*/
-package code.name.monkey.retromusic.fragments.player.peak
+package code.name.monkey.retromusic.fragments.player.peek
import android.os.Bundle
import android.view.View
import androidx.appcompat.widget.Toolbar
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper
import code.name.monkey.retromusic.R
-import code.name.monkey.retromusic.databinding.FragmentPeakPlayerBinding
+import code.name.monkey.retromusic.databinding.FragmentPeekPlayerBinding
import code.name.monkey.retromusic.extensions.*
import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment
import code.name.monkey.retromusic.fragments.base.goToAlbum
@@ -33,17 +33,17 @@ import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
* Created by hemanths on 2019-10-03.
*/
-class PeakPlayerFragment : AbsPlayerFragment(R.layout.fragment_peak_player) {
+class PeekPlayerFragment : AbsPlayerFragment(R.layout.fragment_peek_player) {
- private lateinit var controlsFragment: PeakPlayerControlFragment
+ private lateinit var controlsFragment: PeekPlayerControlFragment
private var lastColor: Int = 0
- private var _binding: FragmentPeakPlayerBinding? = null
+ private var _binding: FragmentPeekPlayerBinding? = null
private val binding get() = _binding!!
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- _binding = FragmentPeakPlayerBinding.bind(view)
+ _binding = FragmentPeekPlayerBinding.bind(view)
setUpPlayerToolbar()
setUpSubFragments()
binding.title.isSelected = true
@@ -58,7 +58,7 @@ class PeakPlayerFragment : AbsPlayerFragment(R.layout.fragment_peak_player) {
private fun setUpSubFragments() {
controlsFragment =
- childFragmentManager.findFragmentById(R.id.playbackControlsFragment) as PeakPlayerControlFragment
+ childFragmentManager.findFragmentById(R.id.playbackControlsFragment) as PeekPlayerControlFragment
val coverFragment =
childFragmentManager.findFragmentById(R.id.playerAlbumCoverFragment) as PlayerAlbumCoverFragment
@@ -69,7 +69,7 @@ class PeakPlayerFragment : AbsPlayerFragment(R.layout.fragment_peak_player) {
binding.playerToolbar.apply {
inflateMenu(R.menu.menu_player)
setNavigationOnClickListener { requireActivity().onBackPressed() }
- setOnMenuItemClickListener(this@PeakPlayerFragment)
+ setOnMenuItemClickListener(this@PeekPlayerFragment)
ToolbarContentTintHelper.colorizeToolbar(
this,
colorControlNormal(),
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlaybackControlsFragment.kt
index b595ef9fa..d76958040 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlaybackControlsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlaybackControlsFragment.kt
@@ -14,11 +14,9 @@
*/
package code.name.monkey.retromusic.fragments.player.plain
-import android.animation.ObjectAnimator
import android.os.Bundle
import android.view.View
import android.view.animation.DecelerateInterpolator
-import android.view.animation.LinearInterpolator
import android.widget.ImageButton
import android.widget.SeekBar
import android.widget.TextView
@@ -35,7 +33,6 @@ import code.name.monkey.retromusic.extensions.hide
import code.name.monkey.retromusic.extensions.show
import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
import code.name.monkey.retromusic.helper.MusicPlayerRemote
-import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlayerFragment.kt
index a2cdc784e..92ac39bb2 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlayerFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlayerFragment.kt
@@ -24,6 +24,7 @@ import android.view.MotionEvent
import android.view.View
import android.view.animation.LinearInterpolator
import androidx.appcompat.widget.Toolbar
+import androidx.core.content.getSystemService
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.databinding.FragmentTinyPlayerBinding
@@ -281,7 +282,7 @@ class TinyPlayerFragment : AbsPlayerFragment(R.layout.fragment_tiny_player),
@Suppress("Deprecation")
private fun vibrate() {
- val v = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator?
+ val v = requireContext().getSystemService()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
v?.vibrate(VibrationEffect.createOneShot(10, VibrationEffect.DEFAULT_AMPLITUDE))
} else {
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/search/SearchFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/search/SearchFragment.kt
index 820b5ae51..618afee30 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/search/SearchFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/search/SearchFragment.kt
@@ -15,7 +15,6 @@
package code.name.monkey.retromusic.fragments.search
import android.content.ActivityNotFoundException
-import android.content.Context
import android.content.Intent
import android.content.res.ColorStateList
import android.os.Bundle
@@ -26,6 +25,7 @@ import android.view.View
import android.view.ViewGroup
import android.view.inputmethod.InputMethodManager
import androidx.annotation.IdRes
+import androidx.core.content.getSystemService
import androidx.core.view.*
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
@@ -34,7 +34,10 @@ import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.adapter.SearchAdapter
import code.name.monkey.retromusic.databinding.FragmentSearchBinding
-import code.name.monkey.retromusic.extensions.*
+import code.name.monkey.retromusic.extensions.accentColor
+import code.name.monkey.retromusic.extensions.dipToPix
+import code.name.monkey.retromusic.extensions.focusAndShowKeyboard
+import code.name.monkey.retromusic.extensions.showToast
import code.name.monkey.retromusic.fragments.base.AbsMainActivityFragment
import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.views.addAlpha
@@ -45,7 +48,6 @@ import com.google.android.material.textfield.TextInputEditText
import com.google.android.material.transition.MaterialFadeThrough
import net.yslibrary.android.keyboardvisibilityevent.KeyboardVisibilityEvent
import java.util.*
-import kotlin.collections.ArrayList
class SearchFragment : AbsMainActivityFragment(R.layout.fragment_search), TextWatcher,
@@ -229,9 +231,9 @@ class SearchFragment : AbsMainActivityFragment(R.layout.fragment_search), TextWa
private fun hideKeyboard(view: View?) {
if (view != null) {
- val imm: InputMethodManager =
- requireContext().getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
- imm.hideSoftInputFromWindow(view.windowToken, 0)
+ val imm =
+ requireContext().getSystemService()
+ imm?.hideSoftInputFromWindow(view.windowToken, 0)
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/preferences/BlacklistPreferenceDialog.kt b/app/src/main/java/code/name/monkey/retromusic/preferences/BlacklistPreferenceDialog.kt
index c871d9266..e967c25b7 100644
--- a/app/src/main/java/code/name/monkey/retromusic/preferences/BlacklistPreferenceDialog.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/preferences/BlacklistPreferenceDialog.kt
@@ -34,7 +34,6 @@ import code.name.monkey.retromusic.extensions.materialDialog
import code.name.monkey.retromusic.providers.BlacklistStore
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import java.io.File
-import java.util.*
class BlacklistPreference @JvmOverloads constructor(
context: Context,
diff --git a/app/src/main/java/code/name/monkey/retromusic/repository/SongRepository.kt b/app/src/main/java/code/name/monkey/retromusic/repository/SongRepository.kt
index 03de64ac3..0814f763d 100644
--- a/app/src/main/java/code/name/monkey/retromusic/repository/SongRepository.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/repository/SongRepository.kt
@@ -30,7 +30,6 @@ import code.name.monkey.retromusic.extensions.getStringOrNull
import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.providers.BlacklistStore
import code.name.monkey.retromusic.util.PreferenceUtil
-import java.util.*
/**
* Created by hemanths on 10/08/17.
diff --git a/app/src/main/java/code/name/monkey/retromusic/service/MediaButtonIntentReceiver.kt b/app/src/main/java/code/name/monkey/retromusic/service/MediaButtonIntentReceiver.kt
index 54e3e5e4e..e5d39479d 100644
--- a/app/src/main/java/code/name/monkey/retromusic/service/MediaButtonIntentReceiver.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/service/MediaButtonIntentReceiver.kt
@@ -26,6 +26,7 @@ import android.os.PowerManager.WakeLock
import android.util.Log
import android.view.KeyEvent
import androidx.core.content.ContextCompat
+import androidx.core.content.getSystemService
import code.name.monkey.retromusic.BuildConfig
import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_PAUSE
import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_PLAY
@@ -169,8 +170,8 @@ class MediaButtonIntentReceiver : BroadcastReceiver() {
private fun acquireWakeLockAndSendMessage(context: Context, msg: Message, delay: Long) {
if (wakeLock == null) {
val appContext = context.applicationContext
- val pm = appContext.getSystemService(Context.POWER_SERVICE) as PowerManager
- wakeLock = pm.newWakeLock(
+ val pm = appContext.getSystemService()
+ wakeLock = pm?.newWakeLock(
PowerManager.PARTIAL_WAKE_LOCK,
"RetroMusicApp:Wakelock headset button"
)
diff --git a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt
index 03336da2a..1a4a02744 100644
--- a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt
@@ -40,6 +40,7 @@ import android.telephony.PhoneStateListener
import android.telephony.TelephonyManager
import android.util.Log
import android.widget.Toast
+import androidx.core.content.edit
import androidx.core.content.getSystemService
import androidx.media.AudioAttributesCompat
import androidx.media.AudioAttributesCompat.CONTENT_TYPE_MUSIC
@@ -123,6 +124,7 @@ class MusicService : MediaBrowserServiceCompat(),
private val appWidgetSmall = AppWidgetSmall.instance
private val appWidgetText = AppWidgetText.instance
private val appWidgetMd3 = AppWidgetMD3.instance
+ private val appWidgetCircle = AppWidgetCircle.instance
private val widgetIntentReceiver: BroadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
val command = intent.getStringExtra(EXTRA_APP_WIDGET_NAME)
@@ -147,17 +149,20 @@ class MusicService : MediaBrowserServiceCompat(),
AppWidgetMD3.NAME -> {
appWidgetMd3.performUpdate(this@MusicService, ids)
}
+ AppWidgetCircle.NAME -> {
+ appWidgetCircle.performUpdate(this@MusicService, ids)
+ }
}
}
}
}
private var audioManager: AudioManager? = null
get() {
- if (field == null) {
- field = getSystemService()
+ if (field == null) {
+ field = getSystemService()
+ }
+ return field
}
- return field
- }
private val becomingNoisyReceiverIntentFilter =
IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY)
@@ -185,15 +190,15 @@ class MusicService : MediaBrowserServiceCompat(),
}
}
private var playerHandler: PlaybackHandler? = null
- private val audioFocusListener: OnAudioFocusChangeListener =
- OnAudioFocusChangeListener { focusChange ->
- playerHandler?.obtainMessage(FOCUS_CHANGE, focusChange, 0)?.sendToTarget()
- }
+ private val audioFocusListener = OnAudioFocusChangeListener { focusChange ->
+ playerHandler?.obtainMessage(FOCUS_CHANGE, focusChange, 0)?.sendToTarget()
+ }
private var playingNotification: PlayingNotification? = null
private val updateFavoriteReceiver: BroadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
- playingNotification!!.updateFavorite(currentSong) { startForegroundOrNotify() }
+ playingNotification?.updateFavorite(currentSong) { startForegroundOrNotify() }
startForegroundOrNotify()
+ appWidgetCircle.notifyChange(this@MusicService, FAVORITE_STATE_CHANGED)
}
}
private val lockScreenReceiver: BroadcastReceiver = object : BroadcastReceiver() {
@@ -209,8 +214,19 @@ class MusicService : MediaBrowserServiceCompat(),
private var queueSaveHandlerThread: HandlerThread? = null
private var queuesRestored = false
- @JvmField
var repeatMode = 0
+ private set(value) {
+ when (value) {
+ REPEAT_MODE_NONE, REPEAT_MODE_ALL, REPEAT_MODE_THIS -> {
+ field = value
+ PreferenceManager.getDefaultSharedPreferences(this).edit {
+ putInt(SAVED_REPEAT_MODE, value)
+ }
+ prepareNext()
+ handleAndSendChangeInternal(REPEAT_MODE_CHANGED)
+ }
+ }
+ }
@JvmField
var shuffleMode = 0
@@ -222,7 +238,7 @@ class MusicService : MediaBrowserServiceCompat(),
if (action != null) {
if (BluetoothDevice.ACTION_ACL_CONNECTED == action && isBluetoothSpeaker) {
if (audioManager!!.isBluetoothA2dpOn) {
- play()
+ play()
}
}
}
@@ -364,12 +380,12 @@ class MusicService : MediaBrowserServiceCompat(),
unregisterReceiver(bluetoothReceiver)
bluetoothConnectedRegistered = false
}
- mediaSession!!.isActive = false
+ mediaSession?.isActive = false
quit()
releaseResources()
contentResolver.unregisterContentObserver(mediaStoreObserver)
unregisterOnSharedPreferenceChangedListener(this)
- wakeLock!!.release()
+ wakeLock?.release()
sendBroadcast(Intent("code.name.monkey.retromusic.RETRO_MUSIC_SERVICE_DESTROYED"))
}
@@ -432,10 +448,10 @@ class MusicService : MediaBrowserServiceCompat(),
}
fun cycleRepeatMode() {
- when (getRepeatMode()) {
- REPEAT_MODE_NONE -> setRepeatMode(REPEAT_MODE_ALL)
- REPEAT_MODE_ALL -> setRepeatMode(REPEAT_MODE_THIS)
- else -> setRepeatMode(REPEAT_MODE_NONE)
+ repeatMode = when (repeatMode) {
+ REPEAT_MODE_NONE -> REPEAT_MODE_ALL
+ REPEAT_MODE_ALL -> REPEAT_MODE_THIS
+ else -> REPEAT_MODE_NONE
}
}
@@ -454,7 +470,7 @@ class MusicService : MediaBrowserServiceCompat(),
private fun getNextPosition(force: Boolean): Int {
var position = getPosition() + 1
- when (getRepeatMode()) {
+ when (repeatMode) {
REPEAT_MODE_ALL -> if (isLastTrack) {
position = 0
}
@@ -493,11 +509,11 @@ class MusicService : MediaBrowserServiceCompat(),
var newPosition = getPosition() - 1
when (repeatMode) {
REPEAT_MODE_ALL -> if (newPosition < 0) {
- newPosition = getPlayingQueue().size - 1
+ newPosition = playingQueue.size - 1
}
REPEAT_MODE_THIS -> if (force) {
if (newPosition < 0) {
- newPosition = getPlayingQueue().size - 1
+ newPosition = playingQueue.size - 1
}
} else {
newPosition = getPosition()
@@ -520,24 +536,6 @@ class MusicService : MediaBrowserServiceCompat(),
return duration
}
- fun getRepeatMode(): Int {
- return repeatMode
- }
-
- fun setRepeatMode(repeatMode: Int) {
- when (repeatMode) {
- REPEAT_MODE_NONE, REPEAT_MODE_ALL, REPEAT_MODE_THIS -> {
- this.repeatMode = repeatMode
- PreferenceManager.getDefaultSharedPreferences(this)
- .edit()
- .putInt(SAVED_REPEAT_MODE, repeatMode)
- .apply()
- prepareNext()
- handleAndSendChangeInternal(REPEAT_MODE_CHANGED)
- }
- }
- }
-
private fun getShuffleMode(): Int {
return shuffleMode
}
@@ -550,7 +548,7 @@ class MusicService : MediaBrowserServiceCompat(),
when (shuffleMode) {
SHUFFLE_MODE_SHUFFLE -> {
this.shuffleMode = shuffleMode
- makeShuffleList(getPlayingQueue().toMutableList(), getPosition())
+ makeShuffleList(playingQueue, getPosition())
position = 0
}
SHUFFLE_MODE_NONE -> {
@@ -558,9 +556,9 @@ class MusicService : MediaBrowserServiceCompat(),
val currentSongId = Objects.requireNonNull(currentSong).id
playingQueue = ArrayList(originalPlayingQueue)
var newPosition = 0
- for (song in getPlayingQueue()) {
+ for (song in playingQueue) {
if (song.id == currentSongId) {
- newPosition = getPlayingQueue().indexOf(song)
+ newPosition = playingQueue.indexOf(song)
}
}
position = newPosition
@@ -571,8 +569,8 @@ class MusicService : MediaBrowserServiceCompat(),
}
private fun getSongAt(position: Int): Song {
- return if ((position >= 0) && (position < getPlayingQueue().size)) {
- getPlayingQueue()[position]
+ return if ((position >= 0) && (position < playingQueue.size)) {
+ playingQueue[position]
} else {
emptySong
}
@@ -737,7 +735,7 @@ class MusicService : MediaBrowserServiceCompat(),
COLORED_NOTIFICATION -> updateNotification()
CLASSIC_NOTIFICATION -> {
updateNotification()
- playingNotification?.setPlaying(isPlaying){ startForegroundOrNotify()}
+ playingNotification?.setPlaying(isPlaying) { startForegroundOrNotify() }
playingNotification?.updateMetadata(currentSong) { startForegroundOrNotify() }
}
PLAYBACK_SPEED -> updateMediaSessionPlaybackState()
@@ -980,16 +978,16 @@ class MusicService : MediaBrowserServiceCompat(),
}
private fun removeSongImpl(song: Song) {
- for (i in playingQueue.indices) {
- if (playingQueue[i].id == song.id) {
- playingQueue.removeAt(i)
- rePosition(i)
- }
+ val deletePosition = playingQueue.indexOf(song)
+ if (deletePosition != -1) {
+ playingQueue.removeAt(deletePosition)
+ rePosition(deletePosition)
}
- for (i in originalPlayingQueue.indices) {
- if (originalPlayingQueue[i].id == song.id) {
- originalPlayingQueue.removeAt(i)
- }
+
+ val originalDeletePosition = originalPlayingQueue.indexOf(song)
+ if (originalDeletePosition != -1) {
+ originalPlayingQueue.removeAt(originalDeletePosition)
+ rePosition(originalDeletePosition)
}
}
@@ -1005,6 +1003,19 @@ class MusicService : MediaBrowserServiceCompat(),
notifyChange(QUEUE_CHANGED)
}
+ private fun rePosition(deletedPosition: Int) {
+ val currentPosition = getPosition()
+ if (deletedPosition < currentPosition) {
+ position = currentPosition - 1
+ } else if (deletedPosition == currentPosition) {
+ if (playingQueue.size > deletedPosition) {
+ setPosition(position)
+ } else {
+ setPosition(position - 1)
+ }
+ }
+ }
+
@Synchronized
fun restoreQueuesAndPositionIfNecessary() {
if (!queuesRestored && playingQueue.isEmpty()) {
@@ -1040,10 +1051,9 @@ class MusicService : MediaBrowserServiceCompat(),
}
fun savePositionInTrack() {
- PreferenceManager.getDefaultSharedPreferences(this)
- .edit()
- .putInt(SAVED_POSITION_IN_TRACK, songProgressMillis)
- .apply()
+ PreferenceManager.getDefaultSharedPreferences(this).edit {
+ putInt(SAVED_POSITION_IN_TRACK, songProgressMillis)
+ }
}
fun saveQueuesImpl() {
@@ -1131,7 +1141,7 @@ class MusicService : MediaBrowserServiceCompat(),
.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, null)
metaData.putLong(
MediaMetadataCompat.METADATA_KEY_NUM_TRACKS,
- getPlayingQueue().size.toLong()
+ playingQueue.size.toLong()
)
if (isAlbumArtOnLockScreen) {
val screenSize = RetroUtil.getScreenSize(this@MusicService)
@@ -1184,7 +1194,7 @@ class MusicService : MediaBrowserServiceCompat(),
savePositionInTrack()
}
songPlayCountHelper.notifyPlayStateChanged(isPlaying)
- playingNotification?.setPlaying(isPlaying){ startForegroundOrNotify()}
+ playingNotification?.setPlaying(isPlaying) { startForegroundOrNotify() }
startForegroundOrNotify()
}
FAVORITE_STATE_CHANGED -> {
@@ -1315,19 +1325,6 @@ class MusicService : MediaBrowserServiceCompat(),
playerHandler?.obtainMessage(PREPARE_NEXT)?.sendToTarget()
}
- private fun rePosition(deletedPosition: Int) {
- val currentPosition = getPosition()
- if (deletedPosition < currentPosition) {
- position = currentPosition - 1
- } else if (deletedPosition == currentPosition) {
- if (playingQueue.size > deletedPosition) {
- setPosition(position)
- } else {
- setPosition(position - 1)
- }
- }
- }
-
private fun registerBluetoothConnected() {
Log.i(TAG, "registerBluetoothConnected: ")
if (!bluetoothConnectedRegistered) {
@@ -1380,10 +1377,9 @@ class MusicService : MediaBrowserServiceCompat(),
}
private fun savePosition() {
- PreferenceManager.getDefaultSharedPreferences(this)
- .edit()
- .putInt(SAVED_POSITION, getPosition())
- .apply()
+ PreferenceManager.getDefaultSharedPreferences(this).edit {
+ putInt(SAVED_POSITION, getPosition())
+ }
}
private fun saveQueues() {
@@ -1399,13 +1395,14 @@ class MusicService : MediaBrowserServiceCompat(),
appWidgetCard.notifyChange(this, what)
appWidgetText.notifyChange(this, what)
appWidgetMd3.notifyChange(this, what)
+ appWidgetCircle.notifyChange(this, what)
}
private fun setCustomAction(stateBuilder: PlaybackStateCompat.Builder) {
var repeatIcon = R.drawable.ic_repeat // REPEAT_MODE_NONE
- if (getRepeatMode() == REPEAT_MODE_THIS) {
+ if (repeatMode == REPEAT_MODE_THIS) {
repeatIcon = R.drawable.ic_repeat_one
- } else if (getRepeatMode() == REPEAT_MODE_ALL) {
+ } else if (repeatMode == REPEAT_MODE_ALL) {
repeatIcon = R.drawable.ic_repeat_white_circle
}
stateBuilder.addCustomAction(
diff --git a/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.kt
index 7bd0bbe00..4f5bb0ede 100644
--- a/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.kt
@@ -1,20 +1,17 @@
package code.name.monkey.retromusic.util
-import android.app.Activity
import android.content.ContentUris
import android.content.ContentValues
import android.content.Context
import android.content.Intent
import android.database.Cursor
import android.net.Uri
-import android.os.Build
import android.os.Environment
import android.provider.BaseColumns
import android.provider.MediaStore
import android.text.TextUtils
import android.util.Log
import android.widget.Toast
-import androidx.annotation.RequiresApi
import androidx.core.content.FileProvider
import androidx.fragment.app.FragmentActivity
import code.name.monkey.appthemehelper.util.VersionUtils
@@ -524,15 +521,6 @@ object MusicUtil : KoinComponent {
}
}
- @RequiresApi(Build.VERSION_CODES.R)
- fun deleteTracksR(activity: Activity, songs: List) {
- removeFromQueue(songs)
- val pendingIntent = MediaStore.createDeleteRequest(activity.contentResolver, songs.map {
- getSongFileUri(it.id)
- })
- activity.startIntentSenderForResult(pendingIntent.intentSender, 45, null, 0, 0, 0, null)
- }
-
fun songByGenre(genreId: Long): Song {
return repository.getSongByGenre(genreId)
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt
index eb6585548..990f611e9 100644
--- a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt
@@ -3,8 +3,8 @@ package code.name.monkey.retromusic.util
import android.content.SharedPreferences.OnSharedPreferenceChangeListener
import android.net.ConnectivityManager
import android.net.NetworkInfo
-import androidx.core.content.ContextCompat
import androidx.core.content.edit
+import androidx.core.content.getSystemService
import androidx.preference.PreferenceManager
import androidx.viewpager.widget.ViewPager
import code.name.monkey.appthemehelper.util.VersionUtils
@@ -332,10 +332,7 @@ object PreferenceUtil {
return when (autoDownloadImagesPolicy) {
"always" -> true
"only_wifi" -> {
- val connectivityManager = ContextCompat.getSystemService(
- App.getContext(),
- ConnectivityManager::class.java
- )
+ val connectivityManager = App.getContext().getSystemService()
var netInfo: NetworkInfo? = null
if (connectivityManager != null) {
netInfo = connectivityManager.activeNetworkInfo
@@ -691,7 +688,7 @@ object PreferenceUtil {
set(value) = sharedPreferences.edit { putFloat(PLAYBACK_PITCH, value) }
val appBarMode: TopAppBarLayout.AppBarMode
- get() = if (sharedPreferences.getString(APPBAR_MODE, "0") == "0") {
+ get() = if (sharedPreferences.getString(APPBAR_MODE, "1") == "0") {
TopAppBarLayout.AppBarMode.COLLAPSING
} else {
TopAppBarLayout.AppBarMode.SIMPLE
@@ -712,6 +709,7 @@ object PreferenceUtil {
val swipeAnywhereToChangeSong
get() = sharedPreferences.getBoolean(SWIPE_ANYWHERE_NOW_PLAYING, true)
}
+
enum class LyricsType {
REPLACE_COVER, OVER_COVER
}
\ No newline at end of file
diff --git a/app/src/main/java/code/name/monkey/retromusic/volume/AudioVolumeObserver.kt b/app/src/main/java/code/name/monkey/retromusic/volume/AudioVolumeObserver.kt
index 72c1ebb04..ad8247866 100644
--- a/app/src/main/java/code/name/monkey/retromusic/volume/AudioVolumeObserver.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/volume/AudioVolumeObserver.kt
@@ -17,10 +17,11 @@ import android.content.Context
import android.media.AudioManager
import android.os.Handler
import android.provider.Settings
+import androidx.core.content.getSystemService
class AudioVolumeObserver(private val context: Context) {
private val mAudioManager: AudioManager =
- context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
+ context.getSystemService()!!
private var contentObserver: AudioVolumeContentObserver? = null
fun register(audioStreamType: Int, listener: OnAudioVolumeChangedListener) {
diff --git a/app/src/main/res/drawable-xxxhdpi/np_peak.webp b/app/src/main/res/drawable-xxxhdpi/np_peek.webp
similarity index 100%
rename from app/src/main/res/drawable-xxxhdpi/np_peak.webp
rename to app/src/main/res/drawable-xxxhdpi/np_peek.webp
diff --git a/app/src/main/res/layout/fragment_peak_album_cover.xml b/app/src/main/res/layout/fragment_peek_album_cover.xml
similarity index 100%
rename from app/src/main/res/layout/fragment_peak_album_cover.xml
rename to app/src/main/res/layout/fragment_peek_album_cover.xml
diff --git a/app/src/main/res/layout/fragment_peak_control_player.xml b/app/src/main/res/layout/fragment_peek_control_player.xml
similarity index 100%
rename from app/src/main/res/layout/fragment_peak_control_player.xml
rename to app/src/main/res/layout/fragment_peek_control_player.xml
diff --git a/app/src/main/res/layout/fragment_peak_player.xml b/app/src/main/res/layout/fragment_peek_player.xml
similarity index 98%
rename from app/src/main/res/layout/fragment_peak_player.xml
rename to app/src/main/res/layout/fragment_peek_player.xml
index b12cdbbab..4cb5e1577 100644
--- a/app/src/main/res/layout/fragment_peak_player.xml
+++ b/app/src/main/res/layout/fragment_peek_player.xml
@@ -101,12 +101,12 @@
+ tools:layout="@layout/fragment_peek_control_player" />
\ No newline at end of file
diff --git a/app/src/main/res/values-ar-rSA/strings.xml b/app/src/main/res/values-ar-rSA/strings.xml
index c7cf34ceb..9f4b1e077 100644
--- a/app/src/main/res/values-ar-rSA/strings.xml
+++ b/app/src/main/res/values-ar-rSA/strings.xml
@@ -278,7 +278,7 @@
أخر 3 أشهر
لصق كلمات الاغنية هنا
لصق كلمات الإطار الزمني هنا
- الذروة
+ الذروة
تم رفض إذن الوصول إلى وحدة التخزين الخارجي.
يحتاج التطبيق إلى إذن للوصول إلى وحدة تخزين جهازك لتشغيل الموسيقى
الوصول إلى التخزين
diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml
index 41bcbad91..082fbc03c 100644
--- a/app/src/main/res/values-cs-rCZ/strings.xml
+++ b/app/src/main/res/values-cs-rCZ/strings.xml
@@ -271,7 +271,7 @@
Past 3 months
Paste Lyrics Here
Paste timeframe lyrics here
- Peak
+ Peek
Povolení přístupu k externímu úložišti bylo zamítnuto.
Aplikace potřebuje přístup k úložišti vašeho zařízení, aby mohla přehráváat hudbu
Přístup k úložišti
diff --git a/app/src/main/res/values-da-rDK/strings.xml b/app/src/main/res/values-da-rDK/strings.xml
index 728c7e913..a1aeace18 100644
--- a/app/src/main/res/values-da-rDK/strings.xml
+++ b/app/src/main/res/values-da-rDK/strings.xml
@@ -254,7 +254,7 @@
Past 3 months
Paste Lyrics Here
Paste timeframe lyrics here
- Peak
+ Peek
Permission to access external storage denied.
The app needs permission to access your device storage for playing music
Storage Access
diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml
index 78669c70a..688bf063a 100644
--- a/app/src/main/res/values-de-rDE/strings.xml
+++ b/app/src/main/res/values-de-rDE/strings.xml
@@ -267,7 +267,7 @@
Letzte 3 Monate
Songtext hier einfügen
Songtexte mit Zeitfenster hier einfügen
- Spitze
+ Spitze
Berechtigung für den Zugriff auf externen Speicher verweigert.
Die App benötigt die Berechtigung für den Zugriff auf den Gerätespeicher, um Musik abspielen zu können
Speicherzugriff
diff --git a/app/src/main/res/values-el-rGR/strings.xml b/app/src/main/res/values-el-rGR/strings.xml
index f779907be..443a14c5e 100644
--- a/app/src/main/res/values-el-rGR/strings.xml
+++ b/app/src/main/res/values-el-rGR/strings.xml
@@ -267,7 +267,7 @@
Τους περασμένους 3 μήνες
Επικολλήστε τους στίχους εδω
Επικόλληση στίχων χρονικού πλαισίου εδώ
- Κορυφή
+ Κορυφή
Η άδεια για προσπέλαση του external storage δεν παραχωρήθηκε.
Η εφαρμογή χρειάζεται άδεια για πρόσβαση στον αποθηκευτικό χώρο της συσκευής σας για την αναπαραγωγή μουσικής
Πρόσβαση Χώρου Αποθήκευσης
diff --git a/app/src/main/res/values-en-rUS/strings.xml b/app/src/main/res/values-en-rUS/strings.xml
index b599615cf..afa1beb92 100644
--- a/app/src/main/res/values-en-rUS/strings.xml
+++ b/app/src/main/res/values-en-rUS/strings.xml
@@ -340,7 +340,7 @@
Past 3 months
- Peak
+ Peek
Permission to access external storage denied.
diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml
index c6f1608ec..531728abf 100644
--- a/app/src/main/res/values-es-rES/strings.xml
+++ b/app/src/main/res/values-es-rES/strings.xml
@@ -266,7 +266,7 @@
Más de 3 meses
Pega las Letras Aquí
Pegar las letras con marcas de tiempo aquí
- Pico
+ Pico
Permiso para acceder al almacenamiento externo denegado.
La aplicación necesita permiso para acceder al almacenamiento de tu dispositivo y reproducir música
Acceso al Almacenamiento
diff --git a/app/src/main/res/values-eu-rES/strings.xml b/app/src/main/res/values-eu-rES/strings.xml
index ab934cdc0..52240e972 100644
--- a/app/src/main/res/values-eu-rES/strings.xml
+++ b/app/src/main/res/values-eu-rES/strings.xml
@@ -247,7 +247,7 @@
Bestelako
Pasahitza
Azken 3 hilabeteak
- Peak
+ Peek
Kanpoko biltegiratzera sarbidea ukatua
Baimenak ukatuak izan dira
Pertsonalizatu
diff --git a/app/src/main/res/values-fa-rIR/strings.xml b/app/src/main/res/values-fa-rIR/strings.xml
index 9de8f0734..82758bf73 100644
--- a/app/src/main/res/values-fa-rIR/strings.xml
+++ b/app/src/main/res/values-fa-rIR/strings.xml
@@ -267,7 +267,7 @@
3 ماه گذشته
متن را در اینجا بارگزاری کنید
متون زمان دار را در اینجا بارگزاری کنید
- حالت peak
+ حالت peek
مجوز دسترسی به حافظه رد شد
برنامه نیاز به دسترسی به حافظه برای پخش آهنگ ها دارد
دسترسی به حافظه
diff --git a/app/src/main/res/values-fil-rPH/strings.xml b/app/src/main/res/values-fil-rPH/strings.xml
index 9bc259618..4c65ee515 100644
--- a/app/src/main/res/values-fil-rPH/strings.xml
+++ b/app/src/main/res/values-fil-rPH/strings.xml
@@ -267,7 +267,7 @@
Nakalipas na 3 buwan
Idikit ang Lyrics Dito
Idikit ang timeframe lyrics dito
- Tuktok
+ Tuktok
Tinanggihan ang pahintulot na ma-access ang panlabas na storage.
Ang app ay nangangailangan ng permiso upang ma-access ang storage ng iyong device para ma-play ang musika
Access sa Storage
diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml
index defc568ac..6f847b7ae 100644
--- a/app/src/main/res/values-fr-rFR/strings.xml
+++ b/app/src/main/res/values-fr-rFR/strings.xml
@@ -266,7 +266,7 @@
3 derniers mois
Copiez les paroles ici
Collez les paroles de la période ici
- Aperçu
+ Aperçu
La permission pour accéder au stockage externe a été refusée.
L\'application a besoin d\'accéder au stockage de votre appareil pour lire votre musique
Accès au stockage
diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml
index 3dd03d243..fe88987b9 100644
--- a/app/src/main/res/values-hi-rIN/strings.xml
+++ b/app/src/main/res/values-hi-rIN/strings.xml
@@ -267,7 +267,7 @@
Past 3 months
Paste Lyrics Here
Paste timeframe lyrics here
- Peak
+ Peek
Permission to access external storage denied.
The app needs permission to access your device storage for playing music
Storage Access
diff --git a/app/src/main/res/values-hr-rHR/strings.xml b/app/src/main/res/values-hr-rHR/strings.xml
index 777277130..0f34e15e7 100644
--- a/app/src/main/res/values-hr-rHR/strings.xml
+++ b/app/src/main/res/values-hr-rHR/strings.xml
@@ -269,7 +269,7 @@
Past 3 months
Paste Lyrics Here
Paste timeframe lyrics here
- Peak
+ Peek
Permission to access external storage denied.
The app needs permission to access your device storage for playing music
Storage Access
diff --git a/app/src/main/res/values-hu-rHU/strings.xml b/app/src/main/res/values-hu-rHU/strings.xml
index 00f22680b..754c04980 100644
--- a/app/src/main/res/values-hu-rHU/strings.xml
+++ b/app/src/main/res/values-hu-rHU/strings.xml
@@ -267,7 +267,7 @@
Elmúlt 3 hónap
Dalszöveg beillesztése ide
Időzített dalszöveg beillesztése ide
- Csúcs
+ Csúcs
A külső tárolási hozzáférés engedélyezése tiltva.
Az alkalmazásnak engedélyre van szüksége az eszköz tárhelyéhez a zenék lejátszásához
Tárhely engedély
diff --git a/app/src/main/res/values-in-rID/strings.xml b/app/src/main/res/values-in-rID/strings.xml
index 7300a5a34..94c94727a 100644
--- a/app/src/main/res/values-in-rID/strings.xml
+++ b/app/src/main/res/values-in-rID/strings.xml
@@ -265,7 +265,7 @@
3 bulan terakhir
Tempel Lirik Disini
Tempel kerangka waktu lirik di sini
- Puncak
+ Puncak
Izin untuk mengakses penyimpanan eksternal ditolak.
Aplikasi memerlukan izin untuk mengakses penyimpanan perangkat Anda untuk memutar musik
Akses Penyimpanan
diff --git a/app/src/main/res/values-it-rIT/strings.xml b/app/src/main/res/values-it-rIT/strings.xml
index 94316104e..ebe4ab19d 100644
--- a/app/src/main/res/values-it-rIT/strings.xml
+++ b/app/src/main/res/values-it-rIT/strings.xml
@@ -282,7 +282,7 @@ https://play.google.com/store/apps/details?id=%s
Ultimi 3 mesi
Incolla i testi qui
Incolla i testi sincronizzati qui
- Picco
+ Picco
Autorizzazione ad accedere all\'archiviazione esterna negata.
L\'app necessita dell\'autorizzazione ad accedere all\'archiviazione del dispositivo per riprodurre musica
Accesso all\'archiviazione
diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml
index 3d88a65d3..49d6987c7 100644
--- a/app/src/main/res/values-ja-rJP/strings.xml
+++ b/app/src/main/res/values-ja-rJP/strings.xml
@@ -265,7 +265,7 @@
過去3ヶ月
Paste Lyrics Here
Paste timeframe lyrics here
- ピーク
+ ピーク
外部ストレージへのアクセスが拒否されました
The app needs permission to access your device storage for playing music
Storage Access
diff --git a/app/src/main/res/values-kmr-rTR/strings.xml b/app/src/main/res/values-kmr-rTR/strings.xml
index 6ee993cd1..e278105db 100644
--- a/app/src/main/res/values-kmr-rTR/strings.xml
+++ b/app/src/main/res/values-kmr-rTR/strings.xml
@@ -268,7 +268,7 @@ https://play.google.com/store/apps/details?id=%s
3 mehên borî
Peyvên stranê Li vir pêve bike
Peyvê stranên demsazkirî li vir binivisîne
- Serî
+ Serî
Mafa gihiştînê bo bîrgeha derveyî hate têkbirin.
Pêdiviya sepanê bi gihiştîna bîrgeha derveyî ya amûra te heye ji bo lêdana muzîkê
Gihîştina bergehê
diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml
index 844e2c845..ffdc3b1d8 100644
--- a/app/src/main/res/values-ko-rKR/strings.xml
+++ b/app/src/main/res/values-ko-rKR/strings.xml
@@ -265,7 +265,7 @@
이전 3개월
Paste Lyrics Here
Paste timeframe lyrics here
- Peak
+ Peek
외부 저장소 접근 권한이 거부되었습니다.
The app needs permission to access your device storage for playing music
Storage Access
diff --git a/app/src/main/res/values-ml-rIN/strings.xml b/app/src/main/res/values-ml-rIN/strings.xml
index 4a7355e32..363593f6b 100644
--- a/app/src/main/res/values-ml-rIN/strings.xml
+++ b/app/src/main/res/values-ml-rIN/strings.xml
@@ -267,7 +267,7 @@
Past 3 months
Paste Lyrics Here
Paste timeframe lyrics here
- Peak
+ Peek
Permission to access external storage denied.
The app needs permission to access your device storage for playing music
Storage Access
diff --git a/app/src/main/res/values-my-rMM/strings.xml b/app/src/main/res/values-my-rMM/strings.xml
index bed478729..dd9f8ff98 100644
--- a/app/src/main/res/values-my-rMM/strings.xml
+++ b/app/src/main/res/values-my-rMM/strings.xml
@@ -265,7 +265,7 @@
လွန်ခဲ့သော (၃)လ
Paste Lyrics Here
Paste timeframe lyrics here
- Peak ပုံစံ
+ Peek ပုံစံ
External Storage ကြည့်ရှုခွင့်အားငြင်းပယ်ခဲ့သည်။
သီချင်းဖွင့်ရန်အတွက် ယခု App အား Storage ကြည့်ရှုခွင့်ပေးရန်လိုသည်။
Storage ကြည့်ရှုခွင့်
diff --git a/app/src/main/res/values-nl-rNL/strings.xml b/app/src/main/res/values-nl-rNL/strings.xml
index f76c6362c..1e7857bb6 100644
--- a/app/src/main/res/values-nl-rNL/strings.xml
+++ b/app/src/main/res/values-nl-rNL/strings.xml
@@ -267,7 +267,7 @@
Laatste 3 maanden
Plak tekst/lyrics hier
Plak timeframe tekst/lyrics hier
- Piek
+ Piek
Permissie voor toegang tot extern opslag is afgewezen
De app heeft toestemming nodig tot je apparaat\'s opslag om muziek af te kunnen spelen
Toegang tot opslag
diff --git a/app/src/main/res/values-no-rNO/strings.xml b/app/src/main/res/values-no-rNO/strings.xml
index 8b068fce1..e4d2bffa3 100644
--- a/app/src/main/res/values-no-rNO/strings.xml
+++ b/app/src/main/res/values-no-rNO/strings.xml
@@ -267,7 +267,7 @@
Past 3 months
Paste Lyrics Here
Paste timeframe lyrics here
- Peak
+ Peek
Permission to access external storage denied.
The app needs permission to access your device storage for playing music
Storage Access
diff --git a/app/src/main/res/values-or-rIN/strings.xml b/app/src/main/res/values-or-rIN/strings.xml
index b46956c24..0e6884788 100644
--- a/app/src/main/res/values-or-rIN/strings.xml
+++ b/app/src/main/res/values-or-rIN/strings.xml
@@ -267,7 +267,7 @@
Past 3 months
Paste Lyrics Here
Paste timeframe lyrics here
- Peak
+ Peek
Permission to access external storage denied.
The app needs permission to access your device storage for playing music
Storage Access
diff --git a/app/src/main/res/values-pl-rPL/strings.xml b/app/src/main/res/values-pl-rPL/strings.xml
index 004f46594..267d58c21 100644
--- a/app/src/main/res/values-pl-rPL/strings.xml
+++ b/app/src/main/res/values-pl-rPL/strings.xml
@@ -271,7 +271,7 @@
Ostatnie 3 miesiące
Wklej tekst tutaj
Paste timeframe lyrics here
- Szczyt
+ Szczyt
Odmowa dostępu do pamięci zewnętrznej.
The app needs permission to access your device storage for playing music
Storage Access
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index 136c06ba8..7cfcf38e9 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -266,7 +266,7 @@
Últimos 3 meses
Colar Letras Aqui
Colar letras sincronizadas aqui
- Pico
+ Pico
Permissão para acessar o armazenamento externo negada.
O aplicativo precisa de permissão para acessar o armazenamento do seu dispositivo para reproduzir músicas
Acesso ao Armazenamento
diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml
index 13eb5ce81..876602fbd 100644
--- a/app/src/main/res/values-pt-rPT/strings.xml
+++ b/app/src/main/res/values-pt-rPT/strings.xml
@@ -267,7 +267,7 @@
Últimos 3 meses
Colar letras aqui
Colar letras do cronograma aqui
- Espreitar
+ Espreitar
Permissão para aceder ao armazenamento externo negada.
Esta aplicação necessita de permissão para aceder ao armazenamento para tocar músicas
Acesso ao armazenamento
diff --git a/app/src/main/res/values-ro-rRO/strings.xml b/app/src/main/res/values-ro-rRO/strings.xml
index 6db7521d4..9a940f5aa 100644
--- a/app/src/main/res/values-ro-rRO/strings.xml
+++ b/app/src/main/res/values-ro-rRO/strings.xml
@@ -269,7 +269,7 @@
Ultimele 3 luni
Paste Lyrics Here
Paste timeframe lyrics here
- Peak
+ Peek
Accesul la stocarea externă este respinsă.
The app needs permission to access your device storage for playing music
Storage Access
diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml
index d52763fce..aa3d22e35 100644
--- a/app/src/main/res/values-ru-rRU/strings.xml
+++ b/app/src/main/res/values-ru-rRU/strings.xml
@@ -270,7 +270,7 @@
Последние 3 месяца
Вставьте текст песни
Вставьте синхронизированный текст песни
- Панель снизу
+ Панель снизу
Разрешение для доступа у внешнему хранилищу не получено.
Приложению требуется разрешение на доступ к внутренней памяти вашего устройства для воспроизведения музыки.
Доступ к внутренней памяти
diff --git a/app/src/main/res/values-sr-rSP/strings.xml b/app/src/main/res/values-sr-rSP/strings.xml
index e24549044..507e4e386 100644
--- a/app/src/main/res/values-sr-rSP/strings.xml
+++ b/app/src/main/res/values-sr-rSP/strings.xml
@@ -269,7 +269,7 @@
Prosla 3 meseca
Paste Lyrics Here
Paste timeframe lyrics here
- Peak
+ Peek
Dozvola za pristup spoljasnjem skladistu je odbijena
The app needs permission to access your device storage for playing music
Storage Access
diff --git a/app/src/main/res/values-sv-rSE/strings.xml b/app/src/main/res/values-sv-rSE/strings.xml
index 24e4e7759..b9c4ed06b 100644
--- a/app/src/main/res/values-sv-rSE/strings.xml
+++ b/app/src/main/res/values-sv-rSE/strings.xml
@@ -267,7 +267,7 @@
De senaste 3 månaderna
Paste Lyrics Here
Paste timeframe lyrics here
- Peak
+ Peek
Behörighet att få tillgång till extern lagring nekas.
The app needs permission to access your device storage for playing music
Storage Access
diff --git a/app/src/main/res/values-ta-rIN/strings.xml b/app/src/main/res/values-ta-rIN/strings.xml
index 681617b85..6cdec3352 100644
--- a/app/src/main/res/values-ta-rIN/strings.xml
+++ b/app/src/main/res/values-ta-rIN/strings.xml
@@ -267,7 +267,7 @@
Past 3 months
Paste Lyrics Here
Paste timeframe lyrics here
- Peak
+ Peek
Permission to access external storage denied.
The app needs permission to access your device storage for playing music
Storage Access
diff --git a/app/src/main/res/values-te-rIN/strings.xml b/app/src/main/res/values-te-rIN/strings.xml
index 238696cde..287e49c91 100644
--- a/app/src/main/res/values-te-rIN/strings.xml
+++ b/app/src/main/res/values-te-rIN/strings.xml
@@ -231,7 +231,7 @@
పాస్వర్డ్
గత 3 నెలలు
సాహిత్యాన్ని ఇక్కడ అతికించండి
- శిఖరం
+ శిఖరం
బాహ్య నిల్వను యాక్సెస్ చేయడానికి అనుమతి నిరాకరించబడింది.
అనుమతులు తిరస్కరించబడ్డాయి.
వ్యక్తిగతీకరించండి
diff --git a/app/src/main/res/values-th-rTH/strings.xml b/app/src/main/res/values-th-rTH/strings.xml
index 985f37f1e..c3d1e09a4 100644
--- a/app/src/main/res/values-th-rTH/strings.xml
+++ b/app/src/main/res/values-th-rTH/strings.xml
@@ -265,7 +265,7 @@
3 เดือนผ่านไป
วางเนื้อเพลงที่นี่
วางเนื้อเพลงในกรอบเวลาที่นี่
- Peak
+ Peek
สิทธิ์ในการเข้าถึงถูกปฏิเสธ
ต้องการสิทธิ์ในการเข้าถึงข้อมูลในเครื่องเพื่อเล่นเพลง
เข้าถึงการจัดเก็บข้อมูล
diff --git a/app/src/main/res/values-tr-rTR/strings.xml b/app/src/main/res/values-tr-rTR/strings.xml
index 98dbd98c7..3bdba884b 100644
--- a/app/src/main/res/values-tr-rTR/strings.xml
+++ b/app/src/main/res/values-tr-rTR/strings.xml
@@ -267,7 +267,7 @@
Son 3 ay
Sözleri buraya yapıştır
Zaman dilimli şarkı sözlerini buraya yapıştır
- Zirve
+ Zirve
Harici depolama izni reddedildi.
Uygulamanın müzik çalması için cihazınızın depolama erişimine ihtiyacı var
Depolama Erişimi
diff --git a/app/src/main/res/values-uk-rUA/strings.xml b/app/src/main/res/values-uk-rUA/strings.xml
index d4a8183c6..003de912e 100644
--- a/app/src/main/res/values-uk-rUA/strings.xml
+++ b/app/src/main/res/values-uk-rUA/strings.xml
@@ -271,7 +271,7 @@
Останні 3 місяці
Paste Lyrics Here
Paste timeframe lyrics here
- Пік
+ Пік
Відмовлено у доступі до зовнішнього сховища.
The app needs permission to access your device storage for playing music
Storage Access
diff --git a/app/src/main/res/values-vi-rVN/strings.xml b/app/src/main/res/values-vi-rVN/strings.xml
index 92199ea2d..6d3b6c4fd 100644
--- a/app/src/main/res/values-vi-rVN/strings.xml
+++ b/app/src/main/res/values-vi-rVN/strings.xml
@@ -266,7 +266,7 @@ tiếp tục xảy ra hãy \"Xóa dữ liệu ứng dụng\"
Mỗi tháng
Dán lời ở đây
Dán lời theo thời gian ở đây
- Thu nhỏ
+ Thu nhỏ
Quyền truy cập bộ nhớ ngoài bị từ chối.
Ứng dụng cần quyền truy cập bộ nhớ thiết bị của bạn để phát nhạc
Truy cập bộ nhớ
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index bc47abfaa..a38df706e 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -279,7 +279,7 @@
最近三个月
在此粘贴歌词
在此粘贴时段歌词
- 顶点
+ 顶点
访问外部存储权限被拒绝。
应用需要设备存储访问权限来播放音乐
存储空间权限
diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml
index 1228ec183..bd723cb35 100644
--- a/app/src/main/res/values-zh-rHK/strings.xml
+++ b/app/src/main/res/values-zh-rHK/strings.xml
@@ -229,7 +229,7 @@
密碼
在3個月內
在此貼上歌詞
- 波紋
+ 波紋
存取外置儲存空間權限被拒。
存取權限被拒。
個人化
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index ef6877d3d..036211eff 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -265,7 +265,7 @@
過去 3 個月
在這裡貼上歌詞
Paste timeframe lyrics here
- Peak
+ Peek
無法取得存取外部儲存空間的權限。
The app needs permission to access your device storage for playing music
Storage Access
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index e9fb9f717..c4b41ae8d 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -68,6 +68,7 @@
16dp
24dp
40dp
+ 28dp
16dp
16dp
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 6593896bb..d33bf0cd2 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -282,7 +282,7 @@
Past 3 months
Paste Lyrics Here
Paste timeframe lyrics here
- Peak
+ Peek
Permission to access external storage denied.
The app needs permission to access your device storage for playing music
Storage Access
diff --git a/app/src/main/res/xml/pref_ui.xml b/app/src/main/res/xml/pref_ui.xml
index be466eb0f..9c37d7e56 100644
--- a/app/src/main/res/xml/pref_ui.xml
+++ b/app/src/main/res/xml/pref_ui.xml
@@ -71,7 +71,7 @@
android:title="@string/pref_title_tab_text_mode" />