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" />