From dd628ed6f12f093009526ca2bc4d0eb27780c9a4 Mon Sep 17 00:00:00 2001
From: Prathamesh More
Date: Tue, 14 Mar 2023 12:47:50 +0530
Subject: [PATCH 01/28] Update targetSdk to 33
---
app/build.gradle | 2 +-
appthemehelper/build.gradle | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index 8641e6fa14..dae931b97f 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -10,7 +10,7 @@ android {
defaultConfig {
minSdk 21
- targetSdk 32
+ targetSdk 33
vectorDrawables.useSupportLibrary = true
diff --git a/appthemehelper/build.gradle b/appthemehelper/build.gradle
index 31bfc76af1..2a5e0f50dc 100644
--- a/appthemehelper/build.gradle
+++ b/appthemehelper/build.gradle
@@ -1,12 +1,12 @@
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
android {
- compileSdk 32
+ compileSdk 33
namespace "code.name.monkey.appthemehelper"
defaultConfig {
minSdk 21
- targetSdk 32
+ targetSdk 33
}
buildTypes {
release {
From 23da382b220ca55eebb75670195bd88fe4099687 Mon Sep 17 00:00:00 2001
From: Prathamesh More
Date: Tue, 14 Mar 2023 12:47:22 +0530
Subject: [PATCH 02/28] refactor: Migrate to Photo picker to select images
---
.../tageditor/AbsTagEditorActivity.kt | 48 +++--------------
.../artists/AbsArtistDetailsFragment.kt | 52 +++++++------------
2 files changed, 25 insertions(+), 75 deletions(-)
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AbsTagEditorActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AbsTagEditorActivity.kt
index c8ca11247c..df973203e9 100755
--- a/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AbsTagEditorActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AbsTagEditorActivity.kt
@@ -29,6 +29,7 @@ import android.view.animation.OvershootInterpolator
import android.widget.ImageView
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.IntentSenderRequest
+import androidx.activity.result.PickVisualMediaRequest
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AlertDialog
import androidx.lifecycle.lifecycleScope
@@ -37,7 +38,6 @@ import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.R.drawable
import code.name.monkey.retromusic.activities.base.AbsBaseActivity
-import code.name.monkey.retromusic.activities.saf.SAFGuideActivity
import code.name.monkey.retromusic.extensions.accentColor
import code.name.monkey.retromusic.extensions.colorButtons
import code.name.monkey.retromusic.extensions.hideSoftKeyboard
@@ -45,7 +45,6 @@ import code.name.monkey.retromusic.extensions.setTaskDescriptionColorAuto
import code.name.monkey.retromusic.model.ArtworkInfo
import code.name.monkey.retromusic.model.AudioTagInfo
import code.name.monkey.retromusic.repository.Repository
-import code.name.monkey.retromusic.util.SAFUtil
import code.name.monkey.retromusic.util.logD
import com.google.android.material.button.MaterialButton
import com.google.android.material.dialog.MaterialAlertDialogBuilder
@@ -56,7 +55,6 @@ import org.jaudiotagger.audio.AudioFileIO
import org.jaudiotagger.tag.FieldKey
import org.koin.android.ext.android.inject
import java.io.File
-import java.util.Collections
abstract class AbsTagEditorActivity : AbsBaseActivity() {
abstract val editorImage: ImageView
@@ -212,6 +210,11 @@ abstract class AbsTagEditorActivity : AbsBaseActivity() {
}
}
+ private val pickArtworkImage =
+ registerForActivityResult(ActivityResultContracts.PickVisualMedia()) { uri ->
+ loadImageFromFile(uri)
+ }
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
_binding = bindingInflater.invoke(layoutInflater)
@@ -252,14 +255,7 @@ abstract class AbsTagEditorActivity : AbsBaseActivity() {
}
private fun startImagePicker() {
- val intent = Intent(Intent.ACTION_GET_CONTENT)
- intent.type = "image/*"
- startActivityForResult(
- Intent.createChooser(
- intent,
- getString(R.string.pick_from_local_storage)
- ), REQUEST_CODE_SELECT_IMAGE
- )
+ pickArtworkImage.launch(PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly))
}
protected abstract fun loadCurrentImage()
@@ -400,36 +396,6 @@ abstract class AbsTagEditorActivity : AbsBaseActivity() {
}
}
-
- override fun onActivityResult(requestCode: Int, resultCode: Int, intent: Intent?) {
- super.onActivityResult(requestCode, resultCode, intent)
- when (requestCode) {
- REQUEST_CODE_SELECT_IMAGE -> if (resultCode == Activity.RESULT_OK) {
- intent?.data?.let {
- loadImageFromFile(it)
- }
- }
-
- SAFGuideActivity.REQUEST_CODE_SAF_GUIDE -> {
- SAFUtil.openTreePicker(this)
- }
-
- SAFUtil.REQUEST_SAF_PICK_TREE -> {
- if (resultCode == Activity.RESULT_OK) {
- SAFUtil.saveTreeUri(this, intent)
- writeTags(savedSongPaths)
- }
- }
-
- SAFUtil.REQUEST_SAF_PICK_FILE -> {
- if (resultCode == Activity.RESULT_OK) {
- writeTags(Collections.singletonList(currentSongPath + SAFUtil.SEPARATOR + intent!!.dataString))
- }
- }
- }
- }
-
-
private fun getAudioFile(path: String): AudioFile {
return try {
AudioFileIO.read(File(path))
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 3dfae6cd5b..8f2acec1b7 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
@@ -1,6 +1,5 @@
package code.name.monkey.retromusic.fragments.artists
-import android.app.Activity
import android.content.Intent
import android.graphics.Color
import android.os.Bundle
@@ -9,6 +8,7 @@ import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
+import androidx.activity.result.PickVisualMediaRequest
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.widget.PopupMenu
import androidx.core.os.bundleOf
@@ -153,14 +153,10 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm
MusicUtil.getReadableDurationString(MusicUtil.getTotalDuration(artist.songs))
)
val songText = resources.getQuantityString(
- R.plurals.albumSongs,
- artist.songCount,
- artist.songCount
+ R.plurals.albumSongs, artist.songCount, artist.songCount
)
val albumText = resources.getQuantityString(
- R.plurals.albums,
- artist.songCount,
- artist.songCount
+ R.plurals.albums, artist.songCount, artist.songCount
)
binding.fragmentArtistContent.songTitle.text = songText
binding.fragmentArtistContent.albumTitle.text = albumText
@@ -174,8 +170,7 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm
) {
biography = null
this.lang = lang
- detailsViewModel.getArtistInfo(name, lang, null)
- .observe(viewLifecycleOwner) { result ->
+ detailsViewModel.getArtistInfo(name, lang, null).observe(viewLifecycleOwner) { result ->
when (result) {
is Result.Loading -> logD("Loading")
is Result.Error -> logE("Error")
@@ -214,11 +209,8 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm
}
private fun loadArtistImage(artist: Artist) {
- Glide.with(requireContext())
- .asBitmapPalette()
- .artistImageOptions(artist)
- .load(RetroGlideExtension.getArtistModel(artist))
- .dontAnimate()
+ Glide.with(requireContext()).asBitmapPalette().artistImageOptions(artist)
+ .load(RetroGlideExtension.getArtistModel(artist)).dontAnimate()
.into(object : SingleColorTarget(binding.image) {
override fun onColorReady(color: Int) {
setColors(color)
@@ -274,13 +266,8 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm
}
R.id.action_set_artist_image -> {
- val intent = Intent(Intent.ACTION_GET_CONTENT)
- intent.type = "image/*"
selectImageLauncher.launch(
- Intent.createChooser(
- intent,
- getString(R.string.pick_from_local_storage)
- )
+ PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly)
)
return true
}
@@ -336,14 +323,14 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm
SortOrder.ArtistSongSortOrder.SONG_Z_A -> sortOrder.findItem(R.id.action_sort_order_title_desc).isChecked =
true
- SortOrder.ArtistSongSortOrder.SONG_ALBUM ->
- sortOrder.findItem(R.id.action_sort_order_album).isChecked = true
+ SortOrder.ArtistSongSortOrder.SONG_ALBUM -> sortOrder.findItem(R.id.action_sort_order_album).isChecked =
+ true
- SortOrder.ArtistSongSortOrder.SONG_YEAR ->
- sortOrder.findItem(R.id.action_sort_order_year).isChecked = true
+ SortOrder.ArtistSongSortOrder.SONG_YEAR -> sortOrder.findItem(R.id.action_sort_order_year).isChecked =
+ true
- SortOrder.ArtistSongSortOrder.SONG_DURATION ->
- sortOrder.findItem(R.id.action_sort_order_song_duration).isChecked = true
+ SortOrder.ArtistSongSortOrder.SONG_DURATION -> sortOrder.findItem(R.id.action_sort_order_song_duration).isChecked =
+ true
else -> {
throw IllegalArgumentException("invalid $savedSongSortOrder")
@@ -352,14 +339,11 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm
}
private val selectImageLauncher =
- registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
- if (result.resultCode == Activity.RESULT_OK) {
- result.data?.data?.let {
- lifecycleScope.launch {
- CustomArtistImageUtil.getInstance(requireContext())
- .setCustomArtistImage(artist, it)
- }
-
+ registerForActivityResult(ActivityResultContracts.PickVisualMedia()) { uri ->
+ lifecycleScope.launch {
+ if (uri != null) {
+ CustomArtistImageUtil.getInstance(requireContext())
+ .setCustomArtistImage(artist, uri)
}
}
}
From 931e59319a00e8cdb3ff8c786775e329198e5892 Mon Sep 17 00:00:00 2001
From: Prathamesh More
Date: Tue, 14 Mar 2023 13:17:57 +0530
Subject: [PATCH 03/28] fix: Fix Home tab title
---
.../code/name/monkey/retromusic/fragments/home/HomeFragment.kt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt
index 2946b4f168..48b60aa819 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt
@@ -175,7 +175,7 @@ class HomeFragment :
findNavController().navigate(R.id.action_search, null, navOptions)
}
val hexColor = String.format("#%06X", 0xFFFFFF and accentColor())
- val appName = "Retro Music".parseAsHtml()
+ val appName = "Retro Music".parseAsHtml()
binding.appBarLayout.title = appName
}
From ccf3b7f6a52144b74df231c23caf1b547ec3a2cf Mon Sep 17 00:00:00 2001
From: Prathamesh More
Date: Tue, 14 Mar 2023 13:06:19 +0530
Subject: [PATCH 04/28] fix: Remove Blurred album art on lockscreen feature for
Android 11 and above
Hide Blur album art preference on Android 11+ devices as the lockscreen album art feature was removed by Google. And even if the feature is present in some Custom ROMs there is also an option to set blur so this preference is unnecessary on Android 11 and above.
---
.../fragments/settings/PersonalizeSettingsFragment.kt | 8 ++++++++
.../code/name/monkey/retromusic/util/PreferenceUtil.kt | 2 +-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/PersonalizeSettingsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/PersonalizeSettingsFragment.kt
index 24218f6fb8..f02727d20d 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/PersonalizeSettingsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/PersonalizeSettingsFragment.kt
@@ -17,7 +17,10 @@ package code.name.monkey.retromusic.fragments.settings
import android.os.Bundle
import android.view.View
import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEListPreference
+import code.name.monkey.appthemehelper.common.prefs.supportv7.ATESwitchPreference
+import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.APPBAR_MODE
+import code.name.monkey.retromusic.BLURRED_ALBUM_ART
import code.name.monkey.retromusic.HOME_ALBUM_GRID_STYLE
import code.name.monkey.retromusic.HOME_ARTIST_GRID_STYLE
import code.name.monkey.retromusic.R
@@ -27,12 +30,17 @@ class PersonalizeSettingsFragment : AbsSettingsFragment() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
addPreferencesFromResource(R.xml.pref_ui)
+ // Hide Blur album art preference on Android 11+ devices as the lockscreen album art feature was removed by Google
+ // And if the feature is present in some Custom ROM's there is also an option to set blur so this preference is unnecessary on Android 11 and above
+ val blurredAlbumArt: ATESwitchPreference? = findPreference(BLURRED_ALBUM_ART)
+ blurredAlbumArt?.isVisible = !VersionUtils.hasR()
}
override fun invalidateSettings() {}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
+
val homeArtistStyle: ATEListPreference? = findPreference(HOME_ARTIST_GRID_STYLE)
homeArtistStyle?.setOnPreferenceChangeListener { preference, newValue ->
setSummary(preference, newValue)
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 493949be78..68c2be9ab1 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
@@ -279,7 +279,7 @@ object PreferenceUtil {
val isBlurredAlbumArt
get() = sharedPreferences.getBoolean(
BLURRED_ALBUM_ART, false
- )
+ ) && !VersionUtils.hasR()
val blurAmount get() = sharedPreferences.getInt(NEW_BLUR_AMOUNT, 25)
From 6ec2e6ee9a6aa9d849d292b3d4d549d2f1bcd5a0 Mon Sep 17 00:00:00 2001
From: Prathamesh More
Date: Tue, 14 Mar 2023 13:36:07 +0530
Subject: [PATCH 05/28] Code Cleanup
---
.../java/code/name/monkey/retromusic/Constants.kt | 1 -
.../retromusic/fragments/settings/AudioSettings.kt | 13 +++++++++----
.../fragments/settings/ThemeSettingsFragment.kt | 3 +++
.../name/monkey/retromusic/util/PreferenceUtil.kt | 5 -----
app/src/main/res/values-v26/bools.xml | 4 ----
app/src/main/res/values-v27/bools.xml | 4 ----
app/src/main/res/values-v31/bools.xml | 2 --
app/src/main/res/values/bools.xml | 4 ----
app/src/main/res/xml/pref_audio.xml | 9 ---------
app/src/main/res/xml/pref_general.xml | 5 ++---
10 files changed, 14 insertions(+), 36 deletions(-)
delete mode 100644 app/src/main/res/values-v26/bools.xml
delete mode 100644 app/src/main/res/values-v27/bools.xml
diff --git a/app/src/main/java/code/name/monkey/retromusic/Constants.kt b/app/src/main/java/code/name/monkey/retromusic/Constants.kt
index d17b3194e2..c51689cab3 100644
--- a/app/src/main/java/code/name/monkey/retromusic/Constants.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/Constants.kt
@@ -119,7 +119,6 @@ const val ARTIST_GRID_SIZE_LAND = "artist_grid_size_land"
const val PLAYLIST_GRID_SIZE = "playlist_grid_size"
const val PLAYLIST_GRID_SIZE_LAND = "playlist_grid_size_land"
const val COLORED_APP_SHORTCUTS = "colored_app_shortcuts"
-const val AUDIO_DUCKING = "audio_ducking"
const val LAST_ADDED_CUTOFF = "last_added_interval"
const val LAST_SLEEP_TIMER_VALUE = "last_sleep_timer_value"
const val NEXT_SLEEP_TIMER_ELAPSED_REALTIME = "next_sleep_timer_elapsed_real_time"
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/AudioSettings.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/AudioSettings.kt
index 17915712a9..d493085c07 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/AudioSettings.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/AudioSettings.kt
@@ -49,11 +49,16 @@ class AudioSettings : AbsSettingsFragment() {
if (VersionUtils.hasS()) {
bluetoothPreference?.setOnPreferenceChangeListener { _, newValue ->
if (newValue as Boolean) {
- if (ActivityCompat.checkSelfPermission(requireContext(),
- BLUETOOTH_CONNECT) != PERMISSION_GRANTED
+ if (ActivityCompat.checkSelfPermission(
+ requireContext(),
+ BLUETOOTH_CONNECT
+ ) != PERMISSION_GRANTED
) {
- ActivityCompat.requestPermissions(requireActivity(), arrayOf(
- BLUETOOTH_CONNECT), BLUETOOTH_PERMISSION_REQUEST)
+ ActivityCompat.requestPermissions(
+ requireActivity(), arrayOf(
+ BLUETOOTH_CONNECT
+ ), BLUETOOTH_PERMISSION_REQUEST
+ )
}
}
return@setOnPreferenceChangeListener true
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/ThemeSettingsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/ThemeSettingsFragment.kt
index f7fbc122bb..a89fedf969 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/ThemeSettingsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/ThemeSettingsFragment.kt
@@ -16,6 +16,7 @@ package code.name.monkey.retromusic.fragments.settings
import android.annotation.SuppressLint
import android.os.Bundle
+import android.view.View
import androidx.core.content.edit
import androidx.preference.Preference
import androidx.preference.TwoStatePreference
@@ -139,5 +140,7 @@ class ThemeSettingsFragment : AbsSettingsFragment() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
addPreferencesFromResource(R.xml.pref_general)
+ val wallpaperAccent: ATESwitchPreference? = findPreference(WALLPAPER_ACCENT)
+ wallpaperAccent?.isVisible = VersionUtils.hasOreoMR1() && !VersionUtils.hasS()
}
}
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 68c2be9ab1..18991786a6 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
@@ -266,11 +266,6 @@ object PreferenceUtil {
ALBUM_ART_ON_LOCK_SCREEN, true
)
- val isAudioDucking
- get() = sharedPreferences.getBoolean(
- AUDIO_DUCKING, true
- )
-
val isBluetoothSpeaker
get() = sharedPreferences.getBoolean(
BLUETOOTH_PLAYBACK, false
diff --git a/app/src/main/res/values-v26/bools.xml b/app/src/main/res/values-v26/bools.xml
deleted file mode 100644
index e557d81d87..0000000000
--- a/app/src/main/res/values-v26/bools.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
- false
-
\ No newline at end of file
diff --git a/app/src/main/res/values-v27/bools.xml b/app/src/main/res/values-v27/bools.xml
deleted file mode 100644
index a3eb593f3c..0000000000
--- a/app/src/main/res/values-v27/bools.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
- true
-
\ No newline at end of file
diff --git a/app/src/main/res/values-v31/bools.xml b/app/src/main/res/values-v31/bools.xml
index 51349c34e2..e9ef74c3c9 100644
--- a/app/src/main/res/values-v31/bools.xml
+++ b/app/src/main/res/values-v31/bools.xml
@@ -2,6 +2,4 @@
true
true
-
- false
\ No newline at end of file
diff --git a/app/src/main/res/values/bools.xml b/app/src/main/res/values/bools.xml
index 654eeffa5b..5e9f24c9f9 100644
--- a/app/src/main/res/values/bools.xml
+++ b/app/src/main/res/values/bools.xml
@@ -5,9 +5,5 @@
true
- false
- false
-
- true
false
\ No newline at end of file
diff --git a/app/src/main/res/xml/pref_audio.xml b/app/src/main/res/xml/pref_audio.xml
index 749202cedd..6bf54069c9 100755
--- a/app/src/main/res/xml/pref_audio.xml
+++ b/app/src/main/res/xml/pref_audio.xml
@@ -2,15 +2,6 @@
-
-
+ android:title="@string/pref_title_wallpaper_accent" />
Date: Tue, 14 Mar 2023 18:48:22 +0530
Subject: [PATCH 06/28] fix: Fix activity recreate logic when downloading split
language apk
---
.../java/code/name/monkey/retromusic/extensions/extensions.kt | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/app/src/normal/java/code/name/monkey/retromusic/extensions/extensions.kt b/app/src/normal/java/code/name/monkey/retromusic/extensions/extensions.kt
index 59d05fb745..2bedd4a72b 100644
--- a/app/src/normal/java/code/name/monkey/retromusic/extensions/extensions.kt
+++ b/app/src/normal/java/code/name/monkey/retromusic/extensions/extensions.kt
@@ -12,6 +12,7 @@ import com.google.android.play.core.splitinstall.SplitInstallManagerFactory
import com.google.android.play.core.splitinstall.SplitInstallRequest
import com.google.android.play.core.splitinstall.SplitInstallSessionState
import com.google.android.play.core.splitinstall.SplitInstallStateUpdatedListener
+import com.google.android.play.core.splitinstall.model.SplitInstallSessionStatus
import java.util.*
fun Context.setUpMediaRouteButton(menu: Menu) {
@@ -24,7 +25,8 @@ fun FragmentActivity.installLanguageAndRecreate(code: String) {
val manager = SplitInstallManagerFactory.create(this)
val listener = object: SplitInstallStateUpdatedListener{
override fun onStateUpdate(state: SplitInstallSessionState) {
- if (state.sessionId() == mySessionId) {
+ // Restart the activity if the language is installed (sessionId is same and status is installed)
+ if (state.sessionId() == mySessionId && state.status() == SplitInstallSessionStatus.INSTALLED) {
recreate()
manager.unregisterListener(this)
}
From 3e93dcfc4d560b86193c1f70eb2a06e35e4c7ff8 Mon Sep 17 00:00:00 2001
From: Prathamesh More
Date: Tue, 14 Mar 2023 18:50:18 +0530
Subject: [PATCH 07/28] feat: Add a function to check for Android 13
---
.../code/name/monkey/appthemehelper/util/VersionUtils.kt | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/VersionUtils.kt b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/VersionUtils.kt
index ac8db0c5d4..269c2c6988 100644
--- a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/VersionUtils.kt
+++ b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/VersionUtils.kt
@@ -82,4 +82,13 @@ object VersionUtils {
fun hasS(): Boolean {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.S
}
+
+ /**
+ * @return true if device is running API >= 33
+ */
+ @ChecksSdkIntAtLeast(api = Build.VERSION_CODES.TIRAMISU)
+ @JvmStatic
+ fun hasT(): Boolean {
+ return Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU
+ }
}
From ab16d7e105e0816ec34f96c1cd9e94ec3cbe43f4 Mon Sep 17 00:00:00 2001
From: Prathamesh More
Date: Wed, 15 Mar 2023 12:09:53 +0530
Subject: [PATCH 08/28] fix: Fix playlist reordering crash
---
.../song/OrderablePlaylistSongAdapter.kt | 29 +++++++------------
.../playlists/PlaylistDetailsFragment.kt | 12 +++-----
.../fragments/queue/PlayingQueueFragment.kt | 19 ++++++------
3 files changed, 25 insertions(+), 35 deletions(-)
diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/song/OrderablePlaylistSongAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/song/OrderablePlaylistSongAdapter.kt
index 88a0b7a8dd..bf85fe28b9 100644
--- a/app/src/main/java/code/name/monkey/retromusic/adapter/song/OrderablePlaylistSongAdapter.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/adapter/song/OrderablePlaylistSongAdapter.kt
@@ -26,6 +26,7 @@ import code.name.monkey.retromusic.db.toSongsEntity
import code.name.monkey.retromusic.dialogs.RemoveSongFromPlaylistDialog
import code.name.monkey.retromusic.fragments.LibraryViewModel
import code.name.monkey.retromusic.model.Song
+import code.name.monkey.retromusic.util.ViewUtil
import com.h6ah4i.android.widget.advrecyclerview.draggable.DraggableItemAdapter
import com.h6ah4i.android.widget.advrecyclerview.draggable.ItemDraggableRange
import kotlinx.coroutines.Dispatchers
@@ -50,11 +51,7 @@ class OrderablePlaylistSongAdapter(
override fun getItemId(position: Int): Long {
// requires static value, it means need to keep the same value
// even if the item position has been changed.
- return if (position != 0) {
- dataSet[position - 1].id
- } else {
- -1
- }
+ return dataSet[position].id
}
override fun createViewHolder(view: View): SongAdapter.ViewHolder {
@@ -99,26 +96,22 @@ class OrderablePlaylistSongAdapter(
}
override fun onCheckCanStartDrag(holder: ViewHolder, position: Int, x: Int, y: Int): Boolean {
- if (dataSet.size == 0 or 1 || isInQuickSelectMode) {
+ if (isInQuickSelectMode) {
return false
}
- val dragHandle = holder.dragView ?: return false
-
- val handleWidth = dragHandle.width
- val handleHeight = dragHandle.height
- val handleLeft = dragHandle.left
- val handleTop = dragHandle.top
-
- return (x >= handleLeft && x < handleLeft + handleWidth &&
- y >= handleTop && y < handleTop + handleHeight) && position != 0
+ return ViewUtil.hitTest(holder.imageText!!, x, y) || ViewUtil.hitTest(
+ holder.dragView!!,
+ x,
+ y
+ )
}
override fun onMoveItem(fromPosition: Int, toPosition: Int) {
- dataSet.add(toPosition - 1, dataSet.removeAt(fromPosition - 1))
+ dataSet.add(toPosition, dataSet.removeAt(fromPosition))
}
- override fun onGetItemDraggableRange(holder: ViewHolder, position: Int): ItemDraggableRange {
- return ItemDraggableRange(0, itemCount - 1)
+ override fun onGetItemDraggableRange(holder: ViewHolder, position: Int): ItemDraggableRange? {
+ return null
}
override fun onCheckCanDrop(draggingPosition: Int, dropPosition: Int): Boolean {
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistDetailsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistDetailsFragment.kt
index a4e2152d3c..bb99dbdc9c 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistDetailsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistDetailsFragment.kt
@@ -12,6 +12,7 @@ import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
+import androidx.recyclerview.widget.SimpleItemAnimator
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.adapter.song.OrderablePlaylistSongAdapter
import code.name.monkey.retromusic.databinding.FragmentPlaylistDetailNewBinding
@@ -34,7 +35,6 @@ import com.google.android.material.transition.MaterialArcMotion
import com.google.android.material.transition.MaterialContainerTransform
import com.google.android.material.transition.MaterialSharedAxis
import com.h6ah4i.android.widget.advrecyclerview.animator.DraggableItemAnimator
-import com.h6ah4i.android.widget.advrecyclerview.animator.GeneralItemAnimator
import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager
import org.koin.androidx.viewmodel.ext.android.viewModel
import org.koin.core.parameter.parametersOf
@@ -126,15 +126,11 @@ class PlaylistDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playli
val wrappedAdapter: RecyclerView.Adapter<*> =
dragDropManager.createWrappedAdapter(playlistSongAdapter)
-
- val animator: GeneralItemAnimator = DraggableItemAnimator()
- binding.recyclerView.itemAnimator = animator
-
- dragDropManager.attachRecyclerView(binding.recyclerView)
-
binding.recyclerView.apply {
+ adapter = wrappedAdapter
layoutManager = LinearLayoutManager(requireContext())
- binding.recyclerView.adapter = wrappedAdapter
+ itemAnimator = DraggableItemAnimator()
+ dragDropManager.attachRecyclerView(this)
ThemedFastScroller.create(this)
}
playlistSongAdapter.registerAdapterDataObserver(object :
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/queue/PlayingQueueFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/queue/PlayingQueueFragment.kt
index 059b10bb0f..84ecea2a3f 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/queue/PlayingQueueFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/queue/PlayingQueueFragment.kt
@@ -80,9 +80,6 @@ class PlayingQueueFragment : AbsMusicServiceFragment(R.layout.fragment_playing_q
recyclerViewDragDropManager = RecyclerViewDragDropManager()
recyclerViewSwipeManager = RecyclerViewSwipeManager()
- val animator = DraggableItemAnimator()
- animator.supportsChangeAnimations = false
-
playingQueueAdapter = PlayingQueueAdapter(
requireActivity(),
MusicPlayerRemote.playingQueue.toMutableList(),
@@ -94,12 +91,15 @@ class PlayingQueueFragment : AbsMusicServiceFragment(R.layout.fragment_playing_q
linearLayoutManager = LinearLayoutManager(requireContext())
- binding.recyclerView.layoutManager = linearLayoutManager
- binding.recyclerView.adapter = wrappedAdapter
- binding.recyclerView.itemAnimator = animator
- recyclerViewTouchActionGuardManager?.attachRecyclerView(binding.recyclerView)
- recyclerViewDragDropManager?.attachRecyclerView(binding.recyclerView)
- recyclerViewSwipeManager?.attachRecyclerView(binding.recyclerView)
+
+ binding.recyclerView.apply {
+ layoutManager = linearLayoutManager
+ adapter = wrappedAdapter
+ itemAnimator = DraggableItemAnimator()
+ recyclerViewTouchActionGuardManager?.attachRecyclerView(this)
+ recyclerViewDragDropManager?.attachRecyclerView(this)
+ recyclerViewSwipeManager?.attachRecyclerView(this)
+ }
linearLayoutManager.scrollToPositionWithOffset(MusicPlayerRemote.position + 1, 0)
binding.recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
@@ -184,6 +184,7 @@ class PlayingQueueFragment : AbsMusicServiceFragment(R.layout.fragment_playing_q
private fun setupToolbar() {
binding.appBarLayout.toolbar.subtitle = getUpNextAndQueueTime()
+ binding.appBarLayout.toolbar.isTitleCentered = false
binding.clearQueue.backgroundTintList = ColorStateList.valueOf(accentColor())
ColorStateList.valueOf(
MaterialValueHelper.getPrimaryTextColor(
From 8772bcb0b7dc8dc855891a730052fd4f7d0e8cb5 Mon Sep 17 00:00:00 2001
From: Prathamesh More
Date: Wed, 15 Mar 2023 12:10:51 +0530
Subject: [PATCH 09/28] fix: Use ShapeableImageView and added top margin to
artist name in song item
---
app/src/main/res/layout-sw600dp/item_queue.xml | 6 ++++--
app/src/main/res/layout/item_list.xml | 6 ++++--
app/src/main/res/layout/item_queue.xml | 16 ++++++++++------
3 files changed, 18 insertions(+), 10 deletions(-)
diff --git a/app/src/main/res/layout-sw600dp/item_queue.xml b/app/src/main/res/layout-sw600dp/item_queue.xml
index 7917c4ea86..11d8b1336e 100644
--- a/app/src/main/res/layout-sw600dp/item_queue.xml
+++ b/app/src/main/res/layout-sw600dp/item_queue.xml
@@ -44,18 +44,19 @@
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="16dp"
- app:cardCornerRadius="6dp"
+ app:cardCornerRadius="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/drag_view"
app:layout_constraintTop_toTopOf="parent">
-
@@ -93,6 +94,7 @@
android:id="@+id/text"
android:layout_width="0dp"
android:layout_height="wrap_content"
+ android:layout_marginTop="4dp"
android:ellipsize="end"
android:maxLines="1"
android:paddingHorizontal="16dp"
diff --git a/app/src/main/res/layout/item_list.xml b/app/src/main/res/layout/item_list.xml
index 55df9fda7b..c23159d1ad 100755
--- a/app/src/main/res/layout/item_list.xml
+++ b/app/src/main/res/layout/item_list.xml
@@ -35,18 +35,19 @@
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="16dp"
- app:cardCornerRadius="10dp"
+ app:cardCornerRadius="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/drag_view"
app:layout_constraintTop_toTopOf="parent">
-
@@ -87,6 +88,7 @@
android:ellipsize="end"
android:maxLines="1"
android:paddingHorizontal="16dp"
+ android:layout_marginTop="4dp"
android:textAppearance="@style/TextViewBody2"
android:textColor="?android:attr/textColorSecondary"
app:layout_constraintBottom_toBottomOf="parent"
diff --git a/app/src/main/res/layout/item_queue.xml b/app/src/main/res/layout/item_queue.xml
index 8553920640..83a497076b 100644
--- a/app/src/main/res/layout/item_queue.xml
+++ b/app/src/main/res/layout/item_queue.xml
@@ -4,14 +4,15 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:clickable="true"
- android:focusable="true"
android:background="?rectSelector"
- android:transitionGroup="true">
+ android:clickable="true"
+ android:focusable="true">
+
+
@@ -43,18 +44,20 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
- app:cardCornerRadius="6dp"
+ android:transitionGroup="true"
+ app:cardCornerRadius="4dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/drag_view"
app:layout_constraintTop_toTopOf="parent">
-
@@ -94,6 +97,7 @@
android:id="@+id/text"
android:layout_width="0dp"
android:layout_height="wrap_content"
+ android:layout_marginTop="4dp"
android:ellipsize="end"
android:maxLines="1"
android:paddingHorizontal="16dp"
From 21b142d341b542ebbc98caecc81460a70029d4e4 Mon Sep 17 00:00:00 2001
From: Milind Goel
Date: Wed, 15 Mar 2023 18:31:20 +0530
Subject: [PATCH 10/28] fix monochrome icon on some devices
---
.../res/drawable/ic_launcher_monochrome.xml | 31 +++++++++++++++++++
app/src/main/res/drawable/retro_you_icon.xml | 27 ----------------
.../res/mipmap-anydpi-v26/ic_launcher.xml | 2 +-
.../mipmap-anydpi-v26/ic_launcher_round.xml | 2 +-
4 files changed, 33 insertions(+), 29 deletions(-)
create mode 100644 app/src/main/res/drawable/ic_launcher_monochrome.xml
delete mode 100644 app/src/main/res/drawable/retro_you_icon.xml
diff --git a/app/src/main/res/drawable/ic_launcher_monochrome.xml b/app/src/main/res/drawable/ic_launcher_monochrome.xml
new file mode 100644
index 0000000000..f6615115b2
--- /dev/null
+++ b/app/src/main/res/drawable/ic_launcher_monochrome.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/retro_you_icon.xml b/app/src/main/res/drawable/retro_you_icon.xml
deleted file mode 100644
index 0e59bc17dd..0000000000
--- a/app/src/main/res/drawable/retro_you_icon.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
index 4bf80dfc69..1413a3145b 100644
--- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
+++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -2,5 +2,5 @@
-
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
index 4bf80dfc69..1413a3145b 100644
--- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -2,5 +2,5 @@
-
+
\ No newline at end of file
From 3d7e89e2705fc8137430ef401ddeb6214b5eccf8 Mon Sep 17 00:00:00 2001
From: Prathamesh More
Date: Wed, 15 Mar 2023 19:27:55 +0530
Subject: [PATCH 11/28] fix: Fix incorrect color of Top App Bar in Home tab in
Landscape mode
---
app/src/main/res/layout-land/fragment_home.xml | 5 ++---
app/src/main/res/layout/fragment_home.xml | 1 +
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/app/src/main/res/layout-land/fragment_home.xml b/app/src/main/res/layout-land/fragment_home.xml
index a9e0cca1e5..c18e497105 100644
--- a/app/src/main/res/layout-land/fragment_home.xml
+++ b/app/src/main/res/layout-land/fragment_home.xml
@@ -13,17 +13,16 @@
-->
+ android:fitsSystemWindows="true" />
Date: Sat, 18 Mar 2023 14:28:53 +0530
Subject: [PATCH 12/28] fix: Fix corrupting of files when writing tags to
unsupported files
---
app/build.gradle | 2 +-
.../tageditor/AbsTagEditorActivity.kt | 51 ++--
.../activities/tageditor/TagWriter.kt | 249 +++++++++---------
app/src/main/res/values/strings.xml | 1 +
4 files changed, 164 insertions(+), 139 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index dae931b97f..6bd881cf1b 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -154,7 +154,7 @@ dependencies {
implementation "io.insert-koin:koin-core:$koin_version"
implementation "io.insert-koin:koin-android:$koin_version"
- def glide_version = '4.15.0'
+ def glide_version = '4.15.1'
implementation "com.github.bumptech.glide:glide:$glide_version"
ksp "com.github.bumptech.glide:ksp:$glide_version"
implementation "com.github.bumptech.glide:okhttp3-integration:$glide_version"
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AbsTagEditorActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AbsTagEditorActivity.kt
index df973203e9..dbdfb2b699 100755
--- a/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AbsTagEditorActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AbsTagEditorActivity.kt
@@ -46,6 +46,7 @@ import code.name.monkey.retromusic.model.ArtworkInfo
import code.name.monkey.retromusic.model.AudioTagInfo
import code.name.monkey.retromusic.repository.Repository
import code.name.monkey.retromusic.util.logD
+import code.name.monkey.retromusic.util.logE
import com.google.android.material.button.MaterialButton
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import kotlinx.coroutines.GlobalScope
@@ -98,7 +99,8 @@ abstract class AbsTagEditorActivity : AbsBaseActivity() {
get() {
return try {
getAudioFile(songPaths!![0]).tagOrCreateAndSetDefault.getFirst(FieldKey.ALBUM_ARTIST)
- } catch (ignored: Exception) {
+ } catch (e: Exception) {
+ logE(e)
null
}
}
@@ -107,7 +109,8 @@ abstract class AbsTagEditorActivity : AbsBaseActivity() {
get() {
return try {
getAudioFile(songPaths!![0]).tagOrCreateAndSetDefault.getFirst(FieldKey.TITLE)
- } catch (ignored: Exception) {
+ } catch (e: Exception) {
+ logE(e)
null
}
}
@@ -115,7 +118,8 @@ abstract class AbsTagEditorActivity : AbsBaseActivity() {
get() {
return try {
getAudioFile(songPaths!![0]).tagOrCreateAndSetDefault.getFirst(FieldKey.COMPOSER)
- } catch (ignored: Exception) {
+ } catch (e: Exception) {
+ logE(e)
null
}
}
@@ -124,7 +128,8 @@ abstract class AbsTagEditorActivity : AbsBaseActivity() {
get() {
return try {
getAudioFile(songPaths!![0]).tagOrCreateAndSetDefault.getFirst(FieldKey.ALBUM)
- } catch (ignored: Exception) {
+ } catch (e: Exception) {
+ logE(e)
null
}
}
@@ -133,7 +138,8 @@ abstract class AbsTagEditorActivity : AbsBaseActivity() {
get() {
return try {
getAudioFile(songPaths!![0]).tagOrCreateAndSetDefault.getFirst(FieldKey.ARTIST)
- } catch (ignored: Exception) {
+ } catch (e: Exception) {
+ logE(e)
null
}
}
@@ -142,7 +148,8 @@ abstract class AbsTagEditorActivity : AbsBaseActivity() {
get() {
return try {
getAudioFile(songPaths!![0]).tagOrCreateAndSetDefault.getFirst(FieldKey.ALBUM_ARTIST)
- } catch (ignored: Exception) {
+ } catch (e: Exception) {
+ logE(e)
null
}
}
@@ -151,7 +158,8 @@ abstract class AbsTagEditorActivity : AbsBaseActivity() {
get() {
return try {
getAudioFile(songPaths!![0]).tagOrCreateAndSetDefault.getFirst(FieldKey.GENRE)
- } catch (ignored: Exception) {
+ } catch (e: Exception) {
+ logE(e)
null
}
}
@@ -160,7 +168,8 @@ abstract class AbsTagEditorActivity : AbsBaseActivity() {
get() {
return try {
getAudioFile(songPaths!![0]).tagOrCreateAndSetDefault.getFirst(FieldKey.YEAR)
- } catch (ignored: Exception) {
+ } catch (e: Exception) {
+ logE(e)
null
}
}
@@ -169,7 +178,8 @@ abstract class AbsTagEditorActivity : AbsBaseActivity() {
get() {
return try {
getAudioFile(songPaths!![0]).tagOrCreateAndSetDefault.getFirst(FieldKey.TRACK)
- } catch (ignored: Exception) {
+ } catch (e: Exception) {
+ logE(e)
null
}
}
@@ -178,7 +188,8 @@ abstract class AbsTagEditorActivity : AbsBaseActivity() {
get() {
return try {
getAudioFile(songPaths!![0]).tagOrCreateAndSetDefault.getFirst(FieldKey.DISC_NO)
- } catch (ignored: Exception) {
+ } catch (e: Exception) {
+ logE(e)
null
}
}
@@ -187,7 +198,8 @@ abstract class AbsTagEditorActivity : AbsBaseActivity() {
get() {
return try {
getAudioFile(songPaths!![0]).tagOrCreateAndSetDefault.getFirst(FieldKey.LYRICS)
- } catch (ignored: Exception) {
+ } catch (e: Exception) {
+ logE(e)
null
}
}
@@ -205,7 +217,8 @@ abstract class AbsTagEditorActivity : AbsBaseActivity() {
)
}
return null
- } catch (ignored: Exception) {
+ } catch (e: Exception) {
+ logE(e)
return null
}
}
@@ -356,9 +369,12 @@ abstract class AbsTagEditorActivity : AbsBaseActivity() {
artworkInfo
)
)
- val pendingIntent = MediaStore.createWriteRequest(contentResolver, getSongUris())
- launcher.launch(IntentSenderRequest.Builder(pendingIntent).build())
+ if (cacheFiles.isNotEmpty()) {
+ val pendingIntent =
+ MediaStore.createWriteRequest(contentResolver, getSongUris())
+ launcher.launch(IntentSenderRequest.Builder(pendingIntent).build())
+ }
} else {
TagWriter.writeTagsToFiles(
this@AbsTagEditorActivity, AudioTagInfo(
@@ -396,9 +412,14 @@ abstract class AbsTagEditorActivity : AbsBaseActivity() {
}
}
+ private lateinit var audioFile: AudioFile
+
private fun getAudioFile(path: String): AudioFile {
return try {
- AudioFileIO.read(File(path))
+ if (!this::audioFile.isInitialized) {
+ audioFile = AudioFileIO.read(File(path))
+ }
+ audioFile
} catch (e: Exception) {
Log.e(TAG, "Could not read audio file $path", e)
AudioFile()
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/TagWriter.kt b/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/TagWriter.kt
index e4cf7fe89f..b9d5f28ddc 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/TagWriter.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/TagWriter.kt
@@ -7,6 +7,7 @@ import android.media.MediaScannerConnection
import android.os.Build
import android.util.Log
import androidx.annotation.RequiresApi
+import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.extensions.showToast
import code.name.monkey.retromusic.misc.UpdateToastMediaScannerCompletionListener
import code.name.monkey.retromusic.model.AudioTagInfo
@@ -20,6 +21,7 @@ import org.jaudiotagger.audio.exceptions.CannotReadException
import org.jaudiotagger.audio.exceptions.CannotWriteException
import org.jaudiotagger.audio.exceptions.InvalidAudioFrameException
import org.jaudiotagger.audio.exceptions.ReadOnlyFileException
+import org.jaudiotagger.tag.FieldDataInvalidException
import org.jaudiotagger.tag.TagException
import org.jaudiotagger.tag.images.AndroidArtwork
import org.jaudiotagger.tag.images.Artwork
@@ -31,9 +33,9 @@ class TagWriter {
companion object {
suspend fun scan(context: Context, toBeScanned: List?) {
- if (toBeScanned == null || toBeScanned.isEmpty()) {
+ if (toBeScanned.isNullOrEmpty()) {
Log.i("scan", "scan: Empty")
- context.showToast( "Scan file from folder")
+ context.showToast("Scan file from folder")
return
}
MediaScannerConnection.scanFile(
@@ -50,150 +52,151 @@ class TagWriter {
suspend fun writeTagsToFiles(context: Context, info: AudioTagInfo) {
withContext(Dispatchers.IO) {
- runCatching {
- var artwork: Artwork? = null
- var albumArtFile: File? = null
- if (info.artworkInfo?.artwork != null) {
- try {
- albumArtFile = createAlbumArtFile(context).canonicalFile
- info.artworkInfo.artwork.compress(
- Bitmap.CompressFormat.JPEG,
- 100,
- albumArtFile.outputStream()
- )
- artwork = AndroidArtwork.createArtworkFromFile(albumArtFile)
- } catch (e: IOException) {
- e.printStackTrace()
- }
+ var artwork: Artwork? = null
+ var albumArtFile: File? = null
+ if (info.artworkInfo?.artwork != null) {
+ try {
+ albumArtFile = createAlbumArtFile(context).canonicalFile
+ info.artworkInfo.artwork.compress(
+ Bitmap.CompressFormat.JPEG,
+ 100,
+ albumArtFile.outputStream()
+ )
+ artwork = AndroidArtwork.createArtworkFromFile(albumArtFile)
+ } catch (e: IOException) {
+ e.printStackTrace()
}
- var wroteArtwork = false
- var deletedArtwork = false
- for (filePath in info.filePaths!!) {
- try {
- val audioFile = AudioFileIO.read(File(filePath))
- val tag = audioFile.tagOrCreateAndSetDefault
- if (info.fieldKeyValueMap != null) {
- for ((key, value) in info.fieldKeyValueMap) {
- try {
- tag.setField(key, value)
- } catch (e: Exception) {
- e.printStackTrace()
+ }
+ var wroteArtwork = false
+ var deletedArtwork = false
+ for (filePath in info.filePaths!!) {
+ try {
+ val audioFile = AudioFileIO.read(File(filePath))
+ val tag = audioFile.tagOrCreateAndSetDefault
+ if (info.fieldKeyValueMap != null) {
+ for ((key, value) in info.fieldKeyValueMap) {
+ try {
+ tag.setField(key, value)
+ } catch (e: FieldDataInvalidException) {
+ withContext(Dispatchers.Main) {
+ context.showToast(R.string.could_not_write_tags_to_file)
}
+ return@withContext listOf()
+ } catch (e: Exception) {
+ e.printStackTrace()
}
}
- if (info.artworkInfo != null) {
- if (info.artworkInfo.artwork == null) {
- tag.deleteArtworkField()
- deletedArtwork = true
- } else if (artwork != null) {
- tag.deleteArtworkField()
- tag.setField(artwork)
- wroteArtwork = true
- }
+ }
+ if (info.artworkInfo != null) {
+ if (info.artworkInfo.artwork == null) {
+ tag.deleteArtworkField()
+ deletedArtwork = true
+ } else if (artwork != null) {
+ tag.deleteArtworkField()
+ tag.setField(artwork)
+ wroteArtwork = true
}
- audioFile.commit()
- } catch (e: CannotReadException) {
- e.printStackTrace()
- } catch (e: IOException) {
- e.printStackTrace()
- } catch (e: CannotWriteException) {
- e.printStackTrace()
- } catch (e: TagException) {
- e.printStackTrace()
- } catch (e: ReadOnlyFileException) {
- e.printStackTrace()
- } catch (e: InvalidAudioFrameException) {
- e.printStackTrace()
}
+ audioFile.commit()
+ } catch (e: CannotReadException) {
+ e.printStackTrace()
+ } catch (e: IOException) {
+ e.printStackTrace()
+ } catch (e: CannotWriteException) {
+ e.printStackTrace()
+ } catch (e: TagException) {
+ e.printStackTrace()
+ } catch (e: ReadOnlyFileException) {
+ e.printStackTrace()
+ } catch (e: InvalidAudioFrameException) {
+ e.printStackTrace()
}
- if (wroteArtwork) {
- insertAlbumArt(context, info.artworkInfo!!.albumId, albumArtFile!!.path)
- } else if (deletedArtwork) {
- deleteAlbumArt(context, info.artworkInfo!!.albumId)
- }
- scan(context, info.filePaths)
- }.onFailure {
- it.printStackTrace()
}
+ if (wroteArtwork) {
+ insertAlbumArt(context, info.artworkInfo!!.albumId, albumArtFile!!.path)
+ } else if (deletedArtwork) {
+ deleteAlbumArt(context, info.artworkInfo!!.albumId)
+ }
+ scan(context, info.filePaths)
}
}
-
@RequiresApi(Build.VERSION_CODES.R)
suspend fun writeTagsToFilesR(context: Context, info: AudioTagInfo): List =
withContext(Dispatchers.IO) {
val cacheFiles = mutableListOf()
- runCatching {
- var artwork: Artwork? = null
- var albumArtFile: File? = null
- if (info.artworkInfo?.artwork != null) {
- try {
- albumArtFile = createAlbumArtFile(context).canonicalFile
- info.artworkInfo.artwork.compress(
- Bitmap.CompressFormat.JPEG,
- 100,
- albumArtFile.outputStream()
- )
- artwork = AndroidArtwork.createArtworkFromFile(albumArtFile)
- } catch (e: IOException) {
- e.printStackTrace()
- }
+ var artwork: Artwork? = null
+ var albumArtFile: File? = null
+ if (info.artworkInfo?.artwork != null) {
+ try {
+ albumArtFile = createAlbumArtFile(context).canonicalFile
+ info.artworkInfo.artwork.compress(
+ Bitmap.CompressFormat.JPEG,
+ 100,
+ albumArtFile.outputStream()
+ )
+ artwork = AndroidArtwork.createArtworkFromFile(albumArtFile)
+ } catch (e: IOException) {
+ e.printStackTrace()
}
- var wroteArtwork = false
- var deletedArtwork = false
- for (filePath in info.filePaths!!) {
- try {
- val originFile = File(filePath)
- val cacheFile = File(context.cacheDir, originFile.name)
- cacheFiles.add(cacheFile)
- originFile.inputStream().use { input ->
- cacheFile.outputStream().use { output ->
- input.copyTo(output)
- }
+ }
+ var wroteArtwork = false
+ var deletedArtwork = false
+ for (filePath in info.filePaths!!) {
+ try {
+ val originFile = File(filePath)
+ val cacheFile = File(context.cacheDir, originFile.name)
+ cacheFiles.add(cacheFile)
+ originFile.inputStream().use { input ->
+ cacheFile.outputStream().use { output ->
+ input.copyTo(output)
}
- val audioFile = AudioFileIO.read(cacheFile)
- val tag = audioFile.tagOrCreateAndSetDefault
- if (info.fieldKeyValueMap != null) {
- for ((key, value) in info.fieldKeyValueMap) {
- try {
- tag.setField(key, value)
- } catch (e: Exception) {
- e.printStackTrace()
+ }
+ val audioFile = AudioFileIO.read(cacheFile)
+ val tag = audioFile.tagOrCreateAndSetDefault
+ if (info.fieldKeyValueMap != null) {
+ for ((key, value) in info.fieldKeyValueMap) {
+ try {
+ tag.setField(key, value)
+ } catch (e: FieldDataInvalidException) {
+ withContext(Dispatchers.Main) {
+ context.showToast(R.string.could_not_write_tags_to_file)
}
+ return@withContext listOf()
+ } catch (e: Exception) {
+ e.printStackTrace()
}
}
- if (info.artworkInfo != null) {
- if (info.artworkInfo.artwork == null) {
- tag.deleteArtworkField()
- deletedArtwork = true
- } else if (artwork != null) {
- tag.deleteArtworkField()
- tag.setField(artwork)
- wroteArtwork = true
- }
+ }
+ if (info.artworkInfo != null) {
+ if (info.artworkInfo.artwork == null) {
+ tag.deleteArtworkField()
+ deletedArtwork = true
+ } else if (artwork != null) {
+ tag.deleteArtworkField()
+ tag.setField(artwork)
+ wroteArtwork = true
}
- audioFile.commit()
- } catch (e: CannotReadException) {
- e.printStackTrace()
- } catch (e: IOException) {
- e.printStackTrace()
- } catch (e: CannotWriteException) {
- e.printStackTrace()
- } catch (e: TagException) {
- e.printStackTrace()
- } catch (e: ReadOnlyFileException) {
- e.printStackTrace()
- } catch (e: InvalidAudioFrameException) {
- e.printStackTrace()
}
+ audioFile.commit()
+ } catch (e: CannotReadException) {
+ e.printStackTrace()
+ } catch (e: IOException) {
+ e.printStackTrace()
+ } catch (e: CannotWriteException) {
+ e.printStackTrace()
+ } catch (e: TagException) {
+ e.printStackTrace()
+ } catch (e: ReadOnlyFileException) {
+ e.printStackTrace()
+ } catch (e: InvalidAudioFrameException) {
+ e.printStackTrace()
}
- if (wroteArtwork) {
- insertAlbumArt(context, info.artworkInfo!!.albumId, albumArtFile!!.path)
- } else if (deletedArtwork) {
- deleteAlbumArt(context, info.artworkInfo!!.albumId)
- }
- }.onFailure {
- it.printStackTrace()
+ }
+ if (wroteArtwork) {
+ insertAlbumArt(context, info.artworkInfo!!.albumId, albumArtFile!!.path)
+ } else if (deletedArtwork) {
+ deleteAlbumArt(context, info.artworkInfo!!.albumId)
}
cacheFiles
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 0e6eaba7a9..e9609c7c19 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -562,4 +562,5 @@
You have to select at least one category.
You will be forwarded to the issue tracker website.
Your account data is only used for authentication.
+ Could not write tags to the music file!
From 4e557fffaebc285fd05aaffb2e8f1053f31d8a18 Mon Sep 17 00:00:00 2001
From: Prathamesh More
Date: Sat, 18 Mar 2023 15:08:07 +0530
Subject: [PATCH 13/28] feat: Add A13 granular permissions
---
app/src/main/AndroidManifest.xml | 11 ++++++++---
.../retromusic/activities/PermissionActivity.kt | 5 +----
.../activities/base/AbsMusicServiceActivity.kt | 13 ++++++++++---
3 files changed, 19 insertions(+), 10 deletions(-)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 8db74d0f6d..c9c99e633f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,7 +9,11 @@
-
+
+
+
@@ -30,7 +34,9 @@
+ tools:ignore="UnusedAttribute">
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/PermissionActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/PermissionActivity.kt
index da88b2a90d..f58be5ba21 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/PermissionActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/PermissionActivity.kt
@@ -129,10 +129,7 @@ class PermissionActivity : AbsMusicServiceActivity() {
}
private fun hasStoragePermission(): Boolean {
- return ActivityCompat.checkSelfPermission(
- this,
- Manifest.permission.READ_EXTERNAL_STORAGE
- ) == PackageManager.PERMISSION_GRANTED
+ return hasPermissions()
}
@RequiresApi(Build.VERSION_CODES.S)
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsMusicServiceActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsMusicServiceActivity.kt
index 07937c7b55..e2485a7eea 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsMusicServiceActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsMusicServiceActivity.kt
@@ -16,8 +16,10 @@ package code.name.monkey.retromusic.activities.base
import android.Manifest
import android.content.*
+import android.os.Build.VERSION_CODES
import android.os.Bundle
import android.os.IBinder
+import androidx.core.content.ContextCompat
import androidx.lifecycle.lifecycleScope
import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.R
@@ -96,8 +98,7 @@ abstract class AbsMusicServiceActivity : AbsBaseActivity(), IMusicServiceEventLi
filter.addAction(MEDIA_STORE_CHANGED)
filter.addAction(FAVORITE_STATE_CHANGED)
- registerReceiver(musicStateReceiver, filter)
-
+ ContextCompat.registerReceiver(this, musicStateReceiver, filter, ContextCompat.RECEIVER_NOT_EXPORTED)
receiverRegistered = true
}
@@ -190,7 +191,13 @@ abstract class AbsMusicServiceActivity : AbsBaseActivity(), IMusicServiceEventLi
}
override fun getPermissionsToRequest(): Array {
- return mutableListOf(Manifest.permission.READ_EXTERNAL_STORAGE).apply {
+ return mutableListOf().apply {
+ if (VersionUtils.hasT()) {
+ add(Manifest.permission.READ_MEDIA_AUDIO)
+ add(Manifest.permission.POST_NOTIFICATIONS)
+ } else {
+ add(Manifest.permission.READ_EXTERNAL_STORAGE)
+ }
if (!VersionUtils.hasR()) {
add(Manifest.permission.WRITE_EXTERNAL_STORAGE)
}
From e483038b6c6451b6f50b73c20419f9884d748595 Mon Sep 17 00:00:00 2001
From: Prathamesh More
Date: Sat, 18 Mar 2023 15:50:50 +0530
Subject: [PATCH 14/28] feat: Add A13 per-app language preference compatibility
with the existing language chooser
---
.../retromusic/extensions/extensions.kt | 4 +-
app/src/main/AndroidManifest.xml | 11 +++++
.../code/name/monkey/retromusic/Constants.kt | 1 +
.../retromusic/LanguageContextWrapper.kt | 25 -----------
.../activities/base/AbsThemeActivity.kt | 24 +++++-----
.../activities/bugreport/model/DeviceInfo.kt | 3 +-
.../settings/OtherSettingsFragment.kt | 18 +++++++-
.../retromusic/glide/RetroMusicGlideModule.kt | 8 +++-
.../monkey/retromusic/util/PreferenceUtil.kt | 15 ++++++-
app/src/main/res/xml/locales_config.xml | 45 +++++++++++++++++++
.../retromusic/extensions/extensions.kt | 4 +-
11 files changed, 113 insertions(+), 45 deletions(-)
delete mode 100644 app/src/main/java/code/name/monkey/retromusic/LanguageContextWrapper.kt
create mode 100644 app/src/main/res/xml/locales_config.xml
diff --git a/app/src/fdroid/java/code/name/monkey/retromusic/extensions/extensions.kt b/app/src/fdroid/java/code/name/monkey/retromusic/extensions/extensions.kt
index 1dc3ae58f7..dffaedfa45 100644
--- a/app/src/fdroid/java/code/name/monkey/retromusic/extensions/extensions.kt
+++ b/app/src/fdroid/java/code/name/monkey/retromusic/extensions/extensions.kt
@@ -8,8 +8,8 @@ import androidx.fragment.app.FragmentActivity
fun Context.setUpMediaRouteButton(menu: Menu) {}
-fun FragmentActivity.installLanguageAndRecreate(code: String) {
- recreate()
+fun FragmentActivity.installLanguageAndRecreate(code: String, onInstallComplete: () -> Unit) {
+ onInstallComplete()
}
fun Context.goToProVersion() {}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c9c99e633f..e35633fe0f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -39,6 +39,7 @@
android:enableOnBackInvokedCallback="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
+ android:localeConfig="@xml/locales_config"
android:requestLegacyExternalStorage="true"
android:restoreAnyVersion="true"
android:roundIcon="@mipmap/ic_launcher_round"
@@ -328,6 +329,16 @@
+
+
+
+
+
نمی توان آدرس را دریافت کرد
- بازکردن حالت کشویی
+ کشوی ناوبری را باز کنید
«نمایش کارت حافظه» را در منوی زیرین فعال کنید
%s نیاز به دسترسی به کارت حافظه دارد
- باید دایرکتوری ریشه کارت حافظه خود را انتخاب کنید
+ باید دایرکتوری ریشه کارت SD خود را انتخاب کنید
مکان کارت SD خود را انتخاب کنید
هیچ زیر پوشه ای را باز نکنید
بر روی دکمه \"انتخاب\" در پایین صفحه ضربه بزنید
@@ -483,7 +483,7 @@
اشتراک گذاری در استوری
نمایش هنرمندان آلبوم
حالت مخلوط
- نمونه
+ ساده
زمان خواب لغو شد.
تایمر خواب از هم اکنون برای %d دقیقه تنظیم شده است.
شبکه های اجتماعی
@@ -496,9 +496,9 @@
آلبوم
هنرمند
آهنگساز
- تاریخ اضافه شدن
+ تاریخ اضافه شده
تاریخ ویرایش شده
- Default
+ پیشفرض
تعداد آهنگ
کاهش تعداد آهنگ
سال
@@ -512,13 +512,13 @@
برای باز کردن قفل، انگشت خود را بکشید
همگام سازی متن ترانه ها
تلگرام
- برای بحث در مورد اشکالات، ارائه پیشنهادات، خودنمایی و موارد دیگر به گروه تلگرام بپیوندید
+ برای بحث در مورد اشکالات، ارائه پیشنهادات، نمایش و موارد دیگر به گروه تلگرام بپیوندید
متشکریم!
فایل صوتی
این ماه
این هفته
امسال
- بسیار کوچک
+ کوچک
کارت کوچک
عنوان
پشتیبان گیری جدید
@@ -529,11 +529,11 @@
شماره آهنگ
ترجمه کردن
به ما کمک کنید تا برنامه را به زبان شما ترجمه کنیم
- موزیک پلیر ریت رو نسخه ویژه را امتحان کنید
+ نسخه ویژه موزیک پلیر Retro را امتحان کنید
توییتر
- نشان دادن طراحی شما با موزیک پلیر ریت رو
+ طرح خود را با موسیقی Retro به اشتراک بگذارید
بدون برچسب
- این موزیک پخش نمیشود
+ این آهنگ پخش نمیشود.
تا بعدی
بروز رسانی تصویر
درحال به روز رسانی…
diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml
index 61d18e3b06..ec25194366 100644
--- a/app/src/main/res/values-hi-rIN/strings.xml
+++ b/app/src/main/res/values-hi-rIN/strings.xml
@@ -5,13 +5,13 @@
एक्सेंट रंग
The theme accent color, defaults to purple
जानकारी
- Add to Blacklist
+ कालीसूची में जोड़ें
पसंदीदा में जोड़े
- Add to playing queue
+ बजने वाली कतार में जोड़ें
प्लेलिस्ट में जोड़ें
वर्तमान टाइमर को रद्द करें
- Cast
- Clear playing queue
+ प्रसारित करें
+ बजने वाली कतार साफ़ करें
Cycle repeat mode
हटाएं
डिवाइस से हटाएं
diff --git a/app/src/main/res/values-hu-rHU/strings.xml b/app/src/main/res/values-hu-rHU/strings.xml
index c3c3e0ac32..bf89c2c75d 100644
--- a/app/src/main/res/values-hu-rHU/strings.xml
+++ b/app/src/main/res/values-hu-rHU/strings.xml
@@ -177,7 +177,7 @@
Biztonsági mentés törlése sikertelen
A neved nem lehet üres!
Betöltés sikertelen
- Couldn\'t share file
+ Nem sikerült megosztani a fájlt
Kibővített
GYIK
Kedvencek
@@ -421,7 +421,7 @@
Háttérkép kiemelő szín
Engedélyezett zenelisták
Pro
- Black theme, Now playing themes, Carousel effect and more..
+ Fekete téma, Most lejátszott téma, Carousel effekt és több..
Profil
Vásárlás
Sorban áll
@@ -498,7 +498,7 @@
Zeneszerző
Hozzáadás dátuma
Módosítás dátuma
- Default
+ Alapértelmezett
Zenék darabszáma
Zenék darabszáma szerint csökkenő sorrendben
Év
diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml
index 885a1fa300..91fd054ad4 100644
--- a/app/src/main/res/values-ja-rJP/strings.xml
+++ b/app/src/main/res/values-ja-rJP/strings.xml
@@ -3,12 +3,12 @@
%s について
我々のチームとソーシャルリンク
アクセントカラー
- テーマのアクセントカラー、既定は青緑色です。
+ テーマのアクセントカラー、既定は紫色です。
このアプリについて
ブラックリストに追加
お気に入りに追加
再生キューに追加
- プレイリストに追加…
+ プレイリストに追加
キャンセル
キャスト
再生キューをクリア
@@ -60,14 +60,14 @@
%1$d 曲が再生キューに追加されました
アルバム
- - 曲
+ - 楽曲
アルバムアーティスト
アルバム
- アルバム
- 常に
+ 常時
クールな音楽プレイヤーをチェックしよう: https://play.google.com/store/apps/details?id=%s
シャッフル
トップ曲
@@ -86,7 +86,7 @@
設定、プレイリストのバックアップと復元
バックアップ
- バイオグラフィー
+ 説明
ダークテーマ時に漆黒にする
ブラックリスト
付近の Bluetooth デバイスを確認するために Nearby デバイス権限が必要です
@@ -140,7 +140,7 @@
作成
プレイリストを作成しました %1$s
メンバーと貢献者
- 現在、 %1$s によって %2$s で聴いています。
+ 現在、 %2$s で %1$s を聴いています。
カスタムアーティスト画像
クラッシュレポートを共有
ダーク
@@ -181,12 +181,12 @@
よくある質問
お気に入り
ファイルは既に存在します
- 最後の曲を終了する
+ 最後の曲の終了を待つ
フィット
フラット
フォルダ
システムに従う
- あなたのために
+ おすすめ
なし
フル
全体のカード
@@ -232,7 +232,7 @@
サンプリングレート
長さ
ラベルを表示する
- 最後に追加された
+ 最近追加
前の曲
はじめよう
ライブラリの表示項目
@@ -243,7 +243,7 @@
商品の読み込み中...
ログイン
歌詞
- インドの❤によって開発
+ インドにて、❤をこめて開発
マテリアル
エラー
権限が付与されていません
@@ -254,9 +254,9 @@
更新しました
%s へようこそ]]>
名前
- 最も再生された
+ 最近のお気に入り
決して
- 新しい曲のミックス
+ 新曲ミックス
新しいプレイリスト
%s は新しい開始ディレクトリです。
次の曲
@@ -361,7 +361,7 @@
有効にすると、新たに再生された曲は履歴に表示されません
開始時に最後に表示したタブに移動します
同期歌詞をアルバムカバーに重ねて表示します
- 新しい音楽ミックスをホーム画面に表示する
+ 新曲ミックスをホーム画面に表示する
再生中画面のどこかをスワイプして、楽曲の変更を行います
下にスワイプしてミニプレイヤーを閉じます
アプリをフルスクリーン表示にする
@@ -378,7 +378,7 @@
ヘッダーのスタイル
フォーカスロス時に音量を下げる
オーディオをフェードする
- アーティスト画像を自動でダウンロードする
+ アーティスト画像を自動でダウンロード
ブラックリスト
Bluetooth接続時に再生
アルバムジャケットにぼかしを適用する
@@ -400,7 +400,7 @@
Media Store のカバーを無視する
最後に追加されたプレイリストの間隔
フルスクリーンコントロール
- 歌詞を表示するときは画面を点灯したままにします
+ 歌詞の表示時に画面を点灯し続ける
歌詞の種類
常に再生する
再生中のテーマ
diff --git a/app/src/main/res/values-kmr-rTR/strings.xml b/app/src/main/res/values-kmr-rTR/strings.xml
index 77ba12bba5..20ac634915 100644
--- a/app/src/main/res/values-kmr-rTR/strings.xml
+++ b/app/src/main/res/values-kmr-rTR/strings.xml
@@ -44,13 +44,13 @@
Wek rêberiya destpêkê saz bike
"Sazkarî"
Parve bike
- Hemûyan tevlihev bike
- Rêzoka lêdanê tevlihev bike
+ Hemûyan tevlîhev bike
+ Rêzoka lêdanê tevlîhev bike
Demkera xewê
Rêzkirin bi
Zanyariyên stranê serrast bike
Bijarteyan biguherîne
- Awaya tevlihevkirinê çalak bike
+ Awaya tevlîhevkirinê çalak bike
Guncav
Tevlî bike
"Tevlî rêzoka lêdanê bike"
@@ -72,8 +72,8 @@
Her dem
Silav ev lêdera muzîkê ya xweşik li vir binêre:
https://play.google.com/store/apps/details?id=%s
- Tevlihev bike
- Xweştirîn stran
+ Tevlîhev bike
+ Baştirîn stran
Wêneya tijî
Kert
Klasîk
@@ -184,7 +184,7 @@ https://play.google.com/store/apps/details?id=%s
Bijarte
Pel jixwe heye
Strana dawî biqedîne
- Guncav bike
+ Lihevhatî
Dûz
Peldank
Pergalê bişopîne
@@ -207,7 +207,7 @@ https://play.google.com/store/apps/details?id=%s
6
7
8
- Şêwaza torê
+ Awaya torê
Bêtir alîkarî dixwazî?
Mofirk
Dîrok
@@ -258,7 +258,7 @@ https://play.google.com/store/apps/details?id=%s
Nav
Herî pir lêdayî
Tu car
- Muzîka nû tevlihev bike
+ Muzîka nû tevlîhev bike
Rêzoka lêdanê ya nû
%s reberiya destpêkê ya nû ye.
Strana pêş
@@ -281,7 +281,7 @@ https://play.google.com/store/apps/details?id=%s
Tiştek bo venêrînê tune ye.
Tiştek bo dîtinê tune ye
Agahî
- Şêwaza agahiyan kesane bike
+ Awaya agahiyan kesane bike
Niha tê lêdan
Rêzeya niha tê lêdan
Dîmendera niha tê lêdan kesane bike
@@ -321,7 +321,7 @@ https://play.google.com/store/apps/details?id=%s
Stranan bi ya dirêjahiyê parzûn bike
Dema stranê parzûn bike
Pêşketî
- Şêwaza albumê
+ Awaya albumê
Deng
Rêzoka reş
Kontrol
@@ -364,12 +364,12 @@ têne guhertin
Dema ku çalak be, stranên ku nû hatine lêdan wê di dîrokê de neyên xuyakirin
Dema ku dest pê dike, biçe rûgera herî dawî ya ku hatiye bikaranîn
Peyvên stranê hevdemkirî li ser berga albumê nîşan bide
- Bişkoka tevlihevkirina Muzîka nû li ser dîmenera sereke nîşan bide
+ Bişkoka tevlîhevkirina Muzîka nû li ser dîmenera sereke nîşan bide
Bi kişandina li her derê li ser dîmendera lêdanê stranan biguherîne
Berjêr kaş bike da ku lêdera mini paşguh bikî
Awaya dîmendera tije çalak bike
Piştî ku guhik hate girêdan tavilê dest bi lêdanê bike
- Dema ku ji rêzeyeke stran were lêdan wê awaya tevlihevkirinê were neçalakkirin
+ Dema ku ji rêzeyeke stran were lêdan wê awaya tevlîhevkirinê were neçalakkirin
Ku şûn hebe, di dîmendera ku niha tê lêdan de kontrolên dengê nîşan bide
Renga çarçoveyê ji paşrûyê derxîne
Muzîkê tenê ji /Peldanka muzîkê nîşan bide
@@ -418,7 +418,7 @@ têne guhertin
Bandora gilover
Sepanê di dîmendera tije bide xebitandin
Lêdana xweber
- Awaya tevlihevkirinê
+ Awaya tevlîhevkirinê
Kontrola dengê
Rengê devokê paşrûyê
Rêzoka stranên spî
@@ -458,7 +458,7 @@ têne guhertin
Nikare girêdana SAF bi dest bixe
Menuya geranê veke
- Di menuya tevlihev de \'Kerta SD nîşan bide\' çalak bike
+ Di menuya tevlîhev de \'Kerta SD nîşan bide\' çalak bike
%s pêdivî bi gihiştina karta SD heye
Pêdivî ye ku tu rêberiya rehê kerta SD hilbijêrî
@@ -474,7 +474,7 @@ têne guhertin
Rêzoka lêdanê li %s hate tomarkirin.
Guhertinan tomar bike
Medya venêre
- %1$d ji %2$d pel hate venêrîn.
+ %1$d ji %2$d pel hate guhertin.
Scrobbles
Hemûyan hilbijêre
Hilbijartî
@@ -484,7 +484,7 @@ têne guhertin
Sepanê bi heval û malbata xwe re parve bike
Di çîrokan de parve bike
Hunermendê albumê nîşan bide
- Tevlihev bike
+ Tevlîhev bike
Hêsan
Demkera xewê hate têkbirin.
Demkera xewê ji bo %d xulek hate sazkirin.
@@ -525,8 +525,8 @@ têne guhertin
Sernav
Hilanîna nû
Îro
- Xweştirîn album
- Xweştirîn hunermend
+ Baştirîn album
+ Baştirîn hunermend
"Herik (2 bo herika 2 an jî 3004 bo herika CD3 4)"
Jimara herikê
Wergerandin
diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml
index 4653affb79..428eec4b5b 100644
--- a/app/src/main/res/values-ko-rKR/strings.xml
+++ b/app/src/main/res/values-ko-rKR/strings.xml
@@ -1,11 +1,11 @@
- About %s
+ %s에 관하여
Team, social links
강조 색상
강조 색상을 지정합니다. 기본값은 녹색입니다.
정보
- Add to Blacklist
+ 블랙 리스트에 추가
즐겨찾기에 추가
재생 대기열에 추가
재생목록에 추가...
diff --git a/app/src/main/res/values-lv-rLV/strings.xml b/app/src/main/res/values-lv-rLV/strings.xml
index 4b3227ac77..341d7a886f 100644
--- a/app/src/main/res/values-lv-rLV/strings.xml
+++ b/app/src/main/res/values-lv-rLV/strings.xml
@@ -148,21 +148,21 @@
Share Crash Report
Nedaudz tumšs
Dzēst atskaņošanas sarakstu
- %1$s?]]>
+ %1$s?]]>
Dzēst atskaņošanas sarakstus
Dzēst dziesmu
%1$s?]]>
Dzēst dziesmas
- %1$d playlists?]]>
+ %1$d atskaņošanas sarakstus?]]>
%1$d dziesmas?]]>
Tika izdzēstas %1$d dziesmas.
- Deleting Songs
+ Dziesmas tiek dzēstas
Depth
Apraksts
Informācija par ierīci
Ļaut Retro Music mainīt audio iestatījumus
Iestatīt zvana signālu
- Disc Number
+ Diska numurs
Do you want to clear the blacklist?
%1$s from the blacklist?]]>
Ziedot
@@ -179,7 +179,7 @@
Couldn\u2019t delete backup
Your name can\'t be empty!
Load failed
- Couldn\'t share file
+ Neizdevās kopīgot failu
Expanded
BUJ
Izlase
@@ -198,8 +198,8 @@
Žanrs
Žanri
Fork the project on GitHub
- Gradient
- Grant access
+ Krāsu pāreja
+ Piešķirt piekļuvi
1
2
3
@@ -209,7 +209,7 @@
7
8
Grid style
- Need more help?
+ Nepieciešama papildu palīdzība?
Hinge
Vēsture
Vēsture notīrīta
@@ -231,12 +231,12 @@
File path
Izmērs
Last Modified
- More from %s
+ Vairāk no %s
Sampling rate
Ilgums
Labeled
- Last added
- Last song
+ Pēdējie pievienotie
+ Pēdējā dziesma
Let\'s go
Library categories
Licences
@@ -245,15 +245,15 @@
Listing files
Loading products…
Login
- Lyrics
+ Vārdi
Radīts Indijā ar ❤️
Material
Kļūda
- Permission error
+ Atļauju kļūda
Dublējums izveidots veiksmīgi.
Not more than 5 items
%s ir Pro funkcija.
- Restore completed successfully.
+ Atjaunošana veikta veiksmīgi.
Updated
Welcome to %s]]>
Vārds
@@ -263,14 +263,14 @@
Jauns atskaņošanas saraksts
%s is the new start directory.
Nākamā dziesma
- You have no albums
+ Jums nav mūzikas albumu
You have no artists
- "Play a song first, then try again."
- No Backups Found
- No equalizer found
+ "Vispirms atskaņojiet kaut ko, tad mēģiniet vēlreiz."
+ Rezerves kopija nav atrasta
+ Ekvalaizeris nav atrasts
You have no genres
- No lyrics found
- No songs playing
+ Dziesmas vārdi nav atrasti
+ Šobrīd nekas netiek atskaņots
You have no playlists
No purchase found.
Nav rezultātu
@@ -284,7 +284,7 @@
Paziņojums
Mainīt paziņojuma stilu
Pašlaik atskaņo
- Now playing queue
+ Pašreizējā atskaņošanas rinda
Customize the now playing screen
9+ now playing themes
Tikai izmantojot Wi-Fi
@@ -293,7 +293,7 @@
Over Cover
Parole
Past 3 months
- Paste Lyrics Here
+ Ielīmēt vārdus šeit
Paste timeframe lyrics here
Peek
Nearby devices permission denied.
@@ -307,29 +307,29 @@
Pinterest
Follow Pinterest page for Retro Music design inspiration
Plain
- Playlist already exists
+ Atskaņošanas saraksts jau pastāv
Pitch
Atskaņošnas Iestatījumi
Atskaņošanas ātrums
The playing notification provides actions for play/pause etc.
Playing notification
- %s created successfully
- Playlist is empty
- Playlist name
- Playlists
+ %s izveidots veiksmīgi
+ Atskaņošanas saraksts ir tukšs
+ Atskaņošanas saraksta nosaukums
+ Atskaņošanas saraksti
Izpludināšanas līmenis, kas tiek piemērots motīviem ar izpludinātiem elementiem. Jo zemāka vērtiba, jo ātrāk tiek izpludināts
Blur amount
- Filter songs by length
+ Šķirot mūziku pēc ilguma
Filter song duration
Advanced
Album style
Audio
- Blacklist
+ Pevienot melnajam sarakstam
Vadība
Motīvs
- Images
+ Attēli
Library
- Lockscreen
+ Bloķēšanas ekrāns
Atskaņošanas saraksti
Aptur dziesmu, kad skaļums ir 0, un atsāk atskaņošanu, kad skaļums tiek palielināts. Strādā arī ārpus lietotnes
Apturēt atskaņošanu, ja skaļums ir 0
@@ -350,29 +350,29 @@
Colors the app shortcuts in the accent color. Every time you change the color please toggle this to take effect
"Colors the notification in the album cover\u2019s vibrant color"
Duration to crossfade between songs
- As per Material Design guide lines in dark mode colors should be desaturated
- Clicking on the notification will show now playing screen instead of the home screen
+ Kā norādīts Material design standartos, tumšajā režīmā krāsu piesātinājumam ir jābūt mazākam
+ Uzspiežot uz paziņojumatiks rādīts tas, kas pašreiz tiek atskaņots, nevis sākuma ekrāns
Add extra controls for mini player
Show extra Song information, such as file format, bitrate and frequency
- "Can cause playback issues on some devices."
- Show or hide the home banner
+ "Dažām ierīcēm var radīt atskaņošanas problēmas."
+ Rādīt vai slēpt sākuma baneri
Can increase the album cover quality, but causes slower image loading times. Only enable this if you have problems with low resolution artworks
Configure visibility and order of library categories.
Use Retro Music\'s custom lockscreen controls
- Always play audio in background regardless of anything else being played
- License details for open source software
- When enabled, newly played songs won\'t show in history
- Navigate to the last used tab on start
+ Vienmēr atskaņot audio, pat tad, ja tajā pašā brīdī tiek atskaņots kas cits
+ Licences skaidrojums atvērtā pirmkoda programmatūrām
+ Kad iespējots, nesen atskaņotas dziesmas netiks rādītas vēsturē
+ Atverot doties uz pēdējā reizē atvērto cilni
Display synced lyrics over album cover
- Show New Music Mix on homescreen
+ Rādīt jaunās mūzikas miksli sākuma ekrānā
Enables changing song by swiping anywhere on the now playing screen
Swipe down to dismiss mini player
Immersive mode
- Start playing immediately after headphones are connected
- Shuffle mode will turn off when playing a new list of songs
+ Sākt atskaņošanu uzreiz pēc austiņu pieslēgšanas
+ Jaukšana tiks izslēgta atskaņojot jaunu mūziku
If enough space is available, show volume controls in the now playing screen
- Extract accent color from wallpaper
- Only show music from /Music Folder
+ Iegūt akcenta krāsu no ekrāna tapetes
+ Rādīt mūziku tikai no /Music mapes
Rādīt albuma vāku
Navigate by Album Artist
Album cover theme
@@ -382,20 +382,20 @@
Reduce volume on focus loss
Fade audio
Automātiski lejupielādēt izpildītāju attēlus
- Blacklist
+ Pevienot melnajam sarakstam
Bluetooth playback
Blur album cover
Circular play button
Classic notification design
Adaptive color
- Colored notification
+ Iekrāsots paziņojums
Crossfade (Beta)
Izmantot Manrope fontu
- Desaturated color
+ Nepiesātinātas krāsas
Show now playing screen
- Extra controls
+ Papildus vadība
Dziesmas info
- Gapless playback
+ Bezatstarpju atskaņošana
Lietotnes motīvs
Album grid
Artist grid
@@ -404,11 +404,11 @@
Last added playlist interval
Fullscreen controls
Keep screen on when showing lyrics
- Lyrics type
- Always play
+ Vārdu veids
+ Vienmēr atskaņot
Now playing theme
- Open source licences
- Pause history
+ Atvērtā pirmkoda licences
+ Apturēt vēsturi
Remember last tab
Show lyrics
Show suggestions
@@ -426,35 +426,35 @@
Black theme, Now playing themes, Carousel effect and more..
Profile
Iegādāties
- Playing Queue
+ Atskaņošanas rinda
Novērtēt lietotni
Love this app? Let us know in the Google Play Store how we can make it even better
Nesenie albumi
Recent artists
- Remove
- Remove cover
- Remove from blacklist
+ Noņemt
+ Noņemt albuma vāku
+ Izņemt no melnā saraksta
Noņemt attēlu
- Remove song from playlist
- %1$s from the playlist?]]>
- Remove songs from playlist
- %1$d songs from the playlist?]]>
- Rename playlist
- Replace Cover
- Report an issue
- Report bug
- Reset
+ Izņemt dziesmu no atskaņošanas saraksta
+ %1$s no atskaņošanas saraksta?]]>
+ Izņemt dziesmas no atskaņošanas saraksta
+ %1$d dziesams no atskaņošanas saraksta?]]>
+ Mainīt atskaņošanas saraksta nosaukumu
+ Mainīt albuma vāku
+ Ziņot par problēmu
+ Ziņot par kļūdu
+ Atiestatīt
Atiestatīt izpildītāja attēlu
Atjaunot
- Do you want to restore backup?
- Restored previous purchase. Please restart the app to make use of all features.
- Restored previous purchases.
- Restoring purchase…
+ Vai vēlaties atjaunot no rezerves kopijas?
+ Iepriekšējais pirkums atjaunots. Lūdzu, restartējiet lietotni, lai varētu lietot visas funkcijas.
+ Iepriekšējais pirkums atjaunots veiksmīgi.
+ Pirkums tiek atjaunots…
Retro Music Player
Retro Music Pro
The app needs permission to access your device settings in order to set music as Ringtone
Ringtone (Optional)
- File delete failed: %s
+ Faila dzēšana neizdevās: %s
Can\'t get SAF URI
Open navigation drawer
diff --git a/app/src/main/res/values-nl-rNL/strings.xml b/app/src/main/res/values-nl-rNL/strings.xml
index d81deb6fe2..070ec270af 100644
--- a/app/src/main/res/values-nl-rNL/strings.xml
+++ b/app/src/main/res/values-nl-rNL/strings.xml
@@ -20,7 +20,7 @@
Ga naar album
Ga naar artiest
Ga naar genre
- Go to Lyrics
+ Ga naar Songtekst
Ga naar begin directory
Geef toestemming
Raster grootte
@@ -55,7 +55,7 @@
Toevoegen
"Toevogen aan afspeellijst"
Add Time Framed Lyrics
- Added %1$d song(s) to %2$s
+ %1$d nummer(s) toegevoegd aan %2$s
"1 titel aan afspeel wachtrij toegevoegd."
%1$d titels toegevoegd aan afspeel wachtrij
Album
@@ -78,26 +78,26 @@
Klassiek
MD3
Klein
- Minimal Text
+ Minimale tekst
Artiest
Artiesten
- Audio fade duration
+ Audio fade duur
Geluid focus geweigerd
Wijzig de geluidsinstellingen en pas de equalizer aan
Automatisch
- Backup and restore your settings, playlists
-
- Backups
+ Back-up en herstel je instellingen, afspeellijsten
+
+ Back-ups
Biografie
Gewoon zwart
Zwarte lijst
- The app needs nearby devices permission to check for bluetooth devices
- Nearby devices
+ De app heeft nabije toestel toestemming nodig om te checken voor bluetooth toestellen
+ Apparaten in de buurt
Vervagen
- Blur Card
+ Vervaag Kaart
Mislukt om het rapport te verzenden
Ongeldige toegangstoken. Neem alsjeblieft contact op met de app-ontwikkelaar.
- Issues are not enabled for the selected repository. Please contact the app developer.
+ Problemen zijn niet ingeschakeld voor de geselecteerde opslagplaats. Gelieve de app ontwikkelaar te contacteren.
Er is een onverwachte fout opgetreden. Neem alsjeblieft contact op met de app-ontwikkelaar.
Verkeerde gebruikersnaam of wachtwoord
Probleem
@@ -106,27 +106,27 @@
Vul alsjeblieft je geldig GitHub-wachtwoord in
Vul alsjeblieft een titel voor het probleem in
Vul alsjeblieft je geldig GitHub-gebruikersnaam in
- Bug report successful
+ Fout rapporteren succesvol
Een onverwachte fout is opgetreden. Het spijt me dat je deze bug tegengekomen bent. Als het blijft crashen, kies dan \"Clear app data\" of verstuur een email
Verstuur door middel van je GitHub-account
Kopen
Annuleer huidige timer
Kaart
- Colored Card
- Square Card
+ Gekleurde Kaart
+ Vierkante Kaart
Kaart
- Carousel effect on the now playing screen
- Cascading
+ Carrousel effect op het nu aan het spelen scherm
+ Trapsgewijs
Logboek
Bekijk wat er nieuw is
- Choose Image
- Choose what to restore
+ Kies Afbeelding
+ Kies wat u wil herstellen
Cirkel
Rond
Klassiek
Legen
Leeg zwarte lijst
- Clear History
+ Geschiedenis Wissen
Maak wachtrij leeg
Kleur
Kleuren
@@ -135,15 +135,15 @@
Apparaatinfo is naar klembord gekopiëerd.
Kon geen afspeellijst maken.
"Kon geen matchende album cover downloaden."
- Could not restore purchase.
+ Kon aankoop niet herstellen.
Kon %d files niet scannen.
Aanmaken
Aanmaken
Afspeellijst %1$s aangemaakt.
- Members and contributors
+ Leden en bijdragers
Nu luisterend naar %1$s van %2$s.
- Custom Artist Images
- Share Crash Report
+ Aangepaste artiestenafbeeldingen
+ Deel Crash Rapport
Soort van donker
Afspeellijst verwijderen
%1$s verwijderen?]]>
@@ -160,7 +160,7 @@
Apparaatinfo
Sta Retro Music toe om audioinstellingen te wijzigen
Stel in als beltoon
- Disc Number
+ Schijfnummer
Wil je de zwarte lijst leegmaken?
%1$s verwijderen van de zwarte lijst?]]>
Doneren
@@ -168,36 +168,36 @@
Koop mij een
Klaar
Rijmodus
- Edit Button
- Edit Lyrics
- Edit Synced Lyrics
+ Bewerk knop
+ Muziek tekst bewerken
+ Gesynchroniseerde muziek tekst bewerken
Leeg
Equalizer
- Couldn\u2019t create backup
- Couldn\u2019t delete backup
- Your name can\'t be empty!
- Load failed
- Couldn\'t share file
+ Kon geen back-up maken
+ Kon back-up niet verwijderen
+ Uw naam kan niet leeg zijn!
+ Laden mislukt
+ Kon bestand niet delen
Expanded
Veelgestelde vragen
Favorieten
- File already exists
- Finish last song
+ Bestand bestaat al
+ Eindig laatste nummer
Fit
Plat
Mappen
- Follow system
- For you
+ Volg systeem
+ Voor jou
Gratis
Vol
- Full card
+ Volledige kaart
Pas het thema en de kleuren van de app aan
- Look and feel
+ Look en feel
Genre
Genres
- Fork the project on GitHub
- Gradient
- Grant access
+ Fork het project op GitHub
+ Gradiënt
+ Verleen toegang
1
2
3
@@ -208,15 +208,15 @@
8
Rasterstijl
Meer hulp nodig?
- Hinge
+ Scharnier
Geschiedenis
- History cleared
- Undo
+ Geschiedenis gewist
+ Ongedaan maken
Start
Flip horizontaal
Afbeelding
- Gradient image
- Change artist image download settings
+ Gradiënt afbeelding
+ Wijzig downloadinstellingen voor artiesten afbeeldingen
Importeren
Importeer afspeellijst
Het importeert alle afspeellijsten binnenin de Android Media Store met nummers. Als de afspeellijst al bestaat, worden de nummers samengevoegd.
@@ -228,7 +228,7 @@
Bestandsnaam
Bestandslocatie
Grootte
- Last Modified
+ Laatst gewijzigd
Meer van %s
Samplingfrequentie
Duur
@@ -236,7 +236,7 @@
Laatst toegevoegd
Vorige nummer
Let\'s go
- Library categories
+ Bibliotheek categorieën
Licenties
Clearly wit
Luisteraars
@@ -249,11 +249,11 @@
Fout
Toegangsfout
Backup created successfully.
- Not more than 5 items
- %s is a Pro feature.
- Restore completed successfully.
+ Niet meer dan 5 items
+ %s is een Pro-functie.
+ Herstellen succesvol voltooid.
Updated
- Welcome to %s]]>
+ Welkom bij %s]]>
Mijn naam
Mijn top tracks
Nooit
@@ -264,7 +264,7 @@
Geen albums
Geen artiesten
"Laat eerst een liedje afspelen, probeer dan opniew."
- No Backups Found
+ Geen Back-ups Gevonden
Geen equalizer gevonden.
Je hebt geen genres
Geen lyrics gevonden
@@ -305,36 +305,36 @@
Pinterest
Follow Pinterest page for Retro Music design inspiration
Vlak
- Playlist already exists
+ Afspeellijst bestaat al
Pitch
- Playback Settings
- Playback Speed
+ Afspeel instellingen
+ Afspeelsnelheid
De afspeel notificatie bied acties om af te spelen/pauzeren etc.
Afspeel notificatie
- %s created successfully
+ %s succesvol aangemaakt
Afspeellijst is leeg
Naam afspeellijst
Afspeellijsten
Amount of blur applied for blur themes, lower is faster
Blur amount
- Filter songs by length
+ Filter nummers op lengte
Filter song duration
- Advanced
- Album style
+ Geavanceerd
+ Album stijl
Geluid
Zwarte lijst
- Controls
- Theme
+ Bedieningselementen
+ Thema
Afbeeldingen
- Library
+ Bibliotheek
Vergrendelscherm
Afspeellijsten
Pauses the song when the volume decreases to zero and starts playing back when the volume level rises. Also works outside the app
- Pause on zero
- Keep in mind that enabling this feature may affect battery life
- Keep the screen on
- Select language
- Snow fall effect
+ Pauzeer op nul
+ Houd er rekening mee dat het inschakelen van deze functie de levensduur van de batterij kan beïnvloeden
+ Houd het scherm aan
+ Taal selecteren
+ Sneeuwval effect
Gebruik de huidige cover als vergrendelscherm achtergrond.
Show Album Artists in the Artist category
Notificaties, bediening etc.
@@ -350,7 +350,7 @@
Duration to crossfade between songs
As per Material Design guide lines in dark mode colors should be desaturated
Clicking on the notification will show now playing screen instead of the home screen
- Add extra controls for mini player
+ Extra besturingselementen voor mini speler toevoegen
Show extra Song information, such as file format, bitrate and frequency
"Kan afspeelproblemen veroorzaken op sommige toestellen"
Show or hide the home banner
@@ -359,21 +359,21 @@
Zet besturing knoppen aan op vergrendelscherm
Always play audio in background regardless of anything else being played
Licentie details voor open source software
- When enabled, newly played songs won\'t show in history
+ Wanneer ingeschakeld, zullen nieuw afgespeelde nummers niet zichtbaar zijn in de geschiedenis
Navigate to the last used tab on start
Display synced lyrics over album cover
- Show New Music Mix on homescreen
+ Toon Nieuwe Muziek Mix op het startscherm
Enables changing song by swiping anywhere on the now playing screen
Swipe down to dismiss mini player
Zet dit aan voor immersive mode
Wanneer headphones ingeplugd zijn, afspelen start automatisch
Shuffle mode will turn off when playing a new list of songs
Als er ruimte is in het nu afspelen scherm, zet volume knoppen aan
- Extract accent color from wallpaper
+ Haal accentkleur uit achtergrond
Only show music from /Music Folder
Laat album cover zien
- Navigate by Album Artist
- Album cover theme
+ Navigeer via Album Artiest
+ Album cover thema
Album cover skip
Gekleurde app snelkoppelingen
Header style
@@ -383,12 +383,12 @@
Zwarte lijst
Bluetooth playback
Vervaag album cover
- Circular play button
+ Ronde afspeelknop
Klassiek notificatie design
Aangepaste kleur
Gekleurde notificatie
Crossfade (Beta)
- Use Manrope font
+ Gebruik Manrope lettertype
Desaturated color
Show now playing screen
Extra controls
@@ -403,10 +403,10 @@
Volledig scherm besturing knoppen
Keep screen on when showing lyrics
Lyrics type
- Always play
+ Altijd afspelen
Uiterlijk
Open source licenties
- Pause history
+ Pauzeer geschiedenis
Remember last tab
Show lyrics
Show suggestions
@@ -418,7 +418,7 @@
Automatisch afspelen
Shufflemodus
Volume knoppen
- Wallpaper accent color
+ Achtergrond accentkleur
Whitelist music
Pro
Black theme, Now playing themes, Carousel effect and more..
@@ -432,13 +432,13 @@
Verwijderen
Verwijder cover
Verwijder van zwarte lijst
- Remove Image
+ Verwijder afbeelding
Verwijder liedje van afspeellijst
%1$s van de afspeellijst?]]>
Verwijder liedjes van afspeellijst
%1$d van de afspeellijst?]]>
Hernoem afspeellijst
- Replace Cover
+ Vervang Cover
Een probleem melden
Een bug rapporteren
Resetten
@@ -454,8 +454,8 @@
Beltoon (Optioneel)
Bestand verwijderen gefaald: %s
- Can\'t get SAF URI
- Open navigation drawer
+ Kan SAF URI niet ophalen
+ Navigatielade openen
Enable \'Show SD card\' in overflow menu
%s heeft toegang tot de SD-kaart nodig
@@ -487,7 +487,7 @@
Slaap timer geannuleerd
Slaap timer ingesteld in %d minuten vanaf nu
Social
- Share story
+ Verhaal delen
Liedje
Duur liedje
Nummers
@@ -496,18 +496,18 @@
Album
Artiest
Componist
- Date added
- Date modified
+ Datum toegevoegd
+ Datum aangepast
Default
- Song count
+ Aantal nummers
Song count desc
- Year
+ Jaar
Descending
Sorry! Je apparaat ondersteunt geen spraak invoer
Zoek door je bibliotheek
Stack
- Start playing music.
- Suggestions
+ Begin muziek afspelen.
+ Suggesties
Ondersteun ontwikkelaars
Swipe to unlock
Synced lyrics
@@ -520,42 +520,42 @@
Dit jaar
Tiny
Tiny card
- Title
+ Titel
New Backup
Vandaag
Top albums
- Top artists
+ Top Artiesten
"Nummer (2 voor nummer 2 of 3004 voor CD3 nummer 4)"
Track nummer
Vertalen
Help us translate the app to your language
- Try Retro Music Premium
+ Probeer Retro Muziek Premium
Twitter
- Share your design with Retro Music
- Unlabeled
+ Deel jouw ontwerp met Retro Muziek
+ Niet gelabeld
Kon dit nummer niet afspelen
Volgende
Update afbeelding
Bijwerken...
User Images
User Name
- Username
+ Gebruikersnaam
Versie
Vertical flip
- View on Telegram
+ Bekijk op Telegram
Volume
Web zoekopdracht
Website
Check out our Website
- Welcome,
+ Welkom,
Wat wil je delen?
- What\'s New
- Window
- Rounded corners
+ Wat is er nieuw
+ Venster
+ Afgeronde hoeken
Stel %1$s in als ringtone
%1$d geselecteerd
Jaar
- You have to select at least one category.
+ Je moet ten minste één categorie selecteren.
You will be forwarded to the issue tracker website.
Your account data is only used for authentication.
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index 8a938fb255..95a14162e1 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -106,7 +106,7 @@
Por favor, digite sua senha válida do GitHub
Por favor, insira um título do problema
Por favor, digite seu nome de usuário válido do GitHub
- Bug reportado com sucesso
+ Erro reportado com sucesso
Um erro inesperado ocorreu. Se você tentar novamente e o erro persistir, use a opção \"Limpar dados do aplicativo\" ou envie-nos um e-mail
Enviar usando uma conta do GitHub
Comprar agora
@@ -177,7 +177,7 @@
Não foi possível excluir o backup
Seu nome não pode estar em branco!
Falha ao carregar
- Couldn\'t share file
+ Não foi possível salvar o arquivo
Expandido
Perguntas frequentes
Favoritos
@@ -421,7 +421,7 @@
Cor de destaque do papel de parede
Lista branca
Pro
- Black theme, Now playing themes, Carousel effect and more..
+ Tema escuro, Temas na tela de reprodução, Efeito carrossel e mais..
Perfil
Comprar
Fila
@@ -498,7 +498,7 @@
Compositor
Data adicionada
Data de alteração
- Default
+ Padrão
Quantidade de músicas (crescente)
Quantidade de músicas (decrescente)
Ano
diff --git a/app/src/main/res/values-ro-rRO/strings.xml b/app/src/main/res/values-ro-rRO/strings.xml
index 02d4b026ec..e04b164dd3 100644
--- a/app/src/main/res/values-ro-rRO/strings.xml
+++ b/app/src/main/res/values-ro-rRO/strings.xml
@@ -35,11 +35,11 @@
Șterge din favorite
Șterge din coada de redare
Șterge din playlist
- redenumiți
+ Redenumiți
Salvează coada de redare
Scanează
Căutare
- Setare
+ Pornește
Setează ca ton de apel
Setează ca registru principal
"Setări"
@@ -48,7 +48,7 @@
Amestecă playlist
Cronometru de somn
Ordine de sortare
- Redactor info
+ Detalii piesă
Comutare favorite
Comutare amestecare
Adaptiv
@@ -94,22 +94,22 @@
Negru
Lista neagră
Aplicația are nevoie de permisiunea dispozitive din apropiere pentru a verifica dacă există dispozitive bluetooth
- Nearby devices
+ Dispozitive în apropiere
Estompare
Estompare card
Imposibil de trimis raportul
Jeton de acces nevalid. Vă rugăm să contactați dezvoltatorul aplicației.
- Issues are not enabled for the selected repository. Please contact the app developer.
- An unexpected error occurred. Please contact the app developer.
+ Trimiterea problemelor nu este disponibilă pentru repertoriul selectat. Te rugăm să contactezi dezvoltatorul aplicației.
+ A apărut o eroare neașteptată. Te rugăm să contactezi dezvoltatorul aplicației.
Nume de utilizator sau parolă greșită
Problemă
Trimite manual
Introduceți o descriere a problemei
- Please enter your valid GitHub password
- Please enter an issue title
- Please enter your valid GitHub username
- Bug report successful
- An unexpected error occurred. Sorry you found this bug, if it keeps crashing \"Clear app data\" or send an Email
+ Te rugăm să introduci parola ta validă de GitHub
+ Te rugăm să introduci un titlu pentru problemă
+ Te rugăm să introduci numele tău de utilizator valid
+ Raportul de erori s-a încheiat cu succes
+ A apărut o eroare neașteptată. Ne pare rău că ai întâmpinat această problemă. Dacă aplicația continuă să se închidă, șterge datele acesteia din setări sau trimite-ne un email
Trimiteți utilizând contul GitHub
Cumpărați acum
Anulează cronometrul curent
@@ -197,7 +197,7 @@
Aspect
Gen muzical
Genuri
- Fork the project on GitHub
+ Creează o copie a repertoriului pe GitHub
Gradient
Acordare acces
1
@@ -210,20 +210,20 @@
8
Stil grilă
Aveți nevoie de mai mult ajutor?
- Hinge
+ Balama
Istoric
Istoric șters
Anulare
Acasă
Întoarcere pe orizontală
Imagine
- Gradient image
- Change artist image download settings
- Import
- Import playlist
- It imports all playlists listed in the Android Media Store with songs, if the playlists already exists, the songs will get merged.
+ Imagine gradient
+ Schimbă setările de descărcare a imaginii artistului
+ Importare
+ Importare listă de redare
+ Importă toate listele de redare listate în Android Media Store cu melodii, dacă listele de redare există deja, melodiile vor fi îmbinate.
Au fost insertate %1$d cântece în playlist-ul %2$s.
- Share your Retro Music setup to showcase on Instagram
+ Partajați configurația Retro Music pentru a o publica pe Instagram
Tastatură
Rată de biți
Format
@@ -238,7 +238,7 @@
Adăugate recent
Ultima melodie
Să începem
- Library categories
+ Categorii bibliotecă
Licențe
Alb
Ascultători
@@ -286,7 +286,7 @@
Se redă
Coada de redare
Personalizează ecranul de redare acum
- 9+ now playing themes
+ 9+ teme
Doar pe Wi-Fi
Funcții avansate de testare
Altele
@@ -294,21 +294,21 @@
Parolă
Ultimele 3 luni
Lipește versuri aici
- Paste timeframe lyrics here
- Peek
- Nearby devices permission denied.
+ Lipiți versurile temporale aici
+ Vizualizare
+ Permisiunea pentru dispozitivele din apropiere a fost refuzată.
Accesul la stocarea externă este respinsă.
- The app needs permission to access your device storage for playing music
- Storage Access
+ Aplicația are nevoie de permisiunea de a accesa spațiul de stocare al dispozitivului pentru a reda muzica
+ Acces la stocare
Permisiunile au fost respinse.
Personalizare
Personalizează UI si pagina de redare
Alegeți din spațiul de stocare local
Pinterest
- Follow Pinterest page for Retro Music design inspiration
+ Urmărește pagina Pinterest pentru inspirație de design Retro Music
Simplu
- Playlist already exists
- Pitch
+ Lista de redare există deja
+ Pas
Setări de redare
Viteză de redare
Notificarea de redare oferă acțiuni de redare / pauză etc.
@@ -317,10 +317,10 @@
Playlist-ul este gol
Numele playlist-ului
Playlist-uri
- Amount of blur applied for blur themes, lower is faster
- Blur amount
- Filter songs by length
- Filter song duration
+ Cantitatea de blur aplicată temelor din această categorie, o valoare mai mică redă performanțe mai bune
+ Cantitatea de blur
+ Filtrează melodiile după lungime
+ Filtrează durata melodiei
Avansat
Stil album
Audio
@@ -331,68 +331,68 @@
Bibliotecă
Ecran de blocare
Playlist-uri
- Pauses the song when the volume decreases to zero and starts playing back when the volume level rises. Also works outside the app
+ Pune pe pauză melodia când volumul scade la zero și reia redarea când volumul crește. De asemenea această funcție funcționează și în afara aplicației
Pauză la zero
Rețineți că activarea acestei funcții poate afecta durata bateriei
- Keep the screen on
- Select language
- Snow fall effect
+ Păstrează ecranul pornit
+ Selectați limba
+ Efectul de cădere a zăpezii
Folosește coperta de album curentă ca imagine de fundal pe ecranul de blocare.
- Show Album Artists in the Artist category
+ Arată și albumul artiștilor în categoria Artist
Notificațiile, navigarea etc.
- Fade audio when song is paused or played
- The content of blacklisted folders is hidden from your library.
- Start playing as soon as connected to bluetooth device
+ Estompare audio atunci când melodia este oprită sau redată
+ Conținutul dosarelor din lista neagră este ascuns în bibliotecă.
+ Începe redarea imediat ce este conectat un dispozitiv Bluetooth
Spălăcește coperta de album pe ecranul de blocare. Poate cauza probleme cu alte aplcicatii sau widget-uri.
Efectul carusel pentru coperţile de album în ecranul de redare. Rețineți că tema Card și Blur Card nu va funcționa
Folosește designul classic de notificare.
Culoarea fundalului și a butonului de control se schimbă în dependență de coperta albumului din ecranul de redare
Colorează comenzile rapide în culoarea de accent. De fiecare dată cînd schimbați culoarea, comutați această opțiune pentru effect
"Coloreaz\u0103 notificarea dup\u0103 culoarea copertei de album."
- Duration to crossfade between songs
- As per Material Design guide lines in dark mode colors should be desaturated
- Clicking on the notification will show now playing screen instead of the home screen
- Add extra controls for mini player
+ Durata de intersectare între melodii
+ Conform schemei folosite, Material Design, în modul întunecat, culorile ar trebui să fie mai desaturate
+ Apăsând pe notificare se va afișa ecranul cu actuala melodia redată, în locul ecranului principal
+ Adaugă controale suplementare pentru mini player
Afișează informații suplimentare despre piesă, cum ar fi formatul fișierului, rata de biți și frecvența
"Poate cauza probleme de redare pe unele dispozitive."
- Show or hide the home banner
+ Arată sau ascunde banner-ul acasă
Poate mări calitatea copertei de album, dar cauzează încărcarea mai lentă a imaginilor. Activați această opțiune doar dacă aveți probleme cu coperta de album cu rezoluție mică.
- Configure visibility and order of library categories.
+ Configurează vizibilitatea și ordinea categoriilor de librării.
Comenzi pe ecranul de blocare pentru Retro music.
- Always play audio in background regardless of anything else being played
+ Redă mereu audio în fundal, indiferent dacă altceva este redat
Detalii privind licența pentru software open source
- When enabled, newly played songs won\'t show in history
- Navigate to the last used tab on start
- Display synced lyrics over album cover
- Show New Music Mix on homescreen
- Enables changing song by swiping anywhere on the now playing screen
- Swipe down to dismiss mini player
+ Când este activată, melodiile noi recent redate, nu vor apărea în istoric
+ Navigați la ultima filă folosită la pornire
+ Afișează versurile sincronizate peste coperta de album
+ Arată Noul Mix de Muzică pe ecranul principal
+ Activează schimbarea melodiei prin glisare oriunde pe ecranul cu melodia redată actuală
+ Glisează în jos pentru a închide mini player-ul
Mod imersiv
Începe redarea imediat ce sunt conectate căștile.
- Shuffle mode will turn off when playing a new list of songs
+ Modul de amestecare se va dezactiva atunci când vei asculta o nouă listă de melodii
Dacă aveți spațiu pe ecranul de redare, activați controalele de volum
- Extract accent color from wallpaper
- Only show music from /Music Folder
+ Extrage accentul de culoare din fundal
+ Arată doar melodiile din folderul de muzică
Afișați coperta albumului
- Navigate by Album Artist
- Album cover theme
- Album cover skip
+ Navighează după Artistul de album
+ Temă pentru coperta albumului
+ Ignoră coperta de album
Comenzi rapide colorate
- Header style
+ Stil antet
Reduce volumul la pierderea focalizării
- Fade audio
+ Estompare audio
Descărcați automat imagini ale artistului
Lista neagră
- Bluetooth playback
+ Redare prin Bluetooth
Spălăcește coperta albumului
- Circular play button
+ Butonul de redare circulară
Design classic de notificare
Culoare adaptivă
Notificare colorată
- Crossfade (Beta)
- Use Manrope font
- Desaturated color
- Show now playing screen
+ Suprapunere între piese (Beta)
+ Utilizează fontul Manrope
+ Culoare desaturată
+ Arată ecranul de redare actuală
Comenzi suplimentare
Informații melodie
Redare \"Gapless\"
@@ -408,9 +408,9 @@
Redare întotdeauna
Aspect
Licențe open source
- Pause history
- Remember last tab
- Show lyrics
+ Istoric de pauze
+ Reține ultima filă
+ Arată versurile
Arată sugestiile
Glisează oriunde pentru a schimba melodia
Respinge prin glisare în jos
@@ -421,10 +421,10 @@
Mod redare aleatorie
Controale volum
Culoare de accent fundal
- Whitelist music
+ Lista albă de muzică
Pro
- Black theme, Now playing themes, Carousel effect and more..
- Profile
+ Temă neagră, teme pentru ecranul de redare, efectul Carusel și multe altele..
+ Profil
Procurare
Coadă
Evaluaţi aplicaţia
@@ -434,130 +434,130 @@
Eliminare
Eliminare copertă
Eliminare din lista neagră
- Remove Image
+ Ștergeți imaginea
Eliminați melodia din lista de redare
%1$s din lista de redare?]]>
Eliminare melodii din lista de redare
%1$d melodii din lista de redare?]]>
Redenumiţi lista de redare
- Replace Cover
- Report an issue
- Report bug
- Reset
+ Înlocuiește coperta
+ Raportați o problemă
+ Raportare bug
+ Resetare
Reseteţi imaginea artistului
Restabilire
- Do you want to restore backup?
+ Doriți să restaurați copia de rezervă?
A fost restaurată achiziția anterioară. Reporniți aplicația pentru a utiliza toate funcțiile.
Au fost restabilite achizițiile anterioare.
Se restabilește achiziția...
Retro Music Player
Cumpărați RetroMusic Pro
- The app needs permission to access your device settings in order to set music as Ringtone
- Ringtone (Optional)
- File delete failed: %s
+ Aplicația are nevoie de permisiunea de a accesa setările dispozitivului pentru a seta muzica ca ton de apel
+ Ton sonerie (opțional)
+ Ștergerea fișierului a eșuat: %s
- Can\'t get SAF URI
- Open navigation drawer
- Enable \'Show SD card\' in overflow menu
+ Nu se poate obține SAF URI
+ Deschide sertarul de navigare
+ Activează opțiunea \"Arată cardul de memorie\" în meniu
- %s needs SD card access
- You need to select your SD card root directory
- Select your SD card in navigation drawer
- Do not open any sub-folders
- Tap \'select\' button at the bottom of the screen
- File write failed: %s
- Save
+ %s are nevoie de acces la cardul SD
+ Trebuie să selectezi directorul root al cardului SD
+ Selectează cardul SD în meniul de navigare
+ Nu deschide niciun subdirector
+ Apasă butonul \'selectează\' din partea de jos a ecranului
+ Scrierea fișierului a eșuat: %s
+ Salvare
Salvare ca fişier
- Save as files
+ Salvează ca fișiere
Salvaţi lista de redare în %s.
Salvare modificări
- Scan media
+ Scanare media
Au fost scanate %1$d din %2$d fişiere.
- Scrobbles
- Select all
- Selected
- Set
+ Monitorizare timp muzică
+ Selectează tot
+ Selectat
+ Setare
Setaţi imaginea artistului
- Share app
- Share the app with your friends and family
- Share to Stories
- Show Album Artists
+ Distribuie aplicația
+ Distribuie aplicația prietenilor și familiei
+ Distribuie în Poveste
+ Arată artiștii albumului
Amestecare
Simplu
Temporizatorul a fost anulat.
Temporizatorul este setat pentru %d minute de acum.
Social
- Share story
+ Partajează povestea
Melodie
Durată
Melodii
ordinea de sortare
- Ascending
+ Ascendent
Album
Artist
Compozitor
- Date added
- Date modified
- Default
- Song count
- Song count desc
- Year
- Descending
+ Data adăugării
+ Data modificării
+ Implicit
+ Numărul pieselor
+ Numărul descrierilor de melodii
+ An
+ Descrescător
Scuze! Dispozitivul tau nu suporta comenzi vocale
Caută în colecția ta
- Stack
- Start playing music.
- Suggestions
+ Stivă
+ Începe să redai muzică.
+ Sugestii
Susţineţi dezvoltarea
- Swipe to unlock
- Synced lyrics
+ Glisează pentru a debloca
+ Versuri sincronizate
Telegram
- Join the Telegram group to discuss bugs, make suggestions, show off and more
+ Alătură-te grupului de Telegram pentru a discuta despre erori, a face sugestii și mai multe
Mulțumesc!
Fișier audio
Luna aceasta
Săptămâna aceasta
Anul acesta
Mic
- Tiny card
- Title
- New Backup
+ Card mic
+ Titlu
+ Copie de rezervă nouă
Astăzi
Albume de top
Artişti de top
"Melodie (2 pentru melodia 2 sau 3004 pentru CD3 melodia 4)"
Numărul piesei
Traducere
- Help us translate the app to your language
- Try Retro Music Premium
+ Ajută-ne să traducem aplicația
+ Încearcă Retro Muzică Premium
Twitter
- Share your design with Retro Music
- Unlabeled
+ Împărtășește design-ul tău cu Retro Music
+ Neetichetat
Nu s-a putut reda aceast\u0103 melodie.
Urmează
Actualizare imagine
Se actualizează...
- User Images
- User Name
- Username
+ Imaginile utilizatorului
+ Nume utilizator
+ Nume utilizator
Versiune
- Vertical flip
- View on Telegram
- Volume
+ Rotire răsturnată
+ Vezi pe Telegram
+ Volum
Căutare pe internet
- Website
- Check out our Website
- Welcome,
+ Pagină web
+ Vizitați site-ul nostru
+ Bun venit,
Ce doriți să expediați?
- What\'s New
+ Ce e nou
Fereastră
- Rounded corners
+ Colțuri rotunjite
Setează %1$s ca ton de apel
%1$d selectat
Anul
- You have to select at least one category.
- You will be forwarded to the issue tracker website.
- Your account data is only used for authentication.
+ Trebuie să selectezi cel puțin o categorie.
+ O să fii redirecționat spre un site pentru monitorizarea erorilor.
+ Datele contului tău sunt folosite doar pentru autentificare.
diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml
index d1d4e9131a..40177b1152 100644
--- a/app/src/main/res/values-ru-rRU/strings.xml
+++ b/app/src/main/res/values-ru-rRU/strings.xml
@@ -1,12 +1,12 @@
Об альбоме %s
- Команда, ссылки на соц. сети
- Основной цвет
- Основной цвет, по умолчанию фиолетовый
+ Команда, ссылки на социальные сети
+ Цвет акцента
+ Акцентный цвет, по умолчанию фиолетовый
О программe
Добавить в чёрный список
- Добавить в избранное
+ Добавить в любимые
Добавить в очередь воспроизведения
Добавить в плейлист
Отменить
@@ -15,12 +15,12 @@
Режим циклического повтора
Удалить
Удалить с устройства
- Подробности
+ Информация о файле
Изменить
Перейти к альбому
Перейти к исполнителю
Перейти к жанру
- К тексту песни
+ Перейти к тексту песни
В начало
Разрешить
Размер сетки
@@ -28,11 +28,11 @@
Новый плейлист
Далее
Играть
- Воспроизвести всё
- Играть далее
+ Играть все
+ Играть следующим
Воспроизведение/Пауза
- Предыдуший
- Удалить из избранного
+ Предыдущий
+ Удалить из любимых
Удалить из очереди воспроизведения
Удалить из плейлиста
Переименовать
@@ -40,11 +40,11 @@
Сканировать
Поиск
Запустить
- Задать в качества рингтона
+ Установить в качества мелодии звонка
Установить как стартовый каталог
"Настройки"
Поделиться
- Перемешать всё
+ Перемешать все
Перемешать плейлист
Таймер сна
Порядок сортировки
@@ -55,47 +55,47 @@
Добавить
"Добавить в плейлист"
Добавить синхронизированный текст
- Добавлено %1$d песни в %2$s
+ Добавлено(-а) %1$d песня (-и, -ен) в %2$s
"В очередь добавлен 1 трек"
- В очередь добавлено %1$d треков.
+ В очередь добавлен(-о) %1$d трек(-а, -ов).
Альбом
- Песня
- Песни
- - Песни
- - Песни
+ - Песен
+ - Треков
Исполнитель альбома
Альбомы
- Альбом
- - Альбомы
- - Альбомы
- - Альбомы
+ - Альбома
+ - Альбомов
+ - Альбомов
Всегда
- Эй, попробуй этот крутой музыкальный плеер на Android: https://play.google.com/store/apps/details?id=%s
+ Привет, попробуй этот классный музыкальный плеер для Android: https://play.google.com/store/apps/details?id=%s
Перемешать
Лучшие треки
- Полное Изображение
+ Заполнение
Компактный
Классический
MD3
- Маленькое изображение
- Минималистичный текст
+ Небольшой
+ Текстовый
Исполнитель
Исполнители
Длительность затухания аудио
Фокус на аудио отключен.
Измените настройки звука и отрегулируйте настройки эквалайзера
- Авто
- Резервное копирование, восстановление ваших настроек и плейлистов
-
+ Автоматически
+ Резервирование и восстановление настроек, плейлисты
+
Резервные копии
Биография
- Чёрная
+ Чёрное оформление
Черный список
- Приложению требуется разрешение на проверку Bluetooth устройств рядом
+ Приложению требуется разрешение на поиск ближайших устройств Bluetooth
Ближайшие устройства
Размытие
Карточка с размытием
@@ -111,7 +111,7 @@
Пожалуйста, введите название отчета о проблеме
Пожалуйста, введите корректно ваше имя пользователя GitHub
Отчёт об ошибке создан
- Произошла непредвиденная ошибка. Извините, если это продолжится то \"Очистите данные приложения\" или отправьте сообщение на электронную почту
+ Произошла непредвиденная ошибка. Приносим извинения за предоставленные неудобства. Если проблемы не исчезают, очистите данные приложения или свяжитесь с нами по электронной почте
Отправить с помощью учетной записи GitHub
Купить сейчас
Отменить
@@ -146,9 +146,9 @@
Создан плейлист %1$s.
Участники и помощники
Сейчас играет %1$s от %2$s.
- Пользовательские изображения
- Отправить отчет о неполадке
- Тёмная
+ Пользовательские изображения исполнителей
+ Отправить отчет о крахе
+ Тёмное оформление
Удалить плейлист
%1$s?]]>
Удалить плейлисты
@@ -159,18 +159,18 @@
%1$d песен?]]>
Удалено %1$d песен.
Удаление песен
- Глубина
+ Масштабирование
Описание
Информация об устройстве
Разрешить Retro Music изменять настройки звука
- Выбрать рингтон
+ Выбрать мелодию звонка
Номер диска
- Вы хотите очистить черный список?
- %1$s из черного списка?]]>
+ Очистить черный список?
+ %1$s из черного списка?]]>
Пожертвовать
- Если вы считаете, что я заслуживаю награды за свой труд, можете отправить мне несколько рублей здесь
+ Если вы считаете, что я заслуживаю награды за свой труд, можете отправить мне определённую сумму
Купить мне:
- Готов
+ Готово
Режим вождения
Кнопка редактирования
Редактировать текст
@@ -181,22 +181,22 @@
Не удалось удалить резервную копию
Ваше имя не может быть пустым!
Ошибка загрузки
- Couldn\'t share file
- Растянутый
+ Не удалось просканировать файл
+ Увеличенная
ЧаВО
- Избранное
+ Любимые
Файл уже существует
- Закончить вопсроизведение последней песни
+ Закончить вопсроизведение последнего трека
По размеру
- Плоская
+ Плоское
Папки
- Системная
+ Системное
Для вас
Доступно
Заполнение
Заполненная карточка
- Измените тему и цвет в приложении
- Внешний вид интерфейса
+ Изменение оформления и цвета приложения
+ Внешний вид
Жанр
Жанры
Развивайте проект на GitHub
@@ -212,7 +212,7 @@
8
Стиль сетки
Нужна ещё помощь?
- Пластинки
+ Петля
История
История очищена
Отменить
@@ -220,10 +220,10 @@
Горизонтальный поворот
Изображение
Градиентное изображение
- Изменение настроек загрузки изображения артиста
+ Изменение настроек загрузки изображений исполнителей
Импорт
Импорт плейлиста
- Импортирует все плейлисты, перечисленные в Android Media Store с песнями, если плейлисты уже существуют, песни будут объединены.
+ Импортирует все плейлисты с песнями, находящиеся в Android Media Store. Если плейлисты уже существуют, песни будут объединены.
В плейлист %2$s внесено %1$d песен.
Поделитесь своим обзором на приложение Retro Music в Instagram
Клавиатура
@@ -235,17 +235,17 @@
Последнее изменение
Больше от %s
Частота дискретизации
- Длина
+ Длительность
Показывать всегда
Последние добавленные
- Последняя песня
+ Последний трек
Вперед
Разделы библиотеки
Лицензии
- Белая
+ Белое
Слушатели
Список файлов
- Загрузка товаров...
+ Загрузка товаров…
Войти
Текст песни
Сделано с ❤️ в Индии
@@ -253,153 +253,153 @@
Ошибка
Ошибка разрешения
Резервная копия успешно создана.
- Не более 5 элементов
+ Должно быть не более 5 элементов
%s является Pro функцией.
Восстановление успешно завершено.
Обновлено
- Добро пожаловать в %s]]>
- Моё имя
- Любимые треки
+ Добро пожаловать в %s]]>
+ Имя
+ Часто воспроизводимые
Никогда
Новый Микс
Новый плейлист
- %s новая стартовая директория.
- Следующая песня
- Альбомы отсутствуют
- Исполнители отсутствуют
- "Сначала проиграйте песню, затем попробуйте заново."
+ %s - новая стартовая директория.
+ Следующий трек
+ У вас нет альбомов
+ У вас нет исполнителей
+ "Сначала проиграйте песню, затем попробуйте ещё раз."
Резервные копии не найдены
Эквалайзер не найден
- Жанры отсутствуют
- Текст отсутствует
+ У вас нет жанров
+ Текст не найден
Нет проигрываемых песен
- Плейлисты отсутствуют
+ У вас нет плейлистов
Покупки отсутствуют.
Нет результатов
- Нет песен
+ У вас нет песен
Обычная
Обычный текст
%s не найден в хранилище медиа.]]>
- Сейчас не проигрывается
+ Нет недавно воспроизведенных треков
Нет файлов для сканирования.
Нет файлов для сканирования
- Уведомления
- Настроить стиль уведомлений
+ Уведомление
+ Настроить стиль уведомления
Экран воспроизведения
- Очередь в \"Экране воспроизведения\"
- Настроить экран воспроизведения
- 9+ тем экрана текущего воспроизведения
+ Очередь в экране воспроизведения
+ Настройка экрана воспроизведения
+ 9 новых оформлений экрана воспроизведения
Только по Wi-Fi
- Эксперементальные возможности
- Другое
- За обложкой
+ Экспериментальные возможности
+ Другие
+ Поверх обложки
Пароль
Последние 3 месяца
Вставьте текст песни
Вставьте синхронизированный текст песни
Просмотр
- Отказано в доступе к устройствам поблизости.
- Разрешение для доступа у внешнему хранилищу не получено.
+ Отказано в доступе к поиску устройств поблизости.
+ Разрешение для доступа к внешнему хранилищу не получено.
Приложению требуется разрешение на доступ к внутренней памяти вашего устройства для воспроизведения музыки.
- Доступ к внутренней памяти
+ Доступ к хранилищу
Разрешения не получены.
Персонализация
- Настройте управление экрана воспроизведения и интерфейс управления музыкой
+ Настройка экрана воспроизведения и интерфейса управления музыкой
Выбрать из хранилища
Pinterest
Подпишитесь на страницу Retro Music в Pinterest
- Гладкая
+ Гладкое
Плейлист уже существует
Высота
Параметры воспроизведения
Скорость воспроизведения
- Уведомление о песне предоставляет действия для воспроизведения/паузы и т.д.
- Уведомления воспроизведения
+ Уведомление в виде плеера позволяет управлять воспроизведением музыки
+ Уведомление в виде плеера
%s успешно создан
Плейлист пуст
Название плейлиста
Плейлисты
- Степень размытия в соответствующих темах; чем ниже, тем быстрее работает устройство
+ Степень размытия в соответствующих темах. Чем ниже значение размытия, тем выше быстродействие устройства
Степень размытия
- Фильтровать песни по длине
+ Убрать из списка песни, длительность которых ниже выбранного значения
Фильтровать песни по длительности
Расширенные настройки
Стиль альбома
Звук
Черный список
Управление
- Тема
+ Оформление
Изображения
Библиотека
Экран блокировки
Плейлисты
- Ставит музыку на паузу при уменьшении громкости до нуля и играет после увеличения громкости. Предупреждение, когда вы увеличиваете громкость не в приложении, то Retro Music также начнёт воспроизведение
+ Ставить музыку на паузу при уменьшении громкости до нуля и продолжать воспроизведение после увеличения громкости. Предупреждение: при увеличении громкости вне приложения, Retro Music также начнёт воспроизведение
Пауза при нулевой громкости
- Имейте в виду, что включение этой функции может повлиять на заряд батареи
- Оставить экран включенным
+ Имейте в виду, что включение этой функции может повлиять время работы от батареи
+ Оставлять экран включенным
Выберите язык
Эффект снегопада
Использовать обложку альбома текущей песни в качестве обоев на экране блокировки.
- Только альбомы исполнителей
- Снизить громкость воспроизведения когда приходит звуковое уведомление
+ Показывать исполнителей альбомов во вкладке \"Исполнители\"
+ Снижать громкость воспроизведения когда играет системный звук или приходит уведомление
Затухать звук, когда песня приостановлена или воспроизведена
Содержимое черного списка скрыто из вашей библиотеки.
- Начать воспроизведение сразу же после подключения Bluetooth-устройства
- Размыть обложку альбома на экране блокировки. Может вызывать проблемы со сторонними приложениями и виджетами.
- Эффект карусели для обложек альбома на экране воспроизведения. Учтите, что темы \"Карточка\" и \"Карточка с размытием\" не будут работать
- Использовать классический дизайн уведомлений.
- Цвет кнопок фона и кнопок управления изменяется в соответствии с обложкой альбома с экрана воспроизведения
- Окрашивает ярлыки в основной цвет. Каждый раз, когда вы меняете цвет, вкл-выкл эту настройку, чтобы изменение вступило в силу
- "Окрашивает уведомление в доминирубщий цвет обложки альбома"
- Продолжительность crossfade между песнями
- Согласно Material Design в темном режиме цвета должны быть немного обесцвечены
+ Начать воспроизведение сразу же после подключения устройства Bluetooth
+ Размыть обложку альбома на экране блокировки. Может вызвать проблемы со сторонними приложениями и виджетами
+ Эффект карусели для обложек альбома на экране воспроизведения. Эффект не работает для тем \"Карточка\" и \"Карточка с размытием\"
+ Использовать классический дизайн уведомления
+ Цвет фона и кнопок управления изменяется в соответствии с обложкой альбома с экрана воспроизведения
+ Окрашивает ярлыки приложения в акцентный цвет. Каждый раз, когда вы меняете цвет, вкл-выкл эту настройку, чтобы изменение вступило в силу
+ "Окрашивает уведомление в доминирующий цвет обложки альбома"
+ Продолжительность кроссфейда между песнями
+ Согласно стилю Material Design, в темном режиме цвета должны быть немного обесцвечены
Нажатие на уведомление будет показывать экран воспроизведения вместо домашнего экрана
Добавить дополнительные элементы управления для мини-плеера
- Показать дополнительную информацию о песне, такую как формат файла, битрейт и частота
+ Показывать дополнительную информацию о песне, такую как формат файла, битрейт и частота
"Может вызвать проблемы с воспроизведением на некоторых устройствах."
Показывать кнопку Домой
- Может повысить качество обложки альбома, но привести к более медленной загрузки изображения. Включите это только в том случае, если у вас есть картинки с низким разрешением
- Настроить вид и порядок категорий в библиотеке.
+ Может повысить качество обложки альбома, но привести к более медленной загрузке изображения. Включайте это только в том случае, если у вас есть проблемы с картинками низкого разрешения
+ Настроить вид и порядок вкладок в библиотеке.
Используйте собственный экран блокировки Retro Music
- Всегда воспроизводить звук в фоне, несмотря на воспроизведение чего-то другого
+ Всегда воспроизводить звук в фоне вне зависимости от других источников звука
Сведения о лицензии для программного обеспечения с открытым исходным кодом
Если включено, то новые песни не будут отображаться в истории
- Перейдите к последней использованной вкладке при запуске
+ При открытии приложения переходить на последнюю использованную вкладку
Показывать синхронизированный текст песни поверх обложки альбома
- Показывать Новый Музыкальный Микс на главном экране
- Включает смену песни, свайпом в любом месте на текущем экране
+ Показывать Новый Микс на главном экране
+ Включает смену песни по свайпу в любом месте на экране воспроизведения
Проведите вниз, чтобы закрыть мини-плеер
Полноэкранный режим
Начать воспроизведение музыки сразу после подключения наушников
Режим перемешивания выключится при проигрывании нового списка песен
- Если доступно достаточно места, показывать регулировку громкости на экране воспроизведения
- Использовать цветовое оформление из обоев
+ Если места на экране достаточно, показывать панель регулировки громкости на экране воспроизведения
+ Использовать цвет акцента из обоев
Показывать музыку только из папки /Music
Показать обложку альбома
Показывать обложку альбома в разделе исполнители
- Тема обложки альбома
- Стиль смены обложки альбома
+ Оформление обложки альбома
+ Эффект смены обложки альбома
Цветные ярлыки
- Стиль заголовка
- Уменьшить громкость при получении уведомлении
+ Стиль верхней панели
+ Уменьшать громкость при получении уведомления
Затухание аудио
Автозагрузка изображений исполнителя
Черный список
Воспроизведение при подключении Bluetooth
- Размытие обложки альбома
+ Размывать обложку альбома
Круглая кнопка воспроизведения
Классический дизайн уведомлений
- Адаптированный цвет
- Цветное уведомление
- Crossfade (бета)
+ Адаптивный цвет
+ Окрашенное уведомление
+ Кроссфейд (бета-версия)
Использовать шрифт Manrope
- Немного обесцвеченный цвет
- Показать экран воспроизведения
+ Обесцвеченный цвет
+ Показывать экран воспроизведения
Дополнительные элементы управления
Информация о песне
Непрерывное воспроизведение
- Тема приложения
- Сетка альбома на Главной странице
+ Оформление приложения
+ Сетка альбомов
Сетка исполнителей
Кнопка Домой
Игнорировать обложки из хранилища
@@ -407,32 +407,32 @@
Полноэкранное управление
Не выключать экран при показе текста
Тип текста песни
- Играть всегда
- Тема экрана воспроизведения
- Лицензии с открытым кодом
+ Всегда проигрывать
+ Оформление экрана воспроизведения
+ Лицензии с открытым исходным кодом
Приостановить историю
- Запомнить последнюю вкладку
+ Запоманать последнюю использованную вкладку
Показать текст песни
Показывать предложения
- Проведите пальцем где угодно, чтобы сменить песню
+ Проведите пальцем в любом месте, чтобы сменить песню
Скрывать мини-плеер свайпом
- Название нижних кнопок
+ Отображение названия вкладок
Эффект карусели
- Полноэкранное приложение
+ Полноэкранный режим приложения
Автовоспроизведение
Режим перемешивания
Регулировка громкости
Цвет акцента обоев
Музыка из белого списка
Pro
- Black theme, Now playing themes, Carousel effect and more..
+ Черное офромление, больше стилей экрана воспроизведения, эффект карусели и многое другое..
Профиль
Купить
- Очередь
+ Очередь воспроизведения
Оценить приложение
- Понравилось это приложение? Напишите нам в Google Play Store о том, как мы можем сделать его еще лучше
- Последние альбомы
- Последние исполнители
+ Понравилось приложение? Напишите нам в Google Play Store о том, как мы можем сделать его еще лучше
+ Недавние альбомы
+ Недавние исполнители
Удалить
Удалить обложку
Удалить из черного списка
@@ -440,7 +440,7 @@
Удалить песню из плейлиста
%1$s из плейлиста?]]>
Удалить песни из плейлиста
-
+
Переименовать плейлист
Заменить обложку
Сообщить об ошибке
@@ -449,17 +449,17 @@
Сбросить изображение исполнителя
Восстановить
Вы уверены, что хотите восстановить резервную копию?
- Предыдущая покупка восстановлена. Перезагрузите приложение, чтобы использовать все функции.
- Восстановленные предыдущие покупки.
- Восстановление покупки ...
+ Предыдущая покупка восстановлена. Перезагрузите приложение, чтобы воспользоваться всеми функциями.
+ Предыдущие покупки восстановлены.
+ Восстановление покупки…
Retro Music Player
Retro Music Pro
- Приложению требуется разрешение на доступ к настройкам вашего устройства, чтобы установить музыку в качестве рингтона.
+ Приложению требуется разрешение на доступ к изменению настроек вашего устройства, чтобы установливать музыку в качестве мелодии звонка
Мелодия звонка (необязательно)
Ошибка при удалении файла: %s
Не удается получить SAF URI
- Открыть навигационное меню
+ Открыть меню навигации
Включите «Показать SD-карту» в всплывающем меню
%s необходим доступ к SD-карте
@@ -473,51 +473,51 @@
Сохранить как...
Сохранить как...
- Сохраненный список воспроизведения в %s.
+ Плейлист сохранён в %s.
Сохранение изменений
Сканировать медиа-файлы
Просканировано %1$d из %2$d файлов.
Скробблинг
Выбрать все
- Выбранная кнопка
+ Выбрано
Установить
Установить изображение исполнителя
Поделиться приложением
Поделитесь приложением со своими друзьями и родственниками
Поделиться в Историях
- Показать исполнителей альбома
+ Не показывать исполнителей альбомов
Перемешать
- Простая
+ Простой
Таймер отключения отменен.
Таймер сна установлен на %d минут.
Социальный
- Поделиться историей
- Песня
- Длительность песни
- Песни
+ Поделиться в историях
+ Трек
+ Продолжительность трека
+ Треки
Порядок сортировки
По возрастанию
Альбом
Исполнитель
Композитор
- Дата
+ Дата добавления
Дата изменения
- Default
- Колличество песен
- Количество композиций по убыванию
+ По умолчанию
+ Количество треков
+ Количество треков по убыванию
Год
По убыванию
- Извините! Ваше устройство не поддерживает ввод с помощью речи
+ Извините! Ваше устройство не поддерживает голосовой ввод
Поиск в вашей библиотеке
- Стэк
+ Стопка
Начать воспроизведение музыки.
Предложения
Поддержать разработку
Проведите, чтобы разблокировать
- Синхронизируемый текст
+ Синхронизированный текст
Telegram
- Присоединяйтесь к группе Telegram, чтобы обсуждать ошибки, предлагать улучшения, хвастаться и т.д.
- Спасибо !
+ Присоединяйтесь в нашу группу в Telegram, чтобы обсуждать ошибки, предлагать улучшения, хвастаться и т.д.
+ Спасибо!
Аудиофайл
Этот месяц
Это неделя
@@ -529,34 +529,34 @@
Сегодня
Топ альбомов
Топ исполнителей
- "Трек (2 для трека 2 или 3004 для CD3 трека 4)"
+ "Трек (2 для трека 2 или 3004 для трека 4 диска 3)"
Номер трека
- Переведите
+ Помочь с переводом
Помогите нам перевести приложение на ваш язык
Попробуйте Retro Music Premium
Твиттер
Поделитесь своим дизайном Retro Music
Не показывать
- Невозможно проиграть эту песню
- Следующие песни
+ Невозможно проиграть этот трек.
+ Следующие треки
Обновить изображение
- Обновляется…
+ Обновление…
Пользовательские изображения
Имя Пользователя
Имя пользователя
Версия
Вертикальный поворт
- Смотреть в Telegram
+ Посмотреть в Telegram
Громкость
Поиск в интернете
- Сайт
+ Наш сайт
Посмотрите наш веб-сайт
Добро пожаловать,
Чем вы хотите поделиться?
- Что нового :
+ Что нового:
Окно
Закругленные углы
- Установите %1$s в качестве мелодии звонка.
+ Установить %1$s в качестве мелодии звонка.
Выбрано %1$d
Год
Выберите хотя бы одну категорию.
diff --git a/app/src/main/res/values-sr-rSP/strings.xml b/app/src/main/res/values-sr-rSP/strings.xml
index c99f33fcd1..276a5ef201 100644
--- a/app/src/main/res/values-sr-rSP/strings.xml
+++ b/app/src/main/res/values-sr-rSP/strings.xml
@@ -1,10 +1,10 @@
- About %s
- Team, social links
+ О %s
+ Тим и платформе
Boja detalja
Boja plejera, uobičajena je zelena
- O programerima
+ О апликацији
Add to Blacklist
Dodaj u omiljene
Dodaj u listu za pustanje
@@ -12,23 +12,23 @@
Otkazi trenutni tajmer
Cast
Izbrisi trenutnu plejlistu za pustanje
- Cycle repeat mode
+ Понављај
Obrisi
Izbrisi sa uredjaja
Detalji
- Edit
+ Уреди
Vidi album
Vidi izvodjaca
- Go to genre
- Go to Lyrics
+ Иди на Жанр
+ Иди на текст
Idi u pocetni direktorijum
.
Velicina kartica
.
- New playlist
+ Нова Плејлиста
Sledece
Pusti
- Play all
+ Пусти све
Pusti sledeće
Pusti/pauziraj
Prethodno
@@ -42,95 +42,95 @@
Postavi
Postavi kao melodiju zvona
Postavi kao pocetni direktorijum
- "Podesavanja"
+ "Подешавања"
Podeli
Nasumicno pusti
Nasumicno pusti plejlistu
Tajmer za iskljucivanje
- Sort order
+ Сортирање
Uredjivac tagova
- Toggle favorite
- Toggle shuffle mode
- Adaptive
- Dodaj
+ Укључи омиљење
+ Укључи насумично пуштање
+ Прилагодљиво
+ Додај
"Dodaj na plejlistu"
Add Time Framed Lyrics
Added %1$d song(s) to %2$s
"Dodata je 1 pesma na plejlistu"
Dodato %1$d pesama na plejlistu
- Album
+ Албум
- - Song
- - Songs
- - Songs
+ - Нумера
+ - Нумере
+ - Нумера
- Album Artist
- Albumi
+ Извођач албума
+ Албуми
- - Album
- - Albums
- - Albums
+ - Албум
+ - Албумa
+ - Албумa
- Uvek
+ Увек
Isprobaj ovaj fantastican plejer na: https://play.google.com/store/apps/details?id=%s
Reprodukuj nasumicno
Najvise slusano
- Full Image
+ Цела слика
Card
Classic
MD3
Small
Minimal Text
- Izvodjac
- Izvodjac
+ Извођач
+ Извођач
Audio fade duration
Zvuk se vec reprodukuje
Change the sound settings and adjust the equalizer controls
- Auto
+ Аутоматски
Backup and restore your settings, playlists
-
- Backups
+
+ Резервне копије
Biografija
Perfektno crna
Ne trazi muziku u...
The app needs nearby devices permission to check for bluetooth devices
- Nearby devices
- Blur
+ Уређаји у близини
+ Замагли
Blur Card
- Unable to send report
+ Немогуће је послати извештај
Invalid access token. Please contact the app developer.
Issues are not enabled for the selected repository. Please contact the app developer.
An unexpected error occurred. Please contact the app developer.
- Wrong username or password
- Issue
- Send manually
+ Погрешно корисничко име или лозинка
+ Проблем
+ Пошаљи ручно
Please enter an issue description
Please enter your valid GitHub password
Please enter an issue title
- Please enter your valid GitHub username
+ Унесите исправно корисничко име на GitHub-у
Bug report successful
An unexpected error occurred. Sorry you found this bug, if it keeps crashing \"Clear app data\" or send an Email
Send using GitHub account
- Buy now
+ Купи сада
Otkazi trenutni tajmer
- Card
- Colored Card
- Square Card
- Card
+ Картица
+ Обојена картица
+ Квадратна картица
+ Картица
Carousel effect on the now playing screen
Cascading
Izmene
Check out What\'s New
- Choose Image
+ Изабери слику
Choose what to restore
- Circle
- Circular
+ Круг
+ Кружно
Classic
Ocisti
Ocisti listu za ignorisanje foldera
Clear History
Clear queue
- Color
+ Боја
Boje
Compact
Composer
@@ -150,9 +150,9 @@
Izbrisi plejlistu
%1$s plejlistu?]]>
Izbrisi plejlistu
- Delete song
+ Обриши нумеру
%1$s?]]>
- Delete songs
+ Обриши нумере
%1$d plejliste?]]>
%1$d numere?]]>
Izbrisi %1$d numere.
@@ -177,28 +177,28 @@
Ekvilajzer
Couldn\u2019t create backup
Couldn\u2019t delete backup
- Your name can\'t be empty!
- Load failed
- Couldn\'t share file
+ Име мора постојати
+ Учитавање неуспешно
+ Неуспешно дељење песме
Expanded
- FAQ
+ ЧП и О
Favoriti
- File already exists
+ Песма већ постоји
Finish last song
Fit
Ravno
Folderi
Follow system
Za tebe
- Free
+ Бесплатно
Ispunjen
Full card
- Change the theme and colors of the app
- Look and feel
+ Прилагоди тему и боју
+ Изглед и утисак
Zanr
- Genres
+ Жанра
Fork the project on GitHub
- Gradient
+ Прелаз
Grant access
1
2
@@ -209,47 +209,47 @@
7
8
Grid style
- Need more help?
+ Треба помоћ?
Hinge
Istorija reprodukovanja
History cleared
- Undo
+ Опозови
Pocetak
Horizontal flip
- Image
+ Слика
Gradient image
Change artist image download settings
- Import
- Import playlist
+ Увези
+ Увези плејлисту
It imports all playlists listed in the Android Media Store with songs, if the playlists already exists, the songs will get merged.
Ubaceno %1$d pesama u plejlistu %2$s.
Share your Retro Music setup to showcase on Instagram
- Keyboard
+ Тастатура
Bitrate
Formatiraj
Naziv datoteke
Lokacija datoteke
Velicina
- Last Modified
+ Задње додирнуто
More from %s
Brzina uzorkovanja
Duzina trajanja
- Labeled
+ Названо
Poslednje dodato
- Last song
- Let\'s go
+ Задња песма
+ Хајдемо!
Library categories
Licence
Perfektno bela
- Listeners
+ Слушаоци
Pronalazenje pesama
Ucitavanje datoteka...
- Login
+ Пријава
Tekst pesme
- Made with ❤️ in India
- Material
- Error
- Permission error
+ Направљено с љубављу из Индије
+ Материјал
+ Грешка
+ Немогуће приступити песмама
Backup created successfully.
Not more than 5 items
%s is a Pro feature.
@@ -262,7 +262,7 @@
New Music Mix
Nova plejlista
%s je novi pocetni direktorijum.
- Next Song
+ Следећа Песма
Nema albuma
Nema izvodjaca
"Prvo pusti pesmu, a onda pokusaj opet"
@@ -276,14 +276,14 @@
Nema rezultata
Nema pesama
Normalno
- Normal lyrics
+ Нормални текстови
%s nije pronadjen u prodavnici pesama]]>
Not recently played
Nema se sta skenirati
Nothing to see
Obavestenja
Customize the notification style
- Now playing
+ Репродукује се
Lista za trenutno pustanje
Customize the now playing screen
9+ now playing themes
@@ -299,9 +299,9 @@
Nearby devices permission denied.
Dozvola za pristup spoljasnjem skladistu je odbijena
The app needs permission to access your device storage for playing music
- Storage Access
+ Приступ складишту
Dozvola odbijena.
- Personalize
+ Персонализуј
Customize your now playing and UI controls
Izaberi iz unutrasnjeg skladista
Pinterest
@@ -310,7 +310,7 @@
Playlist already exists
Pitch
Playback Settings
- Playback Speed
+ Брзина репродукције
Obavestenja obezbedjuju komande za pustanje/pauziranje itd.
Obavestenja o reprodukciji
%s created successfully
@@ -325,17 +325,17 @@
Album style
Zvuk
Ne trazi muziku u...
- Controls
- Theme
+ Контроле
+ Тема
Slike
- Library
+ Библиотека
Zakljucan ekran
Plejliste
Pauses the song when the volume decreases to zero and starts playing back when the volume level rises. Also works outside the app
Pause on zero
Keep in mind that enabling this feature may affect battery life
- Keep the screen on
- Select language
+ Задржи укључен екран
+ Изабери језик
Snow fall effect
Koristi omot albuma kao pozadinu kada se reprodukuje muzika
Show Album Artists in the Artist category
@@ -494,17 +494,17 @@
Trajanje pesme
Pesme
Nacin sortiranja
- Ascending
- Album
+ Растуће
+ Албум
Izvodjac
- Composer
+ Композитор
Date added
Date modified
Default
Song count
Song count desc
- Year
- Descending
+ Година
+ Опадајуће
Izvini! Tvoj uredjaj ne podrzava unos govorom
Pretrazi svoju biblioteku
Stack
@@ -532,7 +532,7 @@
Prevod
Help us translate the app to your language
Try Retro Music Premium
- Twitter
+ Твитер
Share your design with Retro Music
Unlabeled
Nije moguce pustiti pesmu.
diff --git a/app/src/main/res/values-ta-rIN/strings.xml b/app/src/main/res/values-ta-rIN/strings.xml
index 87282779d5..921d409ba6 100644
--- a/app/src/main/res/values-ta-rIN/strings.xml
+++ b/app/src/main/res/values-ta-rIN/strings.xml
@@ -5,11 +5,11 @@
பொத்தான் நிறம்
பொத்தான்_நிறம்_பற்றி
எங்களை பற்றி
- Add to Blacklist
+ பிடிக்காதவையில் சேர்
பிடித்தவையில் சேமி
பாடல் வரிசையில் சேர்
பாடல் வரிசையில் சேர்
- Cancel
+ நிராகரி
ஒப்பனை
பாடல் வரிசையை நீக்கு
திரும்பச் செய்
@@ -20,7 +20,7 @@
பாடல் படப்பட்டியல் செல்
கலைஞரை காணவும்
தொகுப்பு செல்
- Go to Lyrics
+ பாடல் வரிகள்
துவக்கப் பட்டியல் செல்
அனுமதி
பகுதி அளவு
@@ -49,155 +49,155 @@
உறக்க கடிகாரம்
வரிசை பட்டியல்
பாடல் அமைப்பை மாற்று
- Toggle favorite
- Toggle shuffle mode
- Adaptive
+ பிடித்தவை
+ குழப்பி இயக்கு
+ தகவமை
சேர்
"பாடல் வரிசையில் சேர்"
- Add Time Framed Lyrics
- Added %1$d song(s) to %2$s
- "Added 1 title to the playing queue."
- Added %1$d titles to the playing queue.
- Album
+ இன்றைக்கும் பட்ட பாடல் வரிகளைச் சேர்
+ %1$d பாடல்கள் %2$sயில் சேர்க்கப்பட்டுள்ளது
+ "ஒரு பாடல் வரிசையில் சேர்க்கப்பட்டது."
+ %1$d பாடல்கள் வரிசையில் சேர்க்கப்பட்டுள்ளது.
+ தொகுப்பு
- Song
- பாடல்கள்
- Album Artist
- Albums
+ பாடல் ஆசிரியர்
+ தொகுப்புகள்
- - Album
- - Albums
+ - தொகுப்பு
+ - தொகுப்புகள்
- Always
- Hey check out this cool music player at: https://play.google.com/store/apps/details?id=%s
- Shuffle
- Top Tracks
- Full Image
- Card
- Classic
+ எப்பொழுதும்
+ இந்தச் செயலியைக் காண: https://play.google.com/store/apps/details?id=%s
+ குழப்பு
+ சிறந்த பாடல்கள்
+ முழு படம்
+ அட்டை
+ பழமையான
MD3
- Small
- Minimal Text
- Artist
- Artists
- Audio fade duration
- Audio focus denied.
- Change the sound settings and adjust the equalizer controls
- Auto
- Backup and restore your settings, playlists
-
- Backups
- Biography
- Just Black
- Blacklist
- The app needs nearby devices permission to check for bluetooth devices
- Nearby devices
- Blur
- Blur Card
- Unable to send report
- Invalid access token. Please contact the app developer.
- Issues are not enabled for the selected repository. Please contact the app developer.
- An unexpected error occurred. Please contact the app developer.
- Wrong username or password
- Issue
- Send manually
- Please enter an issue description
- Please enter your valid GitHub password
- Please enter an issue title
- Please enter your valid GitHub username
- Bug report successful
- An unexpected error occurred. Sorry you found this bug, if it keeps crashing \"Clear app data\" or send an Email
- Send using GitHub account
- Buy now
- Cancel
- Card
- Colored Card
- Square Card
- Card
- Carousel effect on the now playing screen
- Cascading
- Changelog
- Check out What\'s New
- Choose Image
- Choose what to restore
- Circle
- Circular
- Classic
- Clear
- Clear blacklist
- Clear History
- Clear queue
- Color
- Colors
- Compact
- Composer
- Copied device info to clipboard.
- Couldn\u2019t create playlist.
- "Couldn\u2019t download a matching album cover."
- Could not restore purchase.
- Could not scan %d files.
- Create
- Create
- Created playlist %1$s.
- Members and contributors
- Currently listening to %1$s by %2$s.
- Custom Artist Images
- Share Crash Report
- Kinda Dark
- Delete playlist
- %1$s?]]>
- Delete playlists
- Delete song
- %1$s?]]>
- Delete songs
- %1$d playlists?]]>
- %1$d songs?]]>
- Deleted %1$d songs.
- Deleting Songs
- Depth
- Description
- Device info
- Allow Retro Music to modify audio settings
- Set ringtone
- Disc Number
- Do you want to clear the blacklist?
- %1$s from the blacklist?]]>
- Donate
- If you think I deserve to get paid for my work, you can leave some money here
- Buy me a:
- Done
- Drive mode
- Edit Button
- Edit Lyrics
- Edit Synced Lyrics
- Empty
- Equalizer
- Couldn\u2019t create backup
- Couldn\u2019t delete backup
- Your name can\'t be empty!
- Load failed
- Couldn\'t share file
- Expanded
- FAQ
- Favorites
- File already exists
- Finish last song
- Fit
- Flat
- Folders
- Follow system
- For you
- Free
- Full
- Full card
- Change the theme and colors of the app
- Look and feel
- Genre
- Genres
- Fork the project on GitHub
- Gradient
- Grant access
+ சிறிய
+ சிறிய சொல்
+ பாடகர்
+ பாடகர்கள்
+ பாடல் மறையும் நேரம்
+ ஒலி அனுமதி மறுக்கப்பட்டுள்ளது.
+ ஒலி அமைப்புகளை மாற்று
+ தானியங்கி
+ அமைப்புக்கள் மற்றும் பாடல் கோப்புகளைச் சேமி
+
+ பேக்கப்
+ வாழ்க்கை வரலாறு
+ இருட்டு மட்டும்
+ தேவையானவை
+ இந்தச் செயலிக்குப் பக்கத்தில் உல்ல புலுடூத் சாதனங்களைக் கண்டறிய அனுமதி வேண்டும்
+ பக்கத்தில் உள்ள சாதனங்கள்
+ மங்குதல்
+ தெளிவற்ற அட்டை
+ அறிக்கையை அனுப்ப முடியவில்லை
+ தவறான டோக்கன். இந்தச் செயலியின் வடிவமைப்பாளரை அனுகவும்.
+ இப்பிரச்சனை இந்தக் கோப்பிற்கு இல்லை. இந்தச் செய்தியின் வடிவமைப்பாளரை அனுகவும்.
+ எதிர்பாராத பிழை ஏற்பட்டது. தயவுசெய்து சிறிது நேரம் கழித்து முயற்சிக்கவும்.
+ தவறான பயனாளர் பெயர் அல்லது கடவுச்சொல்
+ பிரச்சனை
+ தானாக அனுப்பு
+ பிரச்சனையை விவரி
+ சரியான கிட்கப் கடவுச்சொல்லை உள்ளிடவும்
+ பிரச்சினைக்கான தலைப்பை உள்ளிடு
+ சரியான கிட்கப் பயனர் பெயரை உள்ளிடவும்
+ பிரச்சனை வெற்றிகரமாகத் தெரிவிக்கப்பட்டது
+ தெரியாத தவறு ஏற்ப்பட்டுள்ளது. இடையூறுக்கு மன்னிக்கவும், இவ்வாறு மீண்டும் ஏற்பட்டால் \"தகவல்களை அழிக்கவும்\" அல்லது வடிவமைப்பாளரிடம் தெரிவிக்கலாம்
+ கிட்கப்பை பயன்படுத்தி அனுப்பவும்
+ இப்போது வாங்கு
+ இரத்து செய்
+ அட்டை
+ வண்ண அட்டை
+ சதுர அட்டை
+ அட்டை
+ படம் மாற்றும் அமைப்பு
+ ஒன்றின் மேல் ஒன்று
+ மாற்றங்களின் பதிவு
+ புதியவை
+ படத்தைத் தேர்வுசெய்
+ மீட்டெடுக்க தேர்வு செய்
+ வட்டம்
+ வட்ட
+ பழமையான
+ அழி
+ தடுப்புப் பட்டியலை நீக்கு
+ வரலாற்றை நீக்கு
+ வரிசையை அழி
+ வண்ணம்
+ வண்ணங்கள்
+ அடக்கமான
+ இசையமைப்பாளர்
+ சாதனத்தின் விவரங்கள் நகல் எடுக்கப்பட்டுள்ளது.
+ இசைப் பட்டியலை உருவாக்க முடியவில்லை.
+ "சரியான படத்தைப் பதிவேற்ற முடியவில்லை."
+ மீட்டெடுத்தல் தோல்வி.
+ கோப்பு %d\'யைத் தேட இயலவில்லை.
+ உருவாக்கு
+ உருவாக்கு
+ இசைப்பட்டியலை உருவாக்கு %1$s.
+ உருப்பினர் மற்றும் உதவியவர்கள்
+ தற்போது கேட்கும் பாடல் %1$s கலைஞர் %2$s.
+ சுயட்சி கலைஞர் படம்
+ தவற்றின் விவரத்தை பகிர்
+ இலங்கருப்பு
+ இசைப் பட்டியலை நீக்கு
+ %1$sயை நீக்கு?]]>
+ இசைப்பட்டியல்களை நீக்கு
+ பாடலை நீக்கு
+ %1$sயை நீக்கு?]]>
+ பாடல்களை நீக்கு
+ %1$dயை நீக்கு?]]>
+ %1$d நீக்கு?]]>
+ நீக்கப்பட்ட பாடல்கள் %1$d
+ பாடல்கள் நீக்கப்படுகிறது
+ ஆழம்
+ விளக்கம்
+ சாதனத்தின் விவரம்
+ ஒலி அமைப்புகளை மாற்ற Retro Musicஐ அனுமதி
+ அலைபேசி ஒலியாக அமை
+ பெட்டியின் எண்
+ தடுப்புப் பட்டியலை நீக்க வேண்டுமா?
+ %1$sஐ தடுப்புப் பட்டியலிருந்து நீக்க வேண்டுமா?]]>
+ நன்கொடை செய்க
+ எங்கள் உழைப்பு பிடித்திருந்ததால், சிறிதளவு பணம் அளித்த ஆதரிக்கலாம்
+ எனக்கு வாங்கு:
+ முடிந்தது
+ ஊர்தி பயனர்
+ திருத்து
+ பாடல் வரிகளைத் திருத்து
+ இனைக்கப்பட்ட பாடல் வரிகளைத் திருத்து
+ ஒன்றும் இல்லை
+ சமமாக்கி
+ பேக்கப் உருவாக்க முடியவில்லை
+ மேக்கப்பை நீக்க முடியவில்லை
+ பெயர் வெறுமையாக இருக்க இயலாது!
+ தடங்கள் ஏற்பட்டுள்ளது
+ கோப்பை பகிர இயலவில்லை
+ விரிவாக்கப்பட்டது
+ வினாக்கள்
+ விருப்பமானவை
+ இந்த கோப்பு ஏற்கனவே உள்ளது
+ கடைசி பாடலுடன் நிருத்திக்கொள்
+ பொருத்தம்
+ தட்டையான
+ கோப்புறைகள்
+ சாதனத்தின் அமைப்பை பின்பற்றவும்
+ தங்களுக்காக
+ இலவசம்
+ முழு
+ முழு அட்டை
+ செயலியின் வண்ணம் மற்றும் தீமை மாற்றவும்
+ திரை அமைப்புகள்
+ வகைகள்
+ வகைகள்
+ செயலியை நகலெடுத்து மேம்படுத்து
+ க்ரேடியன்ட்டுகள்
+ அனுமதி
1
2
3
@@ -206,65 +206,65 @@
6
7
8
- Grid style
- Need more help?
- Hinge
- History
- History cleared
- Undo
- Home
- Horizontal flip
- Image
- Gradient image
- Change artist image download settings
- Import
- Import playlist
- It imports all playlists listed in the Android Media Store with songs, if the playlists already exists, the songs will get merged.
- Inserted %1$d songs into the playlist %2$s.
- Share your Retro Music setup to showcase on Instagram
- Keyboard
- Bitrate
- Format
- File name
- File path
- Size
- Last Modified
- More from %s
- Sampling rate
- Length
- Labeled
- Last added
- Last song
- Let\'s go
- Library categories
- Licenses
- Clearly White
- Listeners
- Listing files
- Loading products…
- Login
- Lyrics
- Made with ❤️ in India
- Material
- Error
- Permission error
- Backup created successfully.
- Not more than 5 items
- %s is a Pro feature.
- Restore completed successfully.
- Updated
- Welcome to %s]]>
- Name
- Most played
- Never
- New Music Mix
+ பகுதி அளவு
+ மேலும் உதவி வேண்டுமா?
+ ஒட்டு
+ வரலாறு
+ வரலாறு அழிக்கப்பட்டது
+ செயல்தவிர்
+ முகப்பு
+ சமமாக சுழற்று
+ படம்
+ படம் வண்ணம்
+ கலைஞர் படம் தரவுகள் அமைப்பு
+ இறக்குமதி
+ பாடல் வரிசைகளை எடு
+ சாதனத்தில் உள்ள அனைத்து பாடல்களும் இனைக்கப்படும்.
+ %2$s\'யில் %1$d பாடல்கள் சேர்க்கப்பட்டுள்ளது.
+ தங்களின் Retro Music அமைப்பை Instagramயில் பகிரவும்
+ விசைப்பலகை
+ துடிப்பளவு
+ வடிவமைப்பு
+ கோப்புப் பெயர்
+ கோப்புப் பாதை
+ அளவு
+ கடைசியாக மாற்றப்பட்டது
+ இன்னும் பல %s
+ மாதிரி விகிதம்
+ நீளம்
+ முத்திரை
+ கடைசியாக சேர்த்தது
+ இறுதியாகக் கேட்டப் பாடல்
+ வாருங்கள் துவங்கலாம்
+ நூலக வகைகள்
+ உரிமங்கள்
+ முழுமையான வெள்ளை
+ கேட்பவர்கள்
+ கேட்கும் கோப்புகள்
+ Loading product…
+ உள்நுழை
+ பாடல் வரிகள்
+ அன்புடன் இந்தியாவில் உருவாக்கப்பட்டது
+ பொருள்
+ பிழை
+ அனுமதி பிழை
+ செயலிகள் மறுபிரதிஎடுத்தல் வெற்றி.
+ 5 பொருட்கள் மட்டும்
+ %s ஒரு ப்ரோ அம்சமாகும்.
+ மீட்டெடுப்பு வெற்றிகரமாக முடிந்தது.
+ புதுப்பிக்கப்பட்டது
+ , %sக்கு வரவேற்கிறோம்]]>
+ பெயர்
+ அதிகம் விளையாடியது
+ ஒருபோதும்
+ புதிய இசை கலவை
புதிய இசைப்பட்டியல்
- %s is the new start directory.
- Next Song
- You have no albums
- You have no artists
- "Play a song first, then try again."
- No Backups Found
+ %s என்பது புதிய தொடக்க கோப்பகம்.
+ அடுத்த பாடல்
+ உங்களிடம் ஆல்பம் இல்லை
+ உங்களிடம் இசையமைப்பாளர் குறிப்புடு இல்லை
+ "முதலில் பாட்டைத் தொடக்கவும், அதன் பின்பு மீண்டும் முயற்சிக்கவும்."
+ மறுபிரதி காணவில்லை
No equalizer found
You have no genres
No lyrics found
@@ -322,7 +322,7 @@
Advanced
Album style
Audio
- Blacklist
+ தேவையானவை
Controls
Theme
Images
@@ -380,7 +380,7 @@
Reduce volume on focus loss
Fade audio
Auto-download artist images
- Blacklist
+ தேவையானவை
Bluetooth playback
Blur album cover
Circular play button
@@ -482,7 +482,7 @@
Share the app with your friends and family
Share to Stories
Show Album Artists
- Shuffle
+ குழப்பு
Simple
Sleep timer canceled.
Sleep timer set for %d minutes from now.
@@ -493,9 +493,9 @@
Songs
வரிசை பட்டியல்
Ascending
- Album
- Artist
- Composer
+ தொகுப்பு
+ பாடகர்
+ இசையமைப்பாளர்
Date added
Date modified
Default
diff --git a/app/src/main/res/values-tr-rTR/strings.xml b/app/src/main/res/values-tr-rTR/strings.xml
index 654ee369f5..5dbac01b42 100644
--- a/app/src/main/res/values-tr-rTR/strings.xml
+++ b/app/src/main/res/values-tr-rTR/strings.xml
@@ -253,7 +253,7 @@
%s bir Pro özelliğidir.
Geri yükleme başarıyla tamamlandı.
Güncellendi
- Welcome to %s]]>
+ %s\'e
hoşgeldin]]>
İsim
Sık oynatılanlar
Asla
diff --git a/app/src/main/res/values-uk-rUA/strings.xml b/app/src/main/res/values-uk-rUA/strings.xml
index cd0a31edc3..74255debcb 100644
--- a/app/src/main/res/values-uk-rUA/strings.xml
+++ b/app/src/main/res/values-uk-rUA/strings.xml
@@ -1,15 +1,15 @@
- Про додаток %s
+ Про застосунок %s
Команда, посилання на соц. мережі
Акцентний колір
Акцентний колір, за замовчуванням фіолетовий
- Про додаток
+ Про застосунок
Додати до чорного списку
Додати в обране
Додати до черги відтворення
Додати до списку відтворення
- Відмінити
+ Скасовувати
Трансляція на іншому дисплеї
Очистити чергу відтворення
Циклічне повторення
@@ -41,7 +41,7 @@
Пошук
Розпочати
Встановити як мелодію дзвінка
- Встановити в якості початкової теки
+ Встановити як початкову теку
"Налаштування"
Поділитися
Перемішати всі
@@ -55,7 +55,7 @@
Додати
"Додати до списку відтворення"
Додати часові розмежування тексту
- Added %1$d song(s) to %2$s
+ Додано %1$d пісень(ів) до %2$s
"Додано 1 композицію до черги відтворення."
Додано %1$d композицій до черги відтворення.
Альбом
@@ -70,39 +70,39 @@
- Альбом
- Альбоми
- - Альбоми
+ - Альбомів
- Альбоми
Завжди
Привіт, перегляньте цей крутий музичний плеєр за адресою: https://play.google.com/store/apps/details?id=%s
Перемішати
Кращі треки
- Full Image
+ Повне зображення
Ретро музика - Картка
Ретро-музика - Класичний
MD3
Ретро-музика - Малий
- Minimal Text
+ Мінімум тексту
Виконавець
Виконавці
- Audio fade duration
+ Тривалість затухання звуку
В отриманні аудіофокусу відмовлено.
Змінити налаштування звуку та налаштувати параметри еквалайзера
Автоматично
- Backup and restore your settings, playlists
-
- Backups
+ Резервне копіювання та відновлення налаштувань, плейлистів
+
+ Резервні копії
Життєпис
Чорний
Чорний список
- The app needs nearby devices permission to check for bluetooth devices
- Nearby devices
+ Застосунку потрібен дозвіл на пристрої поблизу, щоб перевірити наявність пристроїв Bluetooth
+ Пристрої поруч
Розмиття
Розмита картка
Не вдалося надіслати звіт
- Недійсний токен доступу. Зв’яжіться з розробником додатка.
- Проблеми не включені для вибраного сховища. Зверніться до розробника програми.
- Виникла несподівана помилка. Зв\'яжіться з розробником додатку.
+ Недійсний токен доступу. Зв’яжіться з розробником застосунку.
+ Проблеми не включені для вибраного сховища. Зверніться до розробника застосунку.
+ Виникла несподівана помилка. Зв\'яжіться з розробником застосунку.
Неправильне ім\'я користувача або пароль
Помилка
Надіслати вручну
@@ -110,31 +110,31 @@
Введіть свій дійсний пароль користувача GitHub
Введіть заголовок проблеми
Введіть своє дійсне ім’я користувача GitHub
- Bug report successful
- Сталася неочікувана помилка. Вибачте, що натрапили на цю помилку, якщо вона постійно повторюється, спробуйте \"Очистити дані додатка\" або надішліть лист на ел. пошту
+ Повідомлення про помилку успішне
+ Сталася неочікувана помилка. Вибачте, що натрапили на цю помилку, якщо вона постійно повторюється, спробуйте \"Очистити дані застосунку\" або надішліть лист на ел. пошту
Надіслати через обліковий запис GitHub
Придбайте вже
Відмінити
Картка
Кольорова картка
- Square Card
+ Квадратна картка
Картка
Карусель на екрані відтворення
Каскад
Історія змін
- Check out What\'s New
- Choose Image
- Choose what to restore
+ Перевірте, що нового
+ Виберіть зображення
+ Обирайте, що відновлювати
Коло
Круглий
Класичний
Очистити
Очистити чорний список
- Clear History
+ Очистити історію
Очистити чергу
Колір
Кольори
- Compact
+ Компактний
Композитор
Скопійовано інформацію про пристрій у буфер обміну.
Не вдалося створити список відтворення.
@@ -146,8 +146,8 @@
Створено список відтворення %1$s.
Учасники та меценати
Зараз грає %1$s від %2$s.
- Custom Artist Images
- Share Crash Report
+ Індивідуальні зображення художників
+ Поділитися звітом про помилку
Майже темна
Видалити список відтворення
%1$s?]]>
@@ -158,34 +158,34 @@
%1$d списки відтворення?]]>
%1$d пісень?]]>
Видалено %1$d пісень.
- Deleting Songs
+ Видалити пісні
Глибина
Опис
Інформація про пристрій
Дозволити Retro Music змінювати налаштування звуку
Встановити як мелодію дзвінка
- Disc Number
+ Номер диску
Ви хочете очистити чорний список?
%1$s з чорного списку?]]>
Підтримати
Якщо ви вважаєте, що я заслуговую на оплату своєї праці, ви можете залишити гроші тут
Купіть мені:
- Done
+ Готово
Режим водія
- Edit Button
- Edit Lyrics
- Edit Synced Lyrics
+ Кнопка редагування
+ Змінити текст пісні
+ Редагувати синхронізовані тексти
Порожньо
Еквалайзер
- Couldn\u2019t create backup
- Couldn\u2019t delete backup
- Your name can\'t be empty!
- Load failed
- Couldn\'t share file
- Expanded
+ Не вдалося створити резервну копію
+ Не можливо\u2019t видалити резервну копію
+ Ваше ім\'я не може бути порожнім!
+ Не вдалося завантажити
+ Не вдалося поділитися файлом
+ Розширений
ЧаП
Обране
- File already exists
+ Файл вже існує
Закінчити останню пісню
Вмістити
Плоский
@@ -195,13 +195,13 @@
Безкоштовно
Повний
Повна картка
- Змінити тему і кольори додатку
+ Змінити тему і кольори застосунку
Вигляд
Жанр
Жанри
- Розгалужити проект на GitHub
- Gradient
- Grant access
+ Форк проєкту на GitHub
+ Градієнт
+ Надати доступ
1
2
3
@@ -211,19 +211,19 @@
7
8
Стиль сітки
- Need more help?
+ Необхідна додаткова допомога?
Завіса
Історія
- History cleared
- Undo
+ Історію очищено
+ Скасувати
Домашня сторінка
Горизонтальне перевернення
Зображення
Градієнтне зображення
Змінити параметри завантаження зображення виконавця
- Import
- Import playlist
- It imports all playlists listed in the Android Media Store with songs, if the playlists already exists, the songs will get merged.
+ Імпорт
+ Імпортувати плейліст
+ Імпортує всі плейлісти, перелічені в Android Media Store з піснями, якщо в списках відтворення вже є і пісні будуть об\'єднані.
Додано %1$d пісень до списку відтворення %2$s.
Похизуйтеся вашими налаштуваннями Retro Music у Instagram
Клавіатура
@@ -232,14 +232,14 @@
Назва файлу
Шлях до файлу
Розмір
- Last Modified
+ Дата останньої зміни
Більше від %s
Частота дискретизації
Довжина
З відміткою
Нещодавно додане
Остання пісня
- Let\'s go
+ Вперед!
Категорії бібліотеки
Ліцензії
Яскраво-білий
@@ -252,23 +252,23 @@
Матеріал
Помилка
Помилка дозволу
- Backup created successfully.
- Not more than 5 items
- %s is a Pro feature.
- Restore completed successfully.
- Updated
- Welcome to %s]]>
+ Резервну копію успішно створено.
+ Не більше 5 елементів
+ %s є Pro функцією.
+ Відновлення успішно завершено.
+ Оновлено
+ Вітаємо в %s]]>
Назва
Найчастіше відтворювані
Ніколи
- New Music Mix
+ Новий мікс
Новий список відтворення
%s є новим початковим каталогом.
Наступна пісня
Немає жодного альбому
Немає жодного виконавця
"Спочатку відтворіть пісню, а потім спробуйте ще раз."
- No Backups Found
+ Не знайдено резервних копій
Еквалайзер не знайдено
У вас немає жанрів
Текст не знайдено
@@ -280,7 +280,7 @@
Нормальний
Стандартний текст
%s не вказано в медіа сховищі.]]>
- Not recently played
+ Нещодавно відтворені
Нічого сканувати.
Порожньо
Сповіщення
@@ -292,16 +292,16 @@
Лише через Wi-Fi
Розширені функції тестування
Інше
- Over Cover
+ Обкладинка
Пароль
Останні 3 місяці
- Paste Lyrics Here
- Paste timeframe lyrics here
- Peek
- Nearby devices permission denied.
+ Вставити текст сюди
+ Вставити текст пісні тут
+ Погляд
+ Доступ до пристроїв поблизу заборонено.
Відмовлено у доступі до зовнішнього сховища.
- The app needs permission to access your device storage for playing music
- Storage Access
+ Застосунку потрібен дозвіл на доступ до пам\'яті пристрою для відтворення музики
+ Доступ до сховища
У доступі відмовлено.
Персоналізація
Налаштуйте екран відтворення та зовнішній вигляд
@@ -309,13 +309,13 @@
Pinterest
Слідкуйте за сторінкою Pinterest від Retro Music для натхнення дизайну
Звичайний
- Playlist already exists
- Pitch
- Playback Settings
- Playback Speed
+ Список відтворення вже існує
+ Тон
+ Налаштування відтворення
+ Швидкість Відтворення
Сповіщення про відтворення надає дії для відтворення/паузи тощо.
Сповіщення про відтворення
- %s created successfully
+ %s успішно створено
Список відтворення порожній
Назва списку відтворення
Списки відтворення
@@ -333,25 +333,25 @@
Бібліотека
Екран блокування
Списки відтворення
- Призупиняє пісню, коли гучність зменшується до нуля і починає грати під час підвищення гучності. Також працює поза додатком
+ Призупиняє пісню, коли гучність зменшується до нуля і починає грати під час підвищення гучності. Також працює поза застосунком
Пауза при нулі
Майте на увазі, що увімкнення цієї функції може вплинути на заряд акумулятора
Не вимикати екран
Обрати мову
- Snow fall effect
+ Ефект снігопаду
Використовувати обкладинку альбому пісні як шпалери екрана блокування
- Show Album Artists in the Artist category
+ Показувати виконавців альбому в категорії виконавця
Зменшення гучності при відтворенні системного звуку або сповіщення
- Fade audio when song is paused or played
+ Приглушити звуку під час паузи або відтворення пісні
Вміст тек чорного списку приховано з вашої бібліотеки.
Почати відтворення відразу при під\'єднанні до Bluetooth пристрою
- Розмивати обкладинку альбому на екрані блокування. Можуть виникнути проблеми з сторонніми додатками та віджетами
+ Розмивати обкладинку альбому на екрані блокування. Можуть виникнути проблеми зі сторонніми застосунками та віджетами
Ефект каруселі для обкладинок альбомів на екрані відтворення. Теми \"Картка\" та \"Розмита картка\" не працюватимуть
Використовувати класичне оформлення сповіщення
Тло і кольори кнопок керування міняються в залежності від обкладинки екрана відтворення
- Фарбує ярлики додатків у колір акценту. Кожного разу, коли ви змінюєте колір, будь ласка, перемкніть його, щоб зміни вступили в силу
+ Фарбує ярлики застосунків у колір акценту. Кожного разу, коли ви змінюєте колір, будь ласка, перемкніть його, щоб зміни набрали чинності
"Фарбує повідомлення в обкладинці альбому яскравим кольором"
- Duration to crossfade between songs
+ Тривалість переходу між піснями
Для Material Design лінії в темному режимі мають бути ненасичені
При натисканні на сповіщення буде показано екран відтворення замість домашнього екрану
Додати додаткові елементи керування до міні-програвача
@@ -361,101 +361,101 @@
Може збільшити якість обкладинки альбому, але збільшує час завантаження зображення. Використовуйте тільки якщо у вас проблеми з обкладинками низької роздільної здатності
Налаштувати видимість та порядок категорій бібліотеки.
Використовувати керування музикою на екрані блокування від Retro Music
- Always play audio in background regardless of anything else being played
+ Завжди відтворювати аудіо у фоновому режимі, незважаючи на інше відтворення
Деталі ліцензії для програмного забезпечення з відкритим кодом
- When enabled, newly played songs won\'t show in history
- Navigate to the last used tab on start
- Display synced lyrics over album cover
- Show New Music Mix on homescreen
- Enables changing song by swiping anywhere on the now playing screen
- Swipe down to dismiss mini player
+ Коли увімкнено, нові пісні не відображатимуться в історії
+ Перейдіть до останньої використаної вкладки при старті
+ Відображати текст пісні над обкладинкою альбому
+ Показати новий мікс музики на домашньому екрані
+ Дозволяє змінювати пісню, проводячи пальцем по екрану відтворення
+ Проведіть вниз, щоб відхилити міні плеєр
Режим занурення
Почати відтворення відразу після підключення навушників
Випадковий режим вимкнеться при відтворенні нового списку пісень
Якщо вистачає місця, показувати панель гучності на екрані відтворення
- Extract accent color from wallpaper
- Only show music from /Music Folder
+ Використовувати колір акцентів зі шпалери
+ Відображувати музику лише з /Music Folder
Показати обкладинку альбому
- Navigate by Album Artist
+ Перейти за виконавцем альбому
Тема обкладинки альбому
Пропустити обкладинку альбому
- Кольорові ярлики додатків
- Header style
+ Кольорові ярлики застосунків
+ Стиль заголовку
Зменшити гучність при сторонніх звуках
- Fade audio
+ Затухання аудіо
Автоматично завантажувати зображення виконавців
Чорний список
Відтворення Bluetooth
Розмити обкладинку альбому
- Circular play button
+ Кнопка кругового відтворення
Класичне оформлення сповіщень
Адаптивний колір
Кольорове сповіщення
- Crossfade (Beta)
- Use Manrope font
+ Плавний перехід (бета-версія)
+ Використовувати шрифт Manrope
Ненасичений колір
Показувати на екрані відтворення
Додаткові елементи керування
Інформація про пісню
Безперервне відтворення
- Тема додатку
- Album grid
+ Тема застосунку
+ Сітка альбому
Домашня сітка виконавця
Головний банер
Ігнорувати обкладинки з Медіасховища
Інтервал останнього доданого списку відтворення
Повноекранне керування
- Keep screen on when showing lyrics
- Lyrics type
- Always play
+ Не вимикати екран при відображенні тексту
+ Тип тексту
+ Завжди грати
Тема відтворення
Ліцензії з відкритим кодом
- Pause history
- Remember last tab
- Show lyrics
- Show suggestions
- Swipe anywhere to change song
- Dismiss with swipe down
+ Призупинити історію
+ Запам‘ятати останню вкладку
+ Показати текст
+ Показувати пропозиції
+ Проведіть де завгодно, щоб змінити пісню
+ Прибрати свайпом вниз
Режим назв вкладок
Ефект Каруселі
На весь екран
Автоматичне відтворення
Режим перемішування
Регулювання гучності
- Wallpaper accent color
- Whitelist music
+ Колір акцентів шпалер
+ Білий список музики
Pro
- Black theme, Now playing themes, Carousel effect and more..
+ Чорна тема, теми відтворення, ефект каруселі та інше..
Профіль
Придбати
Черга
- Оцініть додаток
- Подобається цей додаток? Напишіть відгук нам у Google Play Store, як ми можемо зробити його ще кращим
+ Оцініть застосунок
+ Подобається цей застосунок? Напишіть відгук нам у Google Play Store, як ми можемо зробити його ще кращим
Останні альбоми
Останні виконавці
Вилучити
Видалити обкладинку
Видалити з чорного списку
- Remove Image
+ Видалити зображення
Видалити пісню зі списку відтворення
%1$s зі списку відтворення?]]>
Видалити пісні зі списку відтворення
%1$d пісень зі списку відтворення?]]>
Перейменувати список відтворення
- Replace Cover
+ Змінити обкладинку
Повідомити про помилку
Повідомити про помилку
Скинути
Скинути зображення виконавця
Відновити
- Do you want to restore backup?
- Відновлено попередню покупку. Перезапустіть додаток, щоб скористатися всіма функціями.
+ Бажаєте відновити резервну копію?
+ Відновлено попередню покупку. Перезапустіть застосунок, щоб скористатися всіма функціями.
Відновлені попередні покупки.
Відновлення покупки…
Retro Music плеєр
Retro Music Pro
- The app needs permission to access your device settings in order to set music as Ringtone
- Ringtone (Optional)
+ Застосунку потрібен дозвіл на доступ до налаштувань вашого пристрою для того, щоб встановити музику як рингтон
+ Мелодія (Необов\'язково)
Помилка видалення файлу: %s
Неможливо отримати URI SAF
@@ -482,10 +482,10 @@
Обрано
Встановити
Встановити зображення виконавця
- Поділитися додатком
- Share the app with your friends and family
+ Поділитися застосунком
+ Поділитися застосунком із друзями та сім\'єю
Поділитися в Історії
- Show Album Artists
+ Показати виконавців альбому
Перемішати
Простий
Таймер сну скасовано.
@@ -502,9 +502,9 @@
Композитор
Дата додавання
Дата змінення
- Default
- Song count
- Song count desc
+ За замовчуванням
+ Кількість пісень
+ Опис кількості пісень
Рік
За спаданням
Вибачте! Ваш пристрій не підтримує введення мови
@@ -525,14 +525,14 @@
Дрібний
Крихітна картка
Назва
- New Backup
+ Нова резервна копія
Сьогодні
Топ альбомів
Топ виконавців
"Доріжка (2 для доріжки 2 або 3004 для CD3 доріжки 4)"
Номер пісні
Перекласти
- Допоможіть нам перекласти додаток на вашу мову
+ Допоможіть нам перекласти застосунок на вашу мову
Спробуйте Retro Music Преміум
Твіттер
Поділіться своїм дизайном із Retro Music
@@ -541,16 +541,16 @@
Наступне
Оновити зображення
Оновлення…
- User Images
- User Name
+ Зображення користувача
+ Ім\'я користувача
Ім\'я користувача
Версія додатку
Вертикальне сальто
- View on Telegram
+ Переглянути в Telegram
Гучність
Пошук в інтернеті
- Website
- Check out our Website
+ Сайт
+ Відвідайте наш веб-сайт
Вітаємо вас,
Чим ви хочете поділитися?
Що нового
diff --git a/app/src/main/res/values-vi-rVN/strings.xml b/app/src/main/res/values-vi-rVN/strings.xml
index c8a4f68b1c..307c696d17 100644
--- a/app/src/main/res/values-vi-rVN/strings.xml
+++ b/app/src/main/res/values-vi-rVN/strings.xml
@@ -10,7 +10,7 @@
Thêm vào danh sách chờ phát
Thêm vào danh sách phát
Hủy
- Truyền màn hình
+ Truyền tới
Xoá danh sách chờ phát
Chế độ lặp lại chu kỳ
Xoá
@@ -20,7 +20,7 @@
Đi đến album
Đi đến nghệ sĩ
Chuyển đến thể loại
- Go to Lyrics
+ Đi tới lời bài hát
Đến trang bắt đầu
Cho phép
Kích thước lưới
@@ -55,7 +55,7 @@
Thêm
"Thêm vào danh sách phát"
Thêm lời theo thời gian
- Added %1$d song(s) to %2$s
+ Thêm %1$d bài hát vào %2$s
"Đã thêm 1 bài vào danh sách chờ phát."
Đã thêm %1$d bài vào danh sách chờ phát.
Album
@@ -79,18 +79,18 @@
Văn bản nhỏ nhất
Nghệ sĩ
Nghệ sĩ
- Audio fade duration
+ Thời lượng làm mượt âm thanh
Tập trung âm thanh bị từ chối
Thay đổi cài đặt âm thanh và điều chỉnh các điều khiển bộ chỉnh âm
Tự động
- Backup and restore your settings, playlists
-
- Backups
+ Lưu trữ và khôi phục lại tùy chọn, danh sách phát của bạn
+
+ Bản sao lưu
Tiểu sử
Đen hoàn toàn
Danh sách đen
- The app needs nearby devices permission to check for bluetooth devices
- Nearby devices
+ Ứng dụng cần quyền các thiết bị lân cận để kiểm tra các thiết bị bluetooth
+ Thiết bị lân cận
Làm mờ
Thẻ mờ
Không thể gửi báo cáo
@@ -104,7 +104,7 @@
Vui lòng nhập đúng mật khẩu dùng Github của bạn
Vui lòng nhập tiêu đề vấn đề
Vui lòng nhập đúng tên người dùng Github của bạn
- Bug report successful
+ Báo cáo lỗi thành công
Đã xảy ra lỗi không mong muốn. Xin lỗi bạn vì lỗi này, nếu nó
tiếp tục xảy ra hãy \"Xóa dữ liệu ứng dụng\"
Gửi bằng tài khoản GitHub
@@ -118,18 +118,18 @@ tiếp tục xảy ra hãy \"Xóa dữ liệu ứng dụng\"
Xếp tầng
Thay đổi
Xem có gì mới
- Choose Image
- Choose what to restore
+ Chọn hình ảnh
+ Chọn mục để khôi phục
Vòng tròn
Dạng tròn
Cổ điển
Xóa
Xóa danh sách đen
- Clear History
+ Xóa Lịch sử
Xoá danh sách
Màu sắc
Màu sắc
- Compact
+ Nhỏ gọn
Tác giả
Đã sao chép thông tin thiết bị vào clipboard.
Kh\u00f4ng th\u1ec3 t\u1ea1o danh s\u00e1ch ph\u00e1t
@@ -141,8 +141,8 @@ tiếp tục xảy ra hãy \"Xóa dữ liệu ứng dụng\"
Đã tạo danh sách phát %1$s.
Thành viên và cộng tác viên
Đang nghe %1$s bởi %2$s.
- Custom Artist Images
- Share Crash Report
+ Tùy chỉnh ảnh nghệ sĩ
+ Chia sẽ báo cáo lỗi
Xám đen
Xoá danh sách phát
%1$s?]]>
@@ -159,7 +159,7 @@ tiếp tục xảy ra hãy \"Xóa dữ liệu ứng dụng\"
Thông tin thiết bị
Cho phép Retro Music cấu hình cài đặt âm thanh
Cài làm nhạc chuông
- Disc Number
+ Số đĩa
Bạn có muốn xóa danh sách đen?
%1$s khỏi danh sách đen?]]>
Ủng hộ
@@ -172,15 +172,15 @@ tiếp tục xảy ra hãy \"Xóa dữ liệu ứng dụng\"
Sửa Lời Đồng bộ
Trống
Bộ chỉnh âm
- Couldn\u2019t create backup
- Couldn\u2019t delete backup
- Your name can\'t be empty!
- Load failed
- Couldn\'t share file
- Expanded
+ Không thể tạo bản sao lưu
+ Không thể xóa bản sao lưu
+ Tên của bạn không được để trống!
+ Không thể tải
+ Không thể chia sẽ tập tin
+ Mở rộng
Câu hỏi thường gặp
Yêu thích
- File already exists
+ Tập tin đã tồn tại
Kết thúc bài cuối
Phù hợp
Phẳng
@@ -196,7 +196,7 @@ tiếp tục xảy ra hãy \"Xóa dữ liệu ứng dụng\"
Thể loại
Tham gia phát triển dự án trên Github
Gradient
- Grant access
+ Trao quyền truy cập
1
2
3
@@ -209,8 +209,8 @@ tiếp tục xảy ra hãy \"Xóa dữ liệu ứng dụng\"
Bạn cần hỗ trợ thêm?
Bản lề
Lịch sử
- History cleared
- Undo
+ Đã xóa lịch sử
+ Hoàn tác
Trang chủ
Lật ngang
Hình ảnh
@@ -227,14 +227,14 @@ tiếp tục xảy ra hãy \"Xóa dữ liệu ứng dụng\"
Tên tệp
Đường dẫn tệp
Kích thước
- Last Modified
+ Lần chỉnh sửa cuối
Thêm thông tin từ %s
Tần số lấy mẫu
Độ dài
Được dán nhãn
Đã thêm gần đây
Bài cuối
- Let\'s go
+ Hãy bắt đầu
Danh mục thư viện
Giấy phép
Hoàn toàn trắng
@@ -247,23 +247,23 @@ tiếp tục xảy ra hãy \"Xóa dữ liệu ứng dụng\"
Material
Lỗi
Lỗi quyền truy cập
- Backup created successfully.
- Not more than 5 items
- %s is a Pro feature.
- Restore completed successfully.
- Updated
- Welcome to %s]]>
+ Đã tạo thành công bản sao lưu.
+ Không nhiều hơn 5 tùy chọn
+ %s là một tính năng Pro.
+ Khôi phục thành công.
+ Đã cập nhật
+ Chào mừng bạn đến với %s]]>
Tên
Phát nhiều nhất
Không bao giờ
- New Music Mix
+ Bản phối nhạc mới
Danh sách phát mới
%s là trang bắt đầu mới.
Bài tiếp theo
Không có album
Không có nghệ sĩ
"Phát một bài hát trước, sau đó thử lại."
- No Backups Found
+ Không tìm thấy bản sao lưu
Không tìm thấy bộ chỉnh âm
Không có thể loại
Không tìm thấy lời bài hát
@@ -292,8 +292,8 @@ 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
- Peek
- Nearby devices permission denied.
+ Nhìn trước
+ Quyền truy cập thiết bị lân cận bị từ chối.
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ớ
@@ -304,13 +304,13 @@ tiếp tục xảy ra hãy \"Xóa dữ liệu ứng dụng\"
Pinterest
Theo dõi trang Pinterest để lấy cảm hứng thiết kế Retro Music
Giản dị
- Playlist already exists
- Pitch
- Playback Settings
- Playback Speed
+ Danh sách phát đã tồn tại
+ Cao độ
+ Cài đặt phát lại
+ Tốc độ phát lại
Thanh thông báo đang phát sẽ cho phép bạn phát/tạm dừng, chuyển bài, v.v.
Thông báo đang phát
- %s created successfully
+ %s đã tạo thành công
Danh sách phát trống
Tên danh sách phát
Danh sách phát
@@ -333,11 +333,11 @@ tiếp tục xảy ra hãy \"Xóa dữ liệu ứng dụng\"
Lưu ý rằng việc bật tính năng này có thể ảnh hưởng đến tuổi thọ pin
Giữ màn hình luôn bật
Chọn ngôn ngữ
- Snow fall effect
+ Hiệu ứng tuyết rơi
Sử dụng ảnh bìa album bài hát đang phát làm ảnh nền màn hình khóa.
Hiển thị Album Nghệ sĩ trong danh mục Nghệ sĩ
Giảm âm lượng khi có âm báo hệ thống hoặc khi bạn có thông báo
- Fade audio when song is paused or played
+ Làm mượt âm thanh khi tạm dừng hoặc phát bài hát
Nội dung của các thư mục trong danh sách đen được ẩn khỏi thư viện của bạn.
Tự động phát nhạc sau khi kết nối với thiết bị Bluetooth
Làm mờ ảnh bìa album trên màn hình khóa. Có thể gây ra sự cố với các ứng dụng và tiện ích của bên thứ ba
@@ -356,14 +356,14 @@ tiếp tục xảy ra hãy \"Xóa dữ liệu ứng dụng\"
Có thể tăng chất lượng hiển thị ảnh bìa album, nhưng sẽ làm thời gian tải hình ảnh chậm hơn. Chỉ bật tính năng này nếu bạn không thích chất lượng ảnh gốc
Khả năng hiển thị và thứ tự của các danh mục trong thư viện.
Sử dụng các điều khiển màn hình khóa tùy chỉnh của Retro Music
- Always play audio in background regardless of anything else being played
+ Luôn phát âm thanh trong nền bất kể các nguồn âm thanh đang phát khác
Chi tiết giấy phép của phần mềm mã nguồn mở
- When enabled, newly played songs won\'t show in history
+ Khi được bật, những bài hát mới phát sẽ không xuất hiện trong lịch sử
Điều hướng đến tab được sử dụng gần nhất lúc bắt đầu
- Display synced lyrics over album cover
- Show New Music Mix on homescreen
- Enables changing song by swiping anywhere on the now playing screen
- Swipe down to dismiss mini player
+ Hiển thị lời bài hát đã đồng bộ trên bìa album
+ Hiện bản phối nhạc mới trên trang chủ
+ Cho phép chuyển bài bằng cách vuốt ở bất kì đâu tại màn hình phát
+ Trượt xuống để ẩn trình phát nhỏ
Chế độ hoà nhập
Tự động phát nhạc khi kết nối tai nghe
Chế độ phát ngẫu nhiên sẽ tắt khi phát danh sách bài hát mới
@@ -387,7 +387,7 @@ tiếp tục xảy ra hãy \"Xóa dữ liệu ứng dụng\"
Màu sắc thích nghi
Đổi màu thông báo
Khoảng lặng (Beta)
- Use Manrope font
+ Sử dụng font chữ Manrope
Màu sắc tương thích
Hiển thị màn hình phát nhạc
Điều khiển bổ sung
@@ -402,13 +402,13 @@ tiếp tục xảy ra hãy \"Xóa dữ liệu ứng dụng\"
Điều khiển toàn màn hình.
Keep screen on when showing lyrics
Lyrics type
- Always play
+ Luôn luôn phát
Giao diện màn hình phát
Giấy phép nguồn mở
Pause history
Remember last tab
Show lyrics
- Show suggestions
+ Hiển thị đề xuất
Swipe anywhere to change song
Dismiss with swipe down
Chế độ tiêu đề thẻ
@@ -437,7 +437,7 @@ tiếp tục xảy ra hãy \"Xóa dữ liệu ứng dụng\"
Xoá bài hát khỏi danh sách phát
%1$d bài hát khỏi danh sách phát?]]>
Đổi tên danh sách phát
- Replace Cover
+ Thay thế Ảnh bìa Album
Báo cáo vấn đề
Báo cáo lỗi
Cài lại
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index ba2976d15a..e5dfcc0506 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -340,7 +340,8 @@
在媒体库中隐藏列入黑名单的文件夹内容。
连接到蓝牙设备后立即开始播放
模糊化显示锁屏上的专辑封面。可能与第三方应用或微件产生冲突。
- 在播放页使用轮播效果。在使用卡片和模糊卡片主题时无效 。
+ 在播放页为专辑图片使用轮播效果。
+使用时卡片和模糊卡片主题不会生效。
使用经典通知样式
背景及控件颜色跟随专辑封面变化
将快捷方式颜色更改为强调色,每次颜色更改后需要切换一下该设置才能生效
@@ -510,7 +511,7 @@
滑动以解锁
滚动歌词
Telegram
- 加入 Telegram 群组,讨论错误,提出建议,吹水聊天等等
+ 加入 Telegram 群组,讨论错误,提出建议,水群聊天等等
谢谢您!
音频文件
本月
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index fdbab5012b..af56e2b1d5 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -54,7 +54,7 @@
適應風
新增
"新增至播放清單"
- 新增同步歌詞
+ 新增動態歌詞
已新增 %1$d 首歌至 %2$s
"已新增 1 首歌至播放佇列。"
已新增 %1$d 首歌至播放佇列。
@@ -168,7 +168,7 @@
駕駛模式
編輯按鈕
編輯歌詞
- 編輯同步歌詞
+ 編輯動態歌詞
沒有內容
等化器
無法建立備份
@@ -255,7 +255,7 @@
名稱
最佳單曲
永不
- 歌曲快選
+ 新歌快選
新增播放清單
%s 為新起始目錄。
下一首
@@ -290,7 +290,7 @@
密碼
過去 3 個月
在此貼上歌詞
- 在此貼上同步歌詞
+ 在此貼上動態歌詞
懸浮風
鄰近裝置存取被拒。
無法取得存取外部儲存空間的權限。
@@ -359,8 +359,8 @@
開源軟體授權詳細資訊
啟用此選項後,新播放的歌曲將不再顯示於歷史記錄
開啟應用程式後,自動顯示最後瀏覽的畫面
- 於專輯封面上顯示同步歌詞
- 於主畫面顯示歌曲快選
+ 於專輯封面上顯示動態歌詞
+ 於主畫面顯示新歌快選
啟用於現正播放畫面,可隨意滑動以切換歌曲
向下滑動以關閉迷你播放器
沉浸模式
@@ -470,7 +470,7 @@
已儲存播放清單至 %s。
儲存變更
掃描媒體
- 已掃描 %2$d 個檔案夾中的 %1$d 個。
+ 已掃描 %1$d 個檔案,共 %2$d 個。
音樂記錄
選取全部
僅顯示已選取的標籤
@@ -508,7 +508,7 @@
建議
支持開發
滑動以解鎖
- 同步歌詞
+ 動態歌詞
Telegram
加入 Telegram 群組以討論臭蟲、提供建議、交流,以及探索更多
感謝您!
From 731f8d56e50ca37f03e57b8802ce6c44f3405d70 Mon Sep 17 00:00:00 2001
From: Prathamesh More
Date: Wed, 29 Mar 2023 21:26:14 +0530
Subject: [PATCH 23/28] Update dependencies
---
app/build.gradle | 8 ++++----
build.gradle | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index ed816d57c9..5eccf4ec28 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -112,7 +112,7 @@ dependencies {
implementation 'androidx.mediarouter:mediarouter:1.3.1'
//Cast Dependencies
- normalImplementation 'com.google.android.gms:play-services-cast-framework:21.2.0'
+ normalImplementation 'com.google.android.gms:play-services-cast-framework:21.3.0'
//WebServer by NanoHttpd
normalImplementation "org.nanohttpd:nanohttpd:2.3.1"
@@ -120,7 +120,7 @@ dependencies {
implementation "androidx.navigation:navigation-fragment-ktx:$navigation_version"
implementation "androidx.navigation:navigation-ui-ktx:$navigation_version"
- def room_version = '2.5.0'
+ def room_version = '2.5.1'
implementation "androidx.room:room-runtime:$room_version"
implementation "androidx.room:room-ktx:$room_version"
ksp "androidx.room:room-compiler:$room_version"
@@ -150,7 +150,7 @@ dependencies {
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4"
- def koin_version = '3.3.3'
+ def koin_version = '3.4.0'
implementation "io.insert-koin:koin-core:$koin_version"
implementation "io.insert-koin:koin-android:$koin_version"
@@ -176,5 +176,5 @@ dependencies {
implementation 'com.github.dhaval2404:imagepicker:2.1'
implementation 'me.zhanghai.android.fastscroll:library:1.2.0'
implementation 'cat.ereza:customactivityoncrash:2.4.0'
- implementation 'me.tankery.lib:circularSeekBar:1.4.1'
+ implementation 'me.tankery.lib:circularSeekBar:1.4.2'
}
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index dce7f9bf7a..057d587915 100644
--- a/build.gradle
+++ b/build.gradle
@@ -2,7 +2,7 @@
buildscript {
ext {
- lifecycle_version = '2.6.0'
+ lifecycle_version = '2.6.1'
navigation_version = '2.5.3'
mdc_version = '1.9.0-beta01'
preference_version = '1.2.0'
From d0b0a03bd93c5da0eb080f2fbaef76e1a4596222 Mon Sep 17 00:00:00 2001
From: Prathamesh More
Date: Wed, 29 Mar 2023 21:50:44 +0530
Subject: [PATCH 24/28] Update version and changelog
---
app/build.gradle | 4 ++--
app/src/main/assets/retro-changelog.html | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index 5eccf4ec28..9df28e38aa 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -15,8 +15,8 @@ android {
vectorDrawables.useSupportLibrary = true
applicationId namespace
- versionCode 10601
- versionName '6.0.5'
+ versionCode 10602
+ versionName '6.1.0'
buildConfigField("String", "GOOGLE_PLAY_LICENSING_KEY", "\"${getProperty(getProperties('../public.properties'), 'GOOGLE_PLAY_LICENSE_KEY')}\"")
}
diff --git a/app/src/main/assets/retro-changelog.html b/app/src/main/assets/retro-changelog.html
index 36f50a8c0c..bdd91af637 100644
--- a/app/src/main/assets/retro-changelog.html
+++ b/app/src/main/assets/retro-changelog.html
@@ -72,8 +72,8 @@ Looking for maintainers/contributors
-
March 19, 2023
-
v6.0.5
+
March 30, 2023
+
v6.1.0
What's New
- App now targets Android 13, support for Granular media permissions, Photo picker, Per-app language preferences & Predictive back gesture
From 2ea920019c6242cde8954d1ba2285e05f3fe14e7 Mon Sep 17 00:00:00 2001
From: Andrei M
Date: Sat, 1 Apr 2023 22:27:04 +0300
Subject: [PATCH 25/28] Add required parameter for seek method in CastPlayer
---
.../java/code/name/monkey/retromusic/service/CastPlayer.kt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/src/fdroid/java/code/name/monkey/retromusic/service/CastPlayer.kt b/app/src/fdroid/java/code/name/monkey/retromusic/service/CastPlayer.kt
index 3a0eaca286..2363bc1879 100644
--- a/app/src/fdroid/java/code/name/monkey/retromusic/service/CastPlayer.kt
+++ b/app/src/fdroid/java/code/name/monkey/retromusic/service/CastPlayer.kt
@@ -35,7 +35,7 @@ class CastPlayer : Playback {
override fun position() = 0
- override fun seek(whereto: Int) = whereto
+ override fun seek(whereto: Int, force: Boolean) = whereto
override fun setVolume(vol: Float) = true
From 025e908c22615ea591b1039cc509a6751b2c96e6 Mon Sep 17 00:00:00 2001
From: Andrei M
Date: Sat, 1 Apr 2023 23:18:15 +0300
Subject: [PATCH 26/28] Add Upsert to PlayCountDao
---
.../activities/base/AbsMusicServiceActivity.kt | 13 +++++--------
.../name/monkey/retromusic/db/PlayCountDao.kt | 13 ++++---------
.../monkey/retromusic/repository/Repository.kt | 16 ++++++----------
.../retromusic/repository/RoomRepository.kt | 16 ++++++----------
4 files changed, 21 insertions(+), 37 deletions(-)
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsMusicServiceActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsMusicServiceActivity.kt
index 86bf864618..1d9489bb8d 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsMusicServiceActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsMusicServiceActivity.kt
@@ -131,14 +131,11 @@ abstract class AbsMusicServiceActivity : AbsBaseActivity(), IMusicServiceEventLi
repository.addSongToHistory(MusicPlayerRemote.currentSong)
}
}
- val songs = repository.checkSongExistInPlayCount(MusicPlayerRemote.currentSong.id)
- if (songs.isNotEmpty()) {
- repository.updateSongInPlayCount(songs.first().apply {
- playCount += 1
- })
- } else {
- repository.insertSongInPlayCount(MusicPlayerRemote.currentSong.toPlayCount())
- }
+ val song = repository.findSongExistInPlayCount(MusicPlayerRemote.currentSong.id)
+ ?.apply { playCount += 1 }
+ ?: MusicPlayerRemote.currentSong.toPlayCount()
+
+ repository.upsertSongInPlayCount(song)
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/db/PlayCountDao.kt b/app/src/main/java/code/name/monkey/retromusic/db/PlayCountDao.kt
index 420b2d4348..087ae4faf3 100644
--- a/app/src/main/java/code/name/monkey/retromusic/db/PlayCountDao.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/db/PlayCountDao.kt
@@ -18,24 +18,19 @@ import androidx.room.*
@Dao
interface PlayCountDao {
- @Insert(onConflict = OnConflictStrategy.REPLACE)
- fun insertSongInPlayCount(playCountEntity: PlayCountEntity)
- @Update
- fun updateSongInPlayCount(playCountEntity: PlayCountEntity)
+ @Upsert
+ fun upsertSongInPlayCount(playCountEntity: PlayCountEntity)
@Delete
fun deleteSongInPlayCount(playCountEntity: PlayCountEntity)
- @Query("SELECT * FROM PlayCountEntity WHERE id =:songId")
- fun checkSongExistInPlayCount(songId: Long): List
+ @Query("SELECT * FROM PlayCountEntity WHERE id =:songId LIMIT 1")
+ fun findSongExistInPlayCount(songId: Long): PlayCountEntity?
@Query("SELECT * FROM PlayCountEntity ORDER BY play_count DESC")
fun playCountSongs(): List
@Query("DELETE FROM SongEntity WHERE id =:songId")
fun deleteSong(songId: Long)
-
- @Query("UPDATE PlayCountEntity SET play_count = play_count + 1 WHERE id = :id")
- fun updateQuantity(id: Long)
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/repository/Repository.kt b/app/src/main/java/code/name/monkey/retromusic/repository/Repository.kt
index 76f1fa53cb..d02b900b49 100644
--- a/app/src/main/java/code/name/monkey/retromusic/repository/Repository.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/repository/Repository.kt
@@ -84,12 +84,11 @@ interface Repository {
suspend fun favoritePlaylistSongs(): List
suspend fun recentSongs(): List
suspend fun topPlayedSongs(): List
- suspend fun insertSongInPlayCount(playCountEntity: PlayCountEntity)
- suspend fun updateSongInPlayCount(playCountEntity: PlayCountEntity)
+ suspend fun upsertSongInPlayCount(playCountEntity: PlayCountEntity)
suspend fun deleteSongInPlayCount(playCountEntity: PlayCountEntity)
suspend fun deleteSongInHistory(songId: Long)
suspend fun clearSongHistory()
- suspend fun checkSongExistInPlayCount(songId: Long): List
+ suspend fun findSongExistInPlayCount(songId: Long): PlayCountEntity?
suspend fun playCountSongs(): List
suspend fun deleteSongs(songs: List)
suspend fun contributor(): List
@@ -285,11 +284,8 @@ class RealRepository(
override suspend fun topPlayedSongs(): List = topPlayedRepository.topTracks()
- override suspend fun insertSongInPlayCount(playCountEntity: PlayCountEntity) =
- roomRepository.insertSongInPlayCount(playCountEntity)
-
- override suspend fun updateSongInPlayCount(playCountEntity: PlayCountEntity) =
- roomRepository.updateSongInPlayCount(playCountEntity)
+ override suspend fun upsertSongInPlayCount(playCountEntity: PlayCountEntity) =
+ roomRepository.upsertSongInPlayCount(playCountEntity)
override suspend fun deleteSongInPlayCount(playCountEntity: PlayCountEntity) =
roomRepository.deleteSongInPlayCount(playCountEntity)
@@ -301,8 +297,8 @@ class RealRepository(
roomRepository.clearSongHistory()
}
- override suspend fun checkSongExistInPlayCount(songId: Long): List =
- roomRepository.checkSongExistInPlayCount(songId)
+ override suspend fun findSongExistInPlayCount(songId: Long): PlayCountEntity? =
+ roomRepository.findSongExistInPlayCount(songId)
override suspend fun playCountSongs(): List =
roomRepository.playCountSongs()
diff --git a/app/src/main/java/code/name/monkey/retromusic/repository/RoomRepository.kt b/app/src/main/java/code/name/monkey/retromusic/repository/RoomRepository.kt
index a5231ccae5..04d1da4ba6 100644
--- a/app/src/main/java/code/name/monkey/retromusic/repository/RoomRepository.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/repository/RoomRepository.kt
@@ -34,12 +34,11 @@ interface RoomRepository {
suspend fun songPresentInHistory(song: Song): HistoryEntity?
suspend fun updateHistorySong(song: Song)
suspend fun favoritePlaylistSongs(favorite: String): List
- suspend fun insertSongInPlayCount(playCountEntity: PlayCountEntity)
- suspend fun updateSongInPlayCount(playCountEntity: PlayCountEntity)
+ suspend fun upsertSongInPlayCount(playCountEntity: PlayCountEntity)
suspend fun deleteSongInPlayCount(playCountEntity: PlayCountEntity)
suspend fun deleteSongInHistory(songId: Long)
suspend fun clearSongHistory()
- suspend fun checkSongExistInPlayCount(songId: Long): List
+ suspend fun findSongExistInPlayCount(songId: Long): PlayCountEntity?
suspend fun playCountSongs(): List
suspend fun deleteSongs(songs: List)
suspend fun isSongFavorite(context: Context, songId: Long): Boolean
@@ -155,11 +154,8 @@ class RealRoomRepository(
playlistDao.playlist(favorite).first().playListId
) else emptyList()
- override suspend fun insertSongInPlayCount(playCountEntity: PlayCountEntity) =
- playCountDao.insertSongInPlayCount(playCountEntity)
-
- override suspend fun updateSongInPlayCount(playCountEntity: PlayCountEntity) =
- playCountDao.updateSongInPlayCount(playCountEntity)
+ override suspend fun upsertSongInPlayCount(playCountEntity: PlayCountEntity) =
+ playCountDao.upsertSongInPlayCount(playCountEntity)
override suspend fun deleteSongInPlayCount(playCountEntity: PlayCountEntity) =
playCountDao.deleteSongInPlayCount(playCountEntity)
@@ -172,8 +168,8 @@ class RealRoomRepository(
historyDao.clearHistory()
}
- override suspend fun checkSongExistInPlayCount(songId: Long): List =
- playCountDao.checkSongExistInPlayCount(songId)
+ override suspend fun findSongExistInPlayCount(songId: Long): PlayCountEntity? =
+ playCountDao.findSongExistInPlayCount(songId)
override suspend fun playCountSongs(): List =
playCountDao.playCountSongs()
From e27b7b07fef6b882765eabb86ca32cd79e1db247 Mon Sep 17 00:00:00 2001
From: Andrei M
Date: Sat, 1 Apr 2023 23:35:45 +0300
Subject: [PATCH 27/28] Add Upsert to HistoryDao
---
.../activities/base/AbsMusicServiceActivity.kt | 10 ++--------
.../code/name/monkey/retromusic/db/HistoryDao.kt | 9 ++-------
.../retromusic/fragments/LibraryViewModel.kt | 2 +-
.../monkey/retromusic/repository/Repository.kt | 14 +++-----------
.../monkey/retromusic/repository/RoomRepository.kt | 14 +++-----------
5 files changed, 11 insertions(+), 38 deletions(-)
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsMusicServiceActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsMusicServiceActivity.kt
index 1d9489bb8d..f9f05c9196 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsMusicServiceActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsMusicServiceActivity.kt
@@ -122,14 +122,8 @@ abstract class AbsMusicServiceActivity : AbsBaseActivity(), IMusicServiceEventLi
listener.onPlayingMetaChanged()
}
lifecycleScope.launch(Dispatchers.IO) {
- val entity = repository.songPresentInHistory(MusicPlayerRemote.currentSong)
- if (entity != null) {
- repository.updateHistorySong(MusicPlayerRemote.currentSong)
- } else {
- // Check whether pause history option is ON or OFF
- if (!PreferenceUtil.pauseHistory) {
- repository.addSongToHistory(MusicPlayerRemote.currentSong)
- }
+ if (!PreferenceUtil.pauseHistory) {
+ repository.upsertSongInHistory(MusicPlayerRemote.currentSong)
}
val song = repository.findSongExistInPlayCount(MusicPlayerRemote.currentSong.id)
?.apply { playCount += 1 }
diff --git a/app/src/main/java/code/name/monkey/retromusic/db/HistoryDao.kt b/app/src/main/java/code/name/monkey/retromusic/db/HistoryDao.kt
index c8b2e31650..2ceb309dbd 100644
--- a/app/src/main/java/code/name/monkey/retromusic/db/HistoryDao.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/db/HistoryDao.kt
@@ -23,16 +23,11 @@ interface HistoryDao {
private const val HISTORY_LIMIT = 100
}
- @Insert(onConflict = OnConflictStrategy.REPLACE)
- suspend fun insertSongInHistory(historyEntity: HistoryEntity)
+ @Upsert
+ suspend fun upsertSongInHistory(historyEntity: HistoryEntity)
@Query("DELETE FROM HistoryEntity WHERE id= :songId")
fun deleteSongInHistory(songId: Long)
- @Query("SELECT * FROM HistoryEntity WHERE id = :songId LIMIT 1")
- suspend fun isSongPresentInHistory(songId: Long): HistoryEntity?
-
- @Update
- suspend fun updateHistorySong(historyEntity: HistoryEntity)
@Query("SELECT * FROM HistoryEntity ORDER BY time_played DESC LIMIT $HISTORY_LIMIT")
fun historySongs(): List
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt
index ec7ab57b14..696efcabe3 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt
@@ -311,7 +311,7 @@ class LibraryViewModel(
if (previousSongHistory.isNotEmpty()) {
val history = ArrayList()
for (song in previousSongHistory) {
- repository.addSongToHistory(song.toSong())
+ repository.upsertSongInHistory(song.toSong())
history.add(song.toSong())
}
songHistory.postValue(history)
diff --git a/app/src/main/java/code/name/monkey/retromusic/repository/Repository.kt b/app/src/main/java/code/name/monkey/retromusic/repository/Repository.kt
index d02b900b49..11857bcc80 100644
--- a/app/src/main/java/code/name/monkey/retromusic/repository/Repository.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/repository/Repository.kt
@@ -78,9 +78,7 @@ interface Repository {
suspend fun deletePlaylistSongs(playlists: List)
suspend fun favoritePlaylist(): PlaylistEntity
suspend fun isFavoriteSong(songEntity: SongEntity): List
- suspend fun addSongToHistory(currentSong: Song)
- suspend fun songPresentInHistory(currentSong: Song): HistoryEntity?
- suspend fun updateHistorySong(currentSong: Song)
+ suspend fun upsertSongInHistory(currentSong: Song)
suspend fun favoritePlaylistSongs(): List
suspend fun recentSongs(): List
suspend fun topPlayedSongs(): List
@@ -268,14 +266,8 @@ class RealRepository(
override suspend fun isFavoriteSong(songEntity: SongEntity): List =
roomRepository.isFavoriteSong(songEntity)
- override suspend fun addSongToHistory(currentSong: Song) =
- roomRepository.addSongToHistory(currentSong)
-
- override suspend fun songPresentInHistory(currentSong: Song): HistoryEntity? =
- roomRepository.songPresentInHistory(currentSong)
-
- override suspend fun updateHistorySong(currentSong: Song) =
- roomRepository.updateHistorySong(currentSong)
+ override suspend fun upsertSongInHistory(currentSong: Song) =
+ roomRepository.upsertSongInHistory(currentSong)
override suspend fun favoritePlaylistSongs(): List =
roomRepository.favoritePlaylistSongs(context.getString(R.string.favorites))
diff --git a/app/src/main/java/code/name/monkey/retromusic/repository/RoomRepository.kt b/app/src/main/java/code/name/monkey/retromusic/repository/RoomRepository.kt
index 04d1da4ba6..38edf8386e 100644
--- a/app/src/main/java/code/name/monkey/retromusic/repository/RoomRepository.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/repository/RoomRepository.kt
@@ -30,9 +30,7 @@ interface RoomRepository {
suspend fun favoritePlaylist(favorite: String): PlaylistEntity
suspend fun isFavoriteSong(songEntity: SongEntity): List
suspend fun removeSongFromPlaylist(songEntity: SongEntity)
- suspend fun addSongToHistory(currentSong: Song)
- suspend fun songPresentInHistory(song: Song): HistoryEntity?
- suspend fun updateHistorySong(song: Song)
+ suspend fun upsertSongInHistory(currentSong: Song)
suspend fun favoritePlaylistSongs(favorite: String): List
suspend fun upsertSongInPlayCount(playCountEntity: PlayCountEntity)
suspend fun deleteSongInPlayCount(playCountEntity: PlayCountEntity)
@@ -132,14 +130,8 @@ class RealRoomRepository(
override suspend fun removeSongFromPlaylist(songEntity: SongEntity) =
playlistDao.deleteSongFromPlaylist(songEntity.playlistCreatorId, songEntity.id)
- override suspend fun addSongToHistory(currentSong: Song) =
- historyDao.insertSongInHistory(currentSong.toHistoryEntity(System.currentTimeMillis()))
-
- override suspend fun songPresentInHistory(song: Song): HistoryEntity? =
- historyDao.isSongPresentInHistory(song.id)
-
- override suspend fun updateHistorySong(song: Song) =
- historyDao.updateHistorySong(song.toHistoryEntity(System.currentTimeMillis()))
+ override suspend fun upsertSongInHistory(currentSong: Song) =
+ historyDao.upsertSongInHistory(currentSong.toHistoryEntity(System.currentTimeMillis()))
override fun observableHistorySongs(): LiveData> =
historyDao.observableHistorySongs()
From feb89bb51a6e456004d6a0ba5b8f3a6c0779b64d Mon Sep 17 00:00:00 2001
From: Prathamesh More
Date: Sun, 2 Apr 2023 10:10:27 +0530
Subject: [PATCH 28/28] Bump versionCode
---
app/build.gradle | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/build.gradle b/app/build.gradle
index 9df28e38aa..d476684caf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -15,7 +15,7 @@ android {
vectorDrawables.useSupportLibrary = true
applicationId namespace
- versionCode 10602
+ versionCode 10603
versionName '6.1.0'
buildConfigField("String", "GOOGLE_PLAY_LICENSING_KEY", "\"${getProperty(getProperties('../public.properties'), 'GOOGLE_PLAY_LICENSE_KEY')}\"")