diff --git a/CHANGELOG.md b/CHANGELOG.md index 659f7d6c5..2a9aeb40a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,28 @@ # Changelog +## 4.0.3 + +#### What's Improved +- Improved music loader pipeline efficiency +- Made cover.png support more flexible +- Albums with the same name but different album artists are now split +if fully tagged with album artists + +#### What's Fixed +- Possibly fixed cache failures on large libraries +- Possibly fixed playback state saving failing on some devices +- Fixed issue where artists w/o songs would not have a cover +- Fixed music not being reloaded when music locations changed +- Fixed tasker media control not working +- Fixed tasker playback start command never finishing + +#### Dev/Meta +- Removed useless storage permissions +- Internal cleanup/simplification of musikr API +- Removed unused resources + +#### What's Fixed + ## 4.0.2 #### What's New diff --git a/README.md b/README.md index f74c258cf..2b8abee38 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@

Auxio

A simple, rational music player for android.

- - Latest Version + + Latest Version Releases @@ -15,7 +15,12 @@

Changelog | Wiki | Donate

- + + + Get it on Accrescent + +

+

Translation status

@@ -65,7 +70,7 @@ precise/original dates, sort tags, and more - Storage (`READ_MEDIA_AUDIO`, `READ_EXTERNAL_STORAGE`) to read and play your music files - Services (`FOREGROUND_SERVICE`, `WAKE_LOCK`) to keep the music playing in the background -- Notifcations (`POST_NOTIFICATION`) to indicate ongoing playback and music loading +- Notifications (`POST_NOTIFICATION`) to indicate ongoing playback and music loading ## Donate diff --git a/app/build.gradle b/app/build.gradle index d444f70c9..458c17774 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,8 +18,8 @@ android { defaultConfig { applicationId namespace - versionName "4.0.2" - versionCode 61 + versionName "4.0.3" + versionCode 62 minSdk min_sdk targetSdk target_sdk diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2d0499edd..ecdfc44e2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,9 +2,6 @@ - - - diff --git a/app/src/main/java/com/google/android/material/bottomsheet/BackportBottomSheetBehavior.java b/app/src/main/java/com/google/android/material/bottomsheet/BackportBottomSheetBehavior.java index 50ef29e94..c8c5ead47 100644 --- a/app/src/main/java/com/google/android/material/bottomsheet/BackportBottomSheetBehavior.java +++ b/app/src/main/java/com/google/android/material/bottomsheet/BackportBottomSheetBehavior.java @@ -1309,7 +1309,6 @@ public class BackportBottomSheetBehavior extends CoordinatorLayo + " should not be set externally."); } if (!hideable && state == STATE_HIDDEN) { - Log.w(TAG, "Cannot set state: " + state); return; } final int finalState; diff --git a/app/src/main/java/org/oxycblt/auxio/AuxioService.kt b/app/src/main/java/org/oxycblt/auxio/AuxioService.kt index 0b092a468..bb2d7b1af 100644 --- a/app/src/main/java/org/oxycblt/auxio/AuxioService.kt +++ b/app/src/main/java/org/oxycblt/auxio/AuxioService.kt @@ -76,9 +76,8 @@ class AuxioService : } private fun onHandleForeground(intent: Intent?) { - val startId = intent?.getIntExtra(INTENT_KEY_START_ID, -1) ?: -1 musicFragment.start() - playbackFragment.start(startId) + playbackFragment.start(intent) } override fun onTaskRemoved(rootIntent: Intent?) { @@ -142,6 +141,7 @@ class AuxioService : } // Nothing changed, but don't show anything music related since we can always // index during playback. + isForeground = true } else { musicFragment.createNotification { if (it != null) { diff --git a/app/src/main/java/org/oxycblt/auxio/IntegerTable.kt b/app/src/main/java/org/oxycblt/auxio/IntegerTable.kt index 55907bb0d..6ea713010 100644 --- a/app/src/main/java/org/oxycblt/auxio/IntegerTable.kt +++ b/app/src/main/java/org/oxycblt/auxio/IntegerTable.kt @@ -65,6 +65,8 @@ object IntegerTable { const val START_ID_ACTIVITY = 0xA050 /** Tasker AuxioService Start ID */ const val START_ID_TASKER = 0xA051 + /** MediaButtonReceiver AuxioService Start ID */ + const val START_ID_MEDIA_BUTTON = 0xA052 /** RepeatMode.NONE */ const val REPEAT_MODE_NONE = 0xA100 /** RepeatMode.ALL */ diff --git a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt index 911cd4db2..10342f1d1 100644 --- a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt @@ -18,7 +18,6 @@ package org.oxycblt.auxio -import android.animation.ValueAnimator import android.os.Bundle import android.view.LayoutInflater import android.view.ViewTreeObserver @@ -514,8 +513,6 @@ class MainFragment : } } - private var scrimAnimator: ValueAnimator? = null - private fun updateSpeedDial(open: Boolean) { requireNotNull(speedDialBackCallback) { "SpeedDialBackPressedCallback was not available" } .invalidateEnabled(open) diff --git a/app/src/main/java/org/oxycblt/auxio/detail/decision/DetailDecisionViewModel.kt b/app/src/main/java/org/oxycblt/auxio/detail/decision/DetailDecisionViewModel.kt index d57d18042..b3286983c 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/decision/DetailDecisionViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/decision/DetailDecisionViewModel.kt @@ -98,7 +98,7 @@ sealed interface ArtistShowChoices { val uid: Music.UID /** The current [Artist] choices. */ val choices: List - /** Sanitize this instance with a [DeviceLibrary]. */ + /** Sanitize this instance with a [Library]. */ fun sanitize(newLibrary: Library): ArtistShowChoices? /** Backing implementation of [ArtistShowChoices] that is based on a [Song]. */ diff --git a/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt index a2a2495b8..adc2ea512 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt @@ -37,12 +37,10 @@ import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.adapter.FragmentStateAdapter import androidx.viewpager2.widget.ViewPager2 import com.google.android.material.appbar.AppBarLayout -import com.google.android.material.floatingactionbutton.FloatingActionButton import com.google.android.material.tabs.TabLayoutMediator import com.google.android.material.transition.MaterialSharedAxis import dagger.hilt.android.AndroidEntryPoint import java.lang.reflect.Field -import java.lang.reflect.Method import kotlin.math.abs import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.FragmentHomeBinding @@ -68,7 +66,6 @@ import org.oxycblt.auxio.playback.PlaybackViewModel import org.oxycblt.auxio.util.collect import org.oxycblt.auxio.util.collectImmediately import org.oxycblt.auxio.util.lazyReflectedField -import org.oxycblt.auxio.util.lazyReflectedMethod import org.oxycblt.auxio.util.navigateSafe import org.oxycblt.auxio.util.showToast import org.oxycblt.musikr.IndexingProgress @@ -94,7 +91,6 @@ class HomeFragment : private var storagePermissionLauncher: ActivityResultLauncher? = null private var getContentLauncher: ActivityResultLauncher? = null private var pendingImportTarget: Playlist? = null - private var lastUpdateTime = -1L override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -512,11 +508,5 @@ class HomeFragment : private companion object { val VP_RECYCLER_FIELD: Field by lazyReflectedField(ViewPager2::class, "mRecyclerView") val RV_TOUCH_SLOP_FIELD: Field by lazyReflectedField(RecyclerView::class, "mTouchSlop") - val FAB_HIDE_FROM_USER_FIELD: Method by - lazyReflectedMethod( - FloatingActionButton::class, - "hide", - FloatingActionButton.OnVisibilityChangedListener::class, - Boolean::class) } } diff --git a/app/src/main/java/org/oxycblt/auxio/image/CoverProvider.kt b/app/src/main/java/org/oxycblt/auxio/image/CoverProvider.kt index 5c5bd78d3..286d820a7 100644 --- a/app/src/main/java/org/oxycblt/auxio/image/CoverProvider.kt +++ b/app/src/main/java/org/oxycblt/auxio/image/CoverProvider.kt @@ -28,9 +28,9 @@ import android.os.ParcelFileDescriptor import kotlinx.coroutines.runBlocking import org.oxycblt.auxio.BuildConfig import org.oxycblt.auxio.image.covers.SettingCovers -import org.oxycblt.musikr.cover.CoverResult +import org.oxycblt.musikr.covers.CoverResult -class CoverProvider() : ContentProvider() { +class CoverProvider : ContentProvider() { override fun onCreate(): Boolean = true override fun openFile(uri: Uri, mode: String): ParcelFileDescriptor? { diff --git a/app/src/main/java/org/oxycblt/auxio/image/CoverView.kt b/app/src/main/java/org/oxycblt/auxio/image/CoverView.kt index 03f731618..53362e0c1 100644 --- a/app/src/main/java/org/oxycblt/auxio/image/CoverView.kt +++ b/app/src/main/java/org/oxycblt/auxio/image/CoverView.kt @@ -37,6 +37,7 @@ import androidx.annotation.DrawableRes import androidx.annotation.Px import androidx.core.graphics.drawable.DrawableCompat import androidx.core.view.children +import androidx.core.view.isEmpty import androidx.core.view.updateMarginsRelative import androidx.core.widget.ImageViewCompat import coil3.ImageLoader @@ -64,7 +65,7 @@ import org.oxycblt.musikr.Artist import org.oxycblt.musikr.Genre import org.oxycblt.musikr.Playlist import org.oxycblt.musikr.Song -import org.oxycblt.musikr.cover.CoverCollection +import org.oxycblt.musikr.covers.CoverCollection /** * Auxio's extension of [ImageView] that enables cover art loading and playing indicator and @@ -172,7 +173,7 @@ constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr super.onFinishInflate() // The image isn't added if other children have populated the body. This is by design. - if (childCount == 0) { + if (isEmpty()) { addView(image) } diff --git a/app/src/main/java/org/oxycblt/auxio/image/coil/CoverCollectionFetcher.kt b/app/src/main/java/org/oxycblt/auxio/image/coil/CoverCollectionFetcher.kt index 147721fbb..286e59a93 100644 --- a/app/src/main/java/org/oxycblt/auxio/image/coil/CoverCollectionFetcher.kt +++ b/app/src/main/java/org/oxycblt/auxio/image/coil/CoverCollectionFetcher.kt @@ -19,9 +19,9 @@ package org.oxycblt.auxio.image.coil import android.content.Context -import android.graphics.Bitmap import android.graphics.BitmapFactory import android.graphics.Canvas +import androidx.core.graphics.createBitmap import androidx.core.graphics.drawable.toDrawable import coil3.ImageLoader import coil3.asImage @@ -46,7 +46,7 @@ import kotlinx.coroutines.withContext import okio.FileSystem import okio.buffer import okio.source -import org.oxycblt.musikr.cover.CoverCollection +import org.oxycblt.musikr.covers.CoverCollection class CoverCollectionFetcher private constructor( @@ -90,8 +90,7 @@ private constructor( val mosaicFrameSize = Size(Dimension(mosaicSize.width / 2), Dimension(mosaicSize.height / 2)) - val mosaicBitmap = - Bitmap.createBitmap(mosaicSize.width, mosaicSize.height, Bitmap.Config.ARGB_8888) + val mosaicBitmap = createBitmap(mosaicSize.width, mosaicSize.height) val canvas = Canvas(mosaicBitmap) var x = 0 diff --git a/app/src/main/java/org/oxycblt/auxio/image/coil/CoverFetcher.kt b/app/src/main/java/org/oxycblt/auxio/image/coil/CoverFetcher.kt index 29bbb430b..bc6284ee5 100644 --- a/app/src/main/java/org/oxycblt/auxio/image/coil/CoverFetcher.kt +++ b/app/src/main/java/org/oxycblt/auxio/image/coil/CoverFetcher.kt @@ -18,32 +18,20 @@ package org.oxycblt.auxio.image.coil -import android.content.Context -import android.graphics.Bitmap -import android.graphics.BitmapFactory -import android.graphics.Canvas -import androidx.core.graphics.drawable.toDrawable import coil3.ImageLoader -import coil3.asImage import coil3.decode.DataSource import coil3.decode.ImageSource import coil3.fetch.FetchResult import coil3.fetch.Fetcher -import coil3.fetch.ImageFetchResult import coil3.fetch.SourceFetchResult import coil3.request.Options -import coil3.size.Dimension -import coil3.size.Size -import coil3.size.pxOrElse -import java.io.InputStream import javax.inject.Inject import okio.FileSystem import okio.buffer import okio.source -import org.oxycblt.musikr.cover.Cover +import org.oxycblt.musikr.covers.Cover -class CoverFetcher private constructor(private val context: Context, private val cover: Cover) : - Fetcher { +class CoverFetcher private constructor(private val cover: Cover) : Fetcher { override suspend fun fetch(): FetchResult? { val stream = cover.open() ?: return null return SourceFetchResult( @@ -52,59 +40,8 @@ class CoverFetcher private constructor(private val context: Context, private val dataSource = DataSource.DISK) } - /** Derived from phonograph: https://github.com/kabouzeid/Phonograph */ - private suspend fun createMosaic(streams: List, size: Size): FetchResult { - // Use whatever size coil gives us to create the mosaic. - val mosaicSize = android.util.Size(size.width.mosaicSize(), size.height.mosaicSize()) - val mosaicFrameSize = - Size(Dimension(mosaicSize.width / 2), Dimension(mosaicSize.height / 2)) - - val mosaicBitmap = - Bitmap.createBitmap(mosaicSize.width, mosaicSize.height, Bitmap.Config.ARGB_8888) - val canvas = Canvas(mosaicBitmap) - - var x = 0 - var y = 0 - - // For each stream, create a bitmap scaled to 1/4th of the mosaics combined size - // and place it on a corner of the canvas. - for (stream in streams) { - if (y == mosaicSize.height) { - break - } - - // Crop the bitmap down to a square so it leaves no empty space - // TODO: Work around this - val bitmap = - SquareCropTransformation.INSTANCE.transform( - BitmapFactory.decodeStream(stream), mosaicFrameSize) - canvas.drawBitmap(bitmap, x.toFloat(), y.toFloat(), null) - - x += bitmap.width - if (x == mosaicSize.width) { - x = 0 - y += bitmap.height - } - } - - // It's way easier to map this into a drawable then try to serialize it into an - // BufferedSource. Just make sure we mark it as "sampled" so Coil doesn't try to - // load low-res mosaics into high-res ImageViews. - return ImageFetchResult( - image = mosaicBitmap.toDrawable(context.resources).asImage(), - isSampled = true, - dataSource = DataSource.DISK) - } - - private fun Dimension.mosaicSize(): Int { - // Since we want the mosaic to be perfectly divisible into two, we need to round any - // odd image sizes upwards to prevent the mosaic creation from failing. - val size = pxOrElse { 512 } - return if (size.mod(2) > 0) size + 1 else size - } - class Factory @Inject constructor() : Fetcher.Factory { override fun create(data: Cover, options: Options, imageLoader: ImageLoader) = - CoverFetcher(options.context, data) + CoverFetcher(data) } } diff --git a/app/src/main/java/org/oxycblt/auxio/image/coil/Keyers.kt b/app/src/main/java/org/oxycblt/auxio/image/coil/Keyers.kt index 614b1bdf1..cd90be0f8 100644 --- a/app/src/main/java/org/oxycblt/auxio/image/coil/Keyers.kt +++ b/app/src/main/java/org/oxycblt/auxio/image/coil/Keyers.kt @@ -21,8 +21,8 @@ package org.oxycblt.auxio.image.coil import coil3.key.Keyer import coil3.request.Options import javax.inject.Inject -import org.oxycblt.musikr.cover.Cover -import org.oxycblt.musikr.cover.CoverCollection +import org.oxycblt.musikr.covers.Cover +import org.oxycblt.musikr.covers.CoverCollection class CoverKeyer @Inject constructor() : Keyer { override fun key(data: Cover, options: Options) = "${data.id}&${options.size}" diff --git a/app/src/main/java/org/oxycblt/auxio/image/coil/RoundedRectTransformation.kt b/app/src/main/java/org/oxycblt/auxio/image/coil/RoundedRectTransformation.kt index 214797ed3..6220f3bd7 100644 --- a/app/src/main/java/org/oxycblt/auxio/image/coil/RoundedRectTransformation.kt +++ b/app/src/main/java/org/oxycblt/auxio/image/coil/RoundedRectTransformation.kt @@ -38,8 +38,8 @@ import coil3.transform.Transformation import kotlin.math.roundToInt /** - * A vendoring of [coil.transform.RoundedCornersTransformation] that can handle non-1:1 aspect ratio - * images without cropping them. + * A vendoring of coil's RoundedCornersTransformation that can handle non-1:1 aspect ratio images + * without cropping them. * * @author Coil Team, Alexander Capehart (OxygenCobalt) */ diff --git a/app/src/main/java/org/oxycblt/auxio/image/coil/SquareCropTransformation.kt b/app/src/main/java/org/oxycblt/auxio/image/coil/SquareCropTransformation.kt index a7c780c92..cb06caffa 100644 --- a/app/src/main/java/org/oxycblt/auxio/image/coil/SquareCropTransformation.kt +++ b/app/src/main/java/org/oxycblt/auxio/image/coil/SquareCropTransformation.kt @@ -19,6 +19,7 @@ package org.oxycblt.auxio.image.coil import android.graphics.Bitmap +import androidx.core.graphics.scale import coil3.size.Size import coil3.size.pxOrElse import coil3.transform.Transformation @@ -46,7 +47,7 @@ class SquareCropTransformation : Transformation() { val desiredHeight = size.height.pxOrElse { dstSize } if (dstSize != desiredWidth || dstSize != desiredHeight) { // Image is not the desired size, upscale it. - return Bitmap.createScaledBitmap(dst, desiredWidth, desiredHeight, true) + return dst.scale(desiredWidth, desiredHeight) } return dst } diff --git a/app/src/main/java/org/oxycblt/auxio/image/covers/CoverSilo.kt b/app/src/main/java/org/oxycblt/auxio/image/covers/CoverSilo.kt deleted file mode 100644 index 50ffa61d2..000000000 --- a/app/src/main/java/org/oxycblt/auxio/image/covers/CoverSilo.kt +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2024 Auxio Project - * CoverSilo.kt is part of Auxio. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package org.oxycblt.auxio.image.covers - -import java.util.UUID -import org.oxycblt.musikr.cover.CoverParams - -data class CoverSilo(val revision: UUID, val params: CoverParams?) { - override fun toString() = - "${revision}${params?.let { ".${params.resolution}.${params.quality}" } ?: "" }" - - companion object { - fun parse(silo: String): CoverSilo? { - val parts = silo.split('.') - if (parts.size != 1 && parts.size != 3) { - return null - } - val revision = parts[0].toUuidOrNull() ?: return null - if (parts.size > 1) { - val resolution = parts[1].toIntOrNull() ?: return null - val quality = parts[2].toIntOrNull() ?: return null - return CoverSilo(revision, CoverParams.of(resolution, quality)) - } - return CoverSilo(revision, null) - } - } -} - -private fun String.toUuidOrNull(): UUID? = - try { - UUID.fromString(this) - } catch (e: IllegalArgumentException) { - null - } diff --git a/app/src/main/java/org/oxycblt/auxio/image/covers/CoverModule.kt b/app/src/main/java/org/oxycblt/auxio/image/covers/CoversModule.kt similarity index 69% rename from app/src/main/java/org/oxycblt/auxio/image/covers/CoverModule.kt rename to app/src/main/java/org/oxycblt/auxio/image/covers/CoversModule.kt index 48f5d1052..96a08f6db 100644 --- a/app/src/main/java/org/oxycblt/auxio/image/covers/CoverModule.kt +++ b/app/src/main/java/org/oxycblt/auxio/image/covers/CoversModule.kt @@ -1,6 +1,6 @@ /* - * Copyright (c) 2024 Auxio Project - * CoverModule.kt is part of Auxio. + * Copyright (c) 2023 Auxio Project + * CoversModule.kt is part of Auxio. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,19 +20,11 @@ package org.oxycblt.auxio.image.covers import dagger.Binds import dagger.Module -import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent -import org.oxycblt.musikr.cover.CoverIdentifier @Module @InstallIn(SingletonComponent::class) -interface CoverModule { - @Binds fun configCovers(impl: SettingCoversImpl): SettingCovers -} - -@Module -@InstallIn(SingletonComponent::class) -class CoverProvidesModule { - @Provides fun identifier(): CoverIdentifier = CoverIdentifier.md5() +interface CoilModule { + @Binds fun settingCovers(imageSettings: SettingCoversImpl): SettingCovers } diff --git a/app/src/main/java/org/oxycblt/auxio/image/covers/NullCovers.kt b/app/src/main/java/org/oxycblt/auxio/image/covers/NullCovers.kt index cffa626d1..df39b5981 100644 --- a/app/src/main/java/org/oxycblt/auxio/image/covers/NullCovers.kt +++ b/app/src/main/java/org/oxycblt/auxio/image/covers/NullCovers.kt @@ -18,20 +18,20 @@ package org.oxycblt.auxio.image.covers -import android.content.Context -import org.oxycblt.musikr.cover.Cover -import org.oxycblt.musikr.cover.CoverResult -import org.oxycblt.musikr.cover.MutableCovers +import org.oxycblt.musikr.covers.Cover +import org.oxycblt.musikr.covers.CoverResult +import org.oxycblt.musikr.covers.MutableCovers +import org.oxycblt.musikr.covers.stored.CoverStorage import org.oxycblt.musikr.fs.device.DeviceFile import org.oxycblt.musikr.metadata.Metadata -class NullCovers(private val context: Context) : MutableCovers { +class NullCovers(private val storage: CoverStorage) : MutableCovers { override suspend fun obtain(id: String) = CoverResult.Hit(NullCover) override suspend fun create(file: DeviceFile, metadata: Metadata) = CoverResult.Hit(NullCover) override suspend fun cleanup(excluding: Collection) { - context.coversDir().listFiles()?.forEach { it.deleteRecursively() } + storage.ls(setOf()).map { storage.rm(it) } } } diff --git a/app/src/main/java/org/oxycblt/auxio/image/covers/CoverUtil.kt b/app/src/main/java/org/oxycblt/auxio/image/covers/RevisionedTranscoding.kt similarity index 69% rename from app/src/main/java/org/oxycblt/auxio/image/covers/CoverUtil.kt rename to app/src/main/java/org/oxycblt/auxio/image/covers/RevisionedTranscoding.kt index 67058e8b6..95980c42d 100644 --- a/app/src/main/java/org/oxycblt/auxio/image/covers/CoverUtil.kt +++ b/app/src/main/java/org/oxycblt/auxio/image/covers/RevisionedTranscoding.kt @@ -1,6 +1,6 @@ /* - * Copyright (c) 2024 Auxio Project - * CoverUtil.kt is part of Auxio. + * Copyright (c) 2025 Auxio Project + * RevisionedTranscoding.kt is part of Auxio. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,9 +18,9 @@ package org.oxycblt.auxio.image.covers -import android.content.Context -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.withContext +import java.util.UUID +import org.oxycblt.musikr.covers.stored.Transcoding -suspend fun Context.coversDir() = - withContext(Dispatchers.IO) { filesDir.resolve("covers").apply { mkdirs() } } +class RevisionedTranscoding(revision: UUID, private val inner: Transcoding) : Transcoding by inner { + override val tag = "_$revision${inner.tag}" +} diff --git a/app/src/main/java/org/oxycblt/auxio/image/covers/SettingCovers.kt b/app/src/main/java/org/oxycblt/auxio/image/covers/SettingCovers.kt index e00cfdc2f..9f1d244cb 100644 --- a/app/src/main/java/org/oxycblt/auxio/image/covers/SettingCovers.kt +++ b/app/src/main/java/org/oxycblt/auxio/image/covers/SettingCovers.kt @@ -19,43 +19,55 @@ package org.oxycblt.auxio.image.covers import android.content.Context +import android.graphics.Bitmap import java.util.UUID import javax.inject.Inject import org.oxycblt.auxio.image.CoverMode import org.oxycblt.auxio.image.ImageSettings -import org.oxycblt.musikr.cover.Cover -import org.oxycblt.musikr.cover.CoverIdentifier -import org.oxycblt.musikr.cover.CoverParams -import org.oxycblt.musikr.cover.Covers -import org.oxycblt.musikr.cover.FileCover -import org.oxycblt.musikr.cover.FolderCovers -import org.oxycblt.musikr.cover.MutableCovers -import org.oxycblt.musikr.cover.MutableFolderCovers +import org.oxycblt.musikr.covers.Cover +import org.oxycblt.musikr.covers.Covers +import org.oxycblt.musikr.covers.FDCover +import org.oxycblt.musikr.covers.MutableCovers +import org.oxycblt.musikr.covers.chained.ChainedCovers +import org.oxycblt.musikr.covers.chained.MutableChainedCovers +import org.oxycblt.musikr.covers.embedded.CoverIdentifier +import org.oxycblt.musikr.covers.embedded.EmbeddedCovers +import org.oxycblt.musikr.covers.fs.FSCovers +import org.oxycblt.musikr.covers.fs.MutableFSCovers +import org.oxycblt.musikr.covers.stored.Compress +import org.oxycblt.musikr.covers.stored.CoverStorage +import org.oxycblt.musikr.covers.stored.MutableStoredCovers +import org.oxycblt.musikr.covers.stored.NoTranscoding +import org.oxycblt.musikr.covers.stored.StoredCovers interface SettingCovers { suspend fun mutate(context: Context, revision: UUID): MutableCovers companion object { - fun immutable(context: Context): Covers = - Covers.chain(BaseSiloedCovers(context), FolderCovers(context)) + suspend fun immutable(context: Context): Covers = + ChainedCovers(StoredCovers(CoverStorage.at(context.coversDir())), FSCovers(context)) } } -class SettingCoversImpl -@Inject -constructor(private val imageSettings: ImageSettings, private val identifier: CoverIdentifier) : +class SettingCoversImpl @Inject constructor(private val imageSettings: ImageSettings) : SettingCovers { - override suspend fun mutate(context: Context, revision: UUID): MutableCovers = - when (imageSettings.coverMode) { - CoverMode.OFF -> NullCovers(context) - CoverMode.SAVE_SPACE -> siloedCovers(context, revision, CoverParams.of(500, 70)) - CoverMode.BALANCED -> siloedCovers(context, revision, CoverParams.of(750, 85)) - CoverMode.HIGH_QUALITY -> siloedCovers(context, revision, CoverParams.of(1000, 100)) - CoverMode.AS_IS -> siloedCovers(context, revision, null) - } - - private suspend fun siloedCovers(context: Context, revision: UUID, with: CoverParams?) = - MutableCovers.chain( - MutableSiloedCovers.from(context, CoverSilo(revision, with), identifier), - MutableFolderCovers(context)) + override suspend fun mutate(context: Context, revision: UUID): MutableCovers { + val coverStorage = CoverStorage.at(context.coversDir()) + val transcoding = + when (imageSettings.coverMode) { + CoverMode.OFF -> return NullCovers(coverStorage) + CoverMode.SAVE_SPACE -> Compress(Bitmap.CompressFormat.JPEG, 500, 70) + CoverMode.BALANCED -> Compress(Bitmap.CompressFormat.JPEG, 750, 85) + CoverMode.HIGH_QUALITY -> Compress(Bitmap.CompressFormat.JPEG, 1000, 100) + CoverMode.AS_IS -> NoTranscoding + } + val revisionedTranscoding = RevisionedTranscoding(revision, transcoding) + val storedCovers = + MutableStoredCovers( + EmbeddedCovers(CoverIdentifier.md5()), coverStorage, revisionedTranscoding) + val fsCovers = MutableFSCovers(context) + return MutableChainedCovers(storedCovers, fsCovers) + } } + +private fun Context.coversDir() = filesDir.resolve("covers").apply { mkdirs() } diff --git a/app/src/main/java/org/oxycblt/auxio/image/covers/SiloedCovers.kt b/app/src/main/java/org/oxycblt/auxio/image/covers/SiloedCovers.kt deleted file mode 100644 index 856239698..000000000 --- a/app/src/main/java/org/oxycblt/auxio/image/covers/SiloedCovers.kt +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (c) 2024 Auxio Project - * SiloedCovers.kt is part of Auxio. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package org.oxycblt.auxio.image.covers - -import android.content.Context -import java.io.File -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.withContext -import org.oxycblt.musikr.cover.Cover -import org.oxycblt.musikr.cover.CoverFormat -import org.oxycblt.musikr.cover.CoverIdentifier -import org.oxycblt.musikr.cover.CoverResult -import org.oxycblt.musikr.cover.Covers -import org.oxycblt.musikr.cover.FileCover -import org.oxycblt.musikr.cover.FileCovers -import org.oxycblt.musikr.cover.MutableCovers -import org.oxycblt.musikr.cover.MutableFileCovers -import org.oxycblt.musikr.fs.app.AppFiles -import org.oxycblt.musikr.fs.device.DeviceFile -import org.oxycblt.musikr.metadata.Metadata - -class BaseSiloedCovers(private val context: Context) : Covers { - override suspend fun obtain(id: String): CoverResult { - val siloedId = SiloedCoverId.parse(id) ?: return CoverResult.Miss() - val core = SiloCore.from(context, siloedId.silo) - val fileCovers = FileCovers(core.files, core.format) - return when (val result = fileCovers.obtain(siloedId.id)) { - is CoverResult.Hit -> CoverResult.Hit(SiloedCover(siloedId.silo, result.cover)) - is CoverResult.Miss -> CoverResult.Miss() - } - } -} - -open class SiloedCovers(private val silo: CoverSilo, private val fileCovers: FileCovers) : - Covers { - override suspend fun obtain(id: String): CoverResult { - val coverId = SiloedCoverId.parse(id) ?: return CoverResult.Miss() - if (silo != coverId.silo) return CoverResult.Miss() - return when (val result = fileCovers.obtain(coverId.id)) { - is CoverResult.Hit -> CoverResult.Hit(SiloedCover(silo, result.cover)) - is CoverResult.Miss -> CoverResult.Miss() - } - } - - companion object { - suspend fun from(context: Context, silo: CoverSilo): SiloedCovers { - val core = SiloCore.from(context, silo) - return SiloedCovers(silo, FileCovers(core.files, core.format)) - } - } -} - -class MutableSiloedCovers -private constructor( - private val rootDir: File, - private val silo: CoverSilo, - private val fileCovers: MutableFileCovers -) : SiloedCovers(silo, fileCovers), MutableCovers { - override suspend fun create(file: DeviceFile, metadata: Metadata): CoverResult = - when (val result = fileCovers.create(file, metadata)) { - is CoverResult.Hit -> CoverResult.Hit(SiloedCover(silo, result.cover)) - is CoverResult.Miss -> CoverResult.Miss() - } - - override suspend fun cleanup(excluding: Collection) { - fileCovers.cleanup(excluding.filterIsInstance().map { it.innerCover }) - - // Destroy old revisions no longer being used. - withContext(Dispatchers.IO) { - val exclude = silo.toString() - rootDir.listFiles { file -> file.name != exclude }?.forEach { it.deleteRecursively() } - } - } - - companion object { - suspend fun from( - context: Context, - silo: CoverSilo, - coverIdentifier: CoverIdentifier - ): MutableSiloedCovers { - val core = SiloCore.from(context, silo) - return MutableSiloedCovers( - core.rootDir, silo, MutableFileCovers(core.files, core.format, coverIdentifier)) - } - } -} - -data class SiloedCover(private val silo: CoverSilo, val innerCover: FileCover) : - FileCover by innerCover { - private val innerId = SiloedCoverId(silo, innerCover.id) - override val id = innerId.toString() -} - -data class SiloedCoverId(val silo: CoverSilo, val id: String) { - override fun toString() = "$id@$silo" - - companion object { - fun parse(id: String): SiloedCoverId? { - val parts = id.split('@') - if (parts.size != 2) return null - val silo = CoverSilo.parse(parts[1]) ?: return null - return SiloedCoverId(silo, parts[0]) - } - } -} - -private data class SiloCore(val rootDir: File, val files: AppFiles, val format: CoverFormat) { - companion object { - suspend fun from(context: Context, silo: CoverSilo): SiloCore { - val rootDir: File - val revisionDir: File - withContext(Dispatchers.IO) { - rootDir = context.coversDir() - revisionDir = rootDir.resolve(silo.toString()).apply { mkdirs() } - } - val files = AppFiles.at(revisionDir) - val format = silo.params?.let(CoverFormat::jpeg) ?: CoverFormat.asIs() - return SiloCore(rootDir, files, format) - } - } -} diff --git a/app/src/main/java/org/oxycblt/auxio/list/recycler/FastScrollRecyclerView.kt b/app/src/main/java/org/oxycblt/auxio/list/recycler/FastScrollRecyclerView.kt index 4fe661b6d..18e8f9e7a 100644 --- a/app/src/main/java/org/oxycblt/auxio/list/recycler/FastScrollRecyclerView.kt +++ b/app/src/main/java/org/oxycblt/auxio/list/recycler/FastScrollRecyclerView.kt @@ -19,6 +19,7 @@ package org.oxycblt.auxio.list.recycler import android.animation.Animator +import android.annotation.SuppressLint import android.content.Context import android.graphics.Canvas import android.graphics.Rect @@ -34,6 +35,7 @@ import android.view.ViewGroup import android.view.WindowInsets import android.widget.FrameLayout import androidx.annotation.AttrRes +import androidx.core.view.isEmpty import androidx.core.view.isInvisible import androidx.core.view.updatePaddingRelative import androidx.core.widget.TextViewCompat @@ -90,6 +92,7 @@ constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr private val thumbSlider = MaterialSlider.small(context, thumbWidth) private var thumbAnimator: Animator? = null + @SuppressLint("InflateParams") private val thumbView = context.inflater.inflate(R.layout.view_scroll_thumb, null).apply { thumbSlider.jumpOut(this) @@ -339,7 +342,7 @@ constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr // [proportion of scroll position to scroll range] * [total thumb range] // This is somewhat adapted from the androidx RecyclerView FastScroller implementation. val offsetY = computeVerticalScrollOffset() - if (computeVerticalScrollRange() < height || childCount == 0) { + if (computeVerticalScrollRange() < height || isEmpty()) { fastScrollingPossible = false hideThumb() hidePopup() diff --git a/app/src/main/java/org/oxycblt/auxio/music/MusicRepository.kt b/app/src/main/java/org/oxycblt/auxio/music/MusicRepository.kt index 1af17e660..6b478c520 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/MusicRepository.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/MusicRepository.kt @@ -29,6 +29,7 @@ import kotlinx.coroutines.withContext import kotlinx.coroutines.yield import org.oxycblt.auxio.image.covers.SettingCovers import org.oxycblt.auxio.music.MusicRepository.IndexingWorker +import org.oxycblt.auxio.music.shim.WriteOnlyMutableCache import org.oxycblt.musikr.IndexingProgress import org.oxycblt.musikr.Interpretation import org.oxycblt.musikr.Library @@ -38,7 +39,7 @@ import org.oxycblt.musikr.MutableLibrary import org.oxycblt.musikr.Playlist import org.oxycblt.musikr.Song import org.oxycblt.musikr.Storage -import org.oxycblt.musikr.cache.StoredCache +import org.oxycblt.musikr.cache.MutableCache import org.oxycblt.musikr.playlist.db.StoredPlaylists import org.oxycblt.musikr.tag.interpret.Naming import org.oxycblt.musikr.tag.interpret.Separators @@ -187,8 +188,8 @@ interface MusicRepository { /** * Flags indicating which kinds of music information changed. * - * @param deviceLibrary Whether the current [DeviceLibrary] has changed. - * @param library Whether the current [Playlist]s have changed. + * @param deviceLibrary Whether the current songs/albums/artists/genres has changed. + * @param userLibrary Whether the current playlists have changed. */ data class Changes(val deviceLibrary: Boolean, val userLibrary: Boolean) @@ -236,14 +237,14 @@ class MusicRepositoryImpl @Inject constructor( @ApplicationContext private val context: Context, - private val storedCache: StoredCache, + private val cache: MutableCache, private val storedPlaylists: StoredPlaylists, private val settingCovers: SettingCovers, private val musicSettings: MusicSettings ) : MusicRepository { private val updateListeners = mutableListOf() private val indexingListeners = mutableListOf() - @Volatile private var indexingWorker: MusicRepository.IndexingWorker? = null + @Volatile private var indexingWorker: IndexingWorker? = null @Volatile override var library: MutableLibrary? = null @Volatile private var previousCompletedState: IndexingState.Completed? = null @@ -282,7 +283,7 @@ constructor( } @Synchronized - override fun registerWorker(worker: MusicRepository.IndexingWorker) { + override fun registerWorker(worker: IndexingWorker) { if (indexingWorker != null) { L.w("Worker is already registered") return @@ -292,7 +293,7 @@ constructor( } @Synchronized - override fun unregisterWorker(worker: MusicRepository.IndexingWorker) { + override fun unregisterWorker(worker: IndexingWorker) { if (indexingWorker !== worker) { L.w("Given worker did not match current worker") return @@ -384,15 +385,14 @@ constructor( Naming.simple() } val locations = musicSettings.musicLocations - val ignoreHidden = !musicSettings.withHidden + val withHidden = musicSettings.withHidden val currentRevision = musicSettings.revision val newRevision = currentRevision?.takeIf { withCache } ?: UUID.randomUUID() - val cache = if (withCache) storedCache.visible() else storedCache.invisible() + val cache = if (withCache) cache else WriteOnlyMutableCache(cache) val covers = settingCovers.mutate(context, newRevision) val storage = Storage(cache, covers, storedPlaylists) - val interpretation = Interpretation(nameFactory, separators, ignoreHidden) - + val interpretation = Interpretation(nameFactory, separators, withHidden) val result = Musikr.new(context, storage, interpretation).run(locations, ::emitIndexingProgress) // Music loading completed, update the revision right now so we re-use this work diff --git a/app/src/main/java/org/oxycblt/auxio/music/MusicSettings.kt b/app/src/main/java/org/oxycblt/auxio/music/MusicSettings.kt index 2fae8d3ba..67b79ae15 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/MusicSettings.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/MusicSettings.kt @@ -85,7 +85,10 @@ class MusicSettingsImpl @Inject constructor(@ApplicationContext private val cont sharedPreferences.edit { putString( getString(R.string.set_key_music_locations), MusicLocation.toString(value)) - this@edit.apply() + commit() + // Sometimes changing this setting just won't actually trigger the listener. + // Only this one. No idea why. + listener?.onMusicLocationsChanged() } } diff --git a/app/src/main/java/org/oxycblt/auxio/music/MusicType.kt b/app/src/main/java/org/oxycblt/auxio/music/MusicType.kt index 572280f8e..516dd1aa9 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/MusicType.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/MusicType.kt @@ -27,15 +27,10 @@ import org.oxycblt.auxio.R * @author Alexander Capehart (OxygenCobalt) */ enum class MusicType { - /** @see Song */ SONGS, - /** @see Album */ ALBUMS, - /** @see Artist */ ARTISTS, - /** @see Genre */ GENRES, - /** @see Playlist */ PLAYLISTS; /** diff --git a/app/src/main/java/org/oxycblt/auxio/music/locations/MusicSourcesDialog.kt b/app/src/main/java/org/oxycblt/auxio/music/locations/MusicSourcesDialog.kt index 3ca75b8f6..88a4132d5 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/locations/MusicSourcesDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/locations/MusicSourcesDialog.kt @@ -25,6 +25,7 @@ import android.view.LayoutInflater import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AlertDialog +import androidx.core.net.toUri import androidx.recyclerview.widget.ConcatAdapter import dagger.hilt.android.AndroidEntryPoint import javax.inject.Inject @@ -80,7 +81,7 @@ class MusicSourcesDialog : val locations = savedInstanceState?.getStringArrayList(KEY_PENDING_LOCATIONS)?.mapNotNull { - MusicLocation.existing(requireContext(), Uri.parse(it)) + MusicLocation.existing(requireContext(), it.toUri()) } ?: musicSettings.musicLocations locationAdapter.addAll(locations) diff --git a/app/src/main/java/org/oxycblt/auxio/music/locations/NewLocationFooterAdapter.kt b/app/src/main/java/org/oxycblt/auxio/music/locations/NewLocationFooterAdapter.kt index 156c4c049..4623db510 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/locations/NewLocationFooterAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/locations/NewLocationFooterAdapter.kt @@ -51,7 +51,7 @@ class NewLocationFooterAdapter(private val listener: Listener) : } /** - * A [RecyclerView.ViewHolder] that displays a "New Playlist" choice in [NewPlaylistFooterAdapter]. + * A [RecyclerView.ViewHolder] that displays a "New Playlist" choice in [NewLocationFooterAdapter]. * Use [from] to create an instance. * * @author Alexander Capehart (OxygenCobalt) diff --git a/app/src/main/java/org/oxycblt/auxio/music/shim/MusikrShimModule.kt b/app/src/main/java/org/oxycblt/auxio/music/shim/MusikrShimModule.kt index 977936cd5..827ac75c9 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/shim/MusikrShimModule.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/shim/MusikrShimModule.kt @@ -25,7 +25,8 @@ import dagger.hilt.InstallIn import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent import javax.inject.Singleton -import org.oxycblt.musikr.cache.StoredCache +import org.oxycblt.musikr.cache.MutableCache +import org.oxycblt.musikr.cache.db.MutableDBCache import org.oxycblt.musikr.playlist.db.StoredPlaylists @Module @@ -33,7 +34,7 @@ import org.oxycblt.musikr.playlist.db.StoredPlaylists class MusikrShimModule { @Singleton @Provides - fun storedCache(@ApplicationContext context: Context) = StoredCache.from(context) + fun cache(@ApplicationContext context: Context): MutableCache = MutableDBCache.from(context) @Singleton @Provides diff --git a/app/src/main/java/org/oxycblt/auxio/music/shim/WriteOnlyMutableCache.kt b/app/src/main/java/org/oxycblt/auxio/music/shim/WriteOnlyMutableCache.kt new file mode 100644 index 000000000..d4076f965 --- /dev/null +++ b/app/src/main/java/org/oxycblt/auxio/music/shim/WriteOnlyMutableCache.kt @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2025 Auxio Project + * WriteOnlyMutableCache.kt is part of Auxio. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package org.oxycblt.auxio.music.shim + +import org.oxycblt.musikr.cache.CacheResult +import org.oxycblt.musikr.cache.CachedSong +import org.oxycblt.musikr.cache.MutableCache +import org.oxycblt.musikr.fs.device.DeviceFile + +class WriteOnlyMutableCache(private val inner: MutableCache) : MutableCache { + override suspend fun read(file: DeviceFile): CacheResult { + return when (val result = inner.read(file)) { + is CacheResult.Hit -> CacheResult.Stale(file, result.song.addedMs) + else -> result + } + } + + override suspend fun write(cachedSong: CachedSong) { + inner.write(cachedSong) + } + + override suspend fun cleanup(excluding: List) { + inner.cleanup(excluding) + } +} diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackUtil.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackUtil.kt index 17b4fcc12..5ec328f91 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackUtil.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackUtil.kt @@ -48,13 +48,6 @@ fun Long.dsToMs() = times(100) */ fun Long.dsToSecs() = floorDiv(10) -/** - * Convert seconds into milliseconds. - * - * @return A converted millisecond value. - */ -fun Long.secsToMs() = times(1000) - /** * Convert a millisecond value into a string duration. * diff --git a/app/src/main/java/org/oxycblt/auxio/playback/service/BetterShuffleOrder.kt b/app/src/main/java/org/oxycblt/auxio/playback/service/BetterShuffleOrder.kt index 0f037a75a..0b95e4c4b 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/service/BetterShuffleOrder.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/service/BetterShuffleOrder.kt @@ -18,7 +18,9 @@ package org.oxycblt.auxio.playback.service +import androidx.annotation.OptIn import androidx.media3.common.C +import androidx.media3.common.util.UnstableApi import androidx.media3.exoplayer.source.ShuffleOrder /** @@ -28,6 +30,7 @@ import androidx.media3.exoplayer.source.ShuffleOrder * * @author media3 team, Alexander Capehart (OxygenCobalt) */ +@OptIn(UnstableApi::class) class BetterShuffleOrder(private val shuffled: IntArray) : ShuffleOrder { private val indexInShuffled: IntArray = IntArray(shuffled.size) diff --git a/app/src/main/java/org/oxycblt/auxio/playback/service/ExoPlaybackStateHolder.kt b/app/src/main/java/org/oxycblt/auxio/playback/service/ExoPlaybackStateHolder.kt index b2d89d5c6..32bd40ad8 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/service/ExoPlaybackStateHolder.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/service/ExoPlaybackStateHolder.kt @@ -22,11 +22,13 @@ import android.content.Context import android.content.Intent import android.media.audiofx.AudioEffect import android.provider.OpenableColumns +import androidx.annotation.OptIn import androidx.media3.common.AudioAttributes import androidx.media3.common.C import androidx.media3.common.MediaItem import androidx.media3.common.PlaybackException import androidx.media3.common.Player +import androidx.media3.common.util.UnstableApi import androidx.media3.decoder.ffmpeg.FfmpegAudioRenderer import androidx.media3.exoplayer.ExoPlayer import androidx.media3.exoplayer.RenderersFactory @@ -62,6 +64,7 @@ import org.oxycblt.musikr.MusicParent import org.oxycblt.musikr.Song import timber.log.Timber as L +@OptIn(UnstableApi::class) class ExoPlaybackStateHolder( private val context: Context, private val player: ExoPlayer, @@ -432,14 +435,14 @@ class ExoPlaybackStateHolder( override fun endSession() { // This session has ended, so we need to reset this flag for when the next // session starts. + playbackManager.playing(false) save { // User could feasibly start playing again if they were fast enough, so // we need to avoid stopping the foreground state if that's the case. - if (playbackManager.progression.isPlaying) { - playbackManager.playing(false) + if (!playbackManager.progression.isPlaying) { + sessionOngoing = false + playbackManager.ack(this, StateAck.SessionEnded) } - sessionOngoing = false - playbackManager.ack(this, StateAck.SessionEnded) } } @@ -545,7 +548,9 @@ class ExoPlaybackStateHolder( private fun save(cb: () -> Unit) { saveJob { - persistenceRepository.saveState(playbackManager.toSavedState()) + if (sessionOngoing) { + persistenceRepository.saveState(playbackManager.toSavedState()) + } withContext(Dispatchers.Main) { cb() } } } @@ -556,7 +561,9 @@ class ExoPlaybackStateHolder( delay(SAVE_BUFFER) yield() L.d("Committing saved state") - persistenceRepository.saveState(playbackManager.toSavedState()) + if (sessionOngoing) { + persistenceRepository.saveState(playbackManager.toSavedState()) + } } } diff --git a/app/src/main/java/org/oxycblt/auxio/playback/service/MediaButtonReceiver.kt b/app/src/main/java/org/oxycblt/auxio/playback/service/MediaButtonReceiver.kt index 22ad735a6..16141d4f9 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/service/MediaButtonReceiver.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/service/MediaButtonReceiver.kt @@ -26,6 +26,7 @@ import androidx.core.content.ContextCompat import dagger.hilt.android.AndroidEntryPoint import javax.inject.Inject import org.oxycblt.auxio.AuxioService +import org.oxycblt.auxio.IntegerTable import org.oxycblt.auxio.playback.state.PlaybackStateManager import timber.log.Timber as L @@ -47,8 +48,11 @@ class MediaButtonReceiver : BroadcastReceiver() { // stupid this is with the state of foreground services on modern android. One // wrong action at the wrong time will result in the app crashing, and there is // nothing I can do about it. + // TODO: Think I finally have an alternative with the changes I made to accomodate + // tasker L.d("Delivering media button intent $intent") intent.component = ComponentName(context, AuxioService::class.java) + intent.putExtra(AuxioService.INTENT_KEY_START_ID, IntegerTable.START_ID_MEDIA_BUTTON) ContextCompat.startForegroundService(context, intent) } } diff --git a/app/src/main/java/org/oxycblt/auxio/playback/service/MediaSessionHolder.kt b/app/src/main/java/org/oxycblt/auxio/playback/service/MediaSessionHolder.kt index 0cba44c5c..d90ddb8b7 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/service/MediaSessionHolder.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/service/MediaSessionHolder.kt @@ -20,6 +20,7 @@ package org.oxycblt.auxio.playback.service import android.annotation.SuppressLint import android.content.Context +import android.content.Intent import android.graphics.Bitmap import android.support.v4.media.MediaMetadataCompat import android.support.v4.media.session.MediaSessionCompat @@ -28,6 +29,7 @@ import androidx.annotation.DrawableRes import androidx.car.app.mediaextensions.MetadataExtras import androidx.core.app.NotificationCompat import androidx.media.app.NotificationCompat.MediaStyle +import androidx.media.session.MediaButtonReceiver import javax.inject.Inject import org.oxycblt.auxio.BuildConfig import org.oxycblt.auxio.ForegroundListener @@ -108,6 +110,9 @@ private constructor( } } + fun tryMediaButtonIntent(intent: Intent): Boolean = + MediaButtonReceiver.handleIntent(mediaSession, intent) != null + /** * Release this instance, closing the [MediaSessionCompat] and preventing any further updates to * the [PlaybackNotification]. diff --git a/app/src/main/java/org/oxycblt/auxio/playback/service/PlaybackServiceFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/service/PlaybackServiceFragment.kt index a49438472..2b90f2f38 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/service/PlaybackServiceFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/service/PlaybackServiceFragment.kt @@ -19,9 +19,11 @@ package org.oxycblt.auxio.playback.service import android.content.Context +import android.content.Intent import android.support.v4.media.session.MediaSessionCompat import javax.inject.Inject import kotlinx.coroutines.Job +import org.oxycblt.auxio.AuxioService.Companion.INTENT_KEY_START_ID import org.oxycblt.auxio.ForegroundListener import org.oxycblt.auxio.ForegroundServiceNotification import org.oxycblt.auxio.IntegerTable @@ -83,18 +85,34 @@ private constructor( } } - fun start(startedBy: Int) { + fun start(intent: Intent?) { // At minimum we want to ensure an active playback state. // TODO: Possibly also force to go foreground? - L.d("Handling non-native start.") + val startId = intent?.getIntExtra(INTENT_KEY_START_ID, -1) val action = - when (startedBy) { + when (startId) { IntegerTable.START_ID_ACTIVITY -> null IntegerTable.START_ID_TASKER -> DeferredPlayback.RestoreState( play = true, fallback = DeferredPlayback.ShuffleAll) - // External services using Auxio better know what they are doing. - else -> DeferredPlayback.RestoreState(play = false) + IntegerTable.START_ID_MEDIA_BUTTON -> { + if (!sessionHolder.tryMediaButtonIntent(intent)) { + // Malformed intent, need to restore state immediately + DeferredPlayback.RestoreState( + play = true, fallback = DeferredPlayback.ShuffleAll) + } else { + null + } + } + else -> { + L.d("Handling non-native start.") + if (intent != null && sessionHolder.tryMediaButtonIntent(intent)) { + // Just a media button intent, move on. + return + } + // External services using Auxio better know what they are doing. + DeferredPlayback.RestoreState(play = false) + } } if (action != null) { L.d("Initing service fragment using action $action") diff --git a/app/src/main/java/org/oxycblt/auxio/playback/service/SystemModule.kt b/app/src/main/java/org/oxycblt/auxio/playback/service/SystemModule.kt index cda467cfb..2854d4873 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/service/SystemModule.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/service/SystemModule.kt @@ -19,6 +19,8 @@ package org.oxycblt.auxio.playback.service import android.content.Context +import androidx.annotation.OptIn +import androidx.media3.common.util.UnstableApi import androidx.media3.datasource.ContentDataSource import androidx.media3.datasource.DataSource import androidx.media3.exoplayer.source.MediaSource @@ -41,6 +43,7 @@ import dagger.hilt.components.SingletonComponent @Module @InstallIn(SingletonComponent::class) +@OptIn(UnstableApi::class) class SystemModule { @Provides fun mediaSourceFactory( diff --git a/app/src/main/java/org/oxycblt/auxio/settings/AboutFragment.kt b/app/src/main/java/org/oxycblt/auxio/settings/AboutFragment.kt index 11f4b5175..7f278df5c 100644 --- a/app/src/main/java/org/oxycblt/auxio/settings/AboutFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/settings/AboutFragment.kt @@ -20,9 +20,9 @@ package org.oxycblt.auxio.settings import android.content.Context import android.content.Intent -import android.net.Uri import android.os.Bundle import android.view.LayoutInflater +import androidx.core.net.toUri import androidx.core.view.updatePadding import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.findNavController @@ -102,7 +102,7 @@ class AboutFragment : ViewBindingFragment() { } private fun Context.sendEmail(recipient: String) { - val intent = Intent(Intent.ACTION_SENDTO).apply { data = Uri.parse("mailto:$recipient") } + val intent = Intent(Intent.ACTION_SENDTO).apply { data = "mailto:$recipient".toUri() } startIntent(intent) } diff --git a/app/src/main/java/org/oxycblt/auxio/settings/Settings.kt b/app/src/main/java/org/oxycblt/auxio/settings/Settings.kt index 9f77a3c8f..2128d6db4 100644 --- a/app/src/main/java/org/oxycblt/auxio/settings/Settings.kt +++ b/app/src/main/java/org/oxycblt/auxio/settings/Settings.kt @@ -62,17 +62,13 @@ interface Settings { */ abstract class Impl(private val context: Context) : Settings, SharedPreferences.OnSharedPreferenceChangeListener { - init { - L.d(this::class.simpleName) - } - protected val sharedPreferences: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(context.applicationContext) /** @see [Context.getString] */ protected fun getString(@StringRes stringRes: Int) = context.getString(stringRes) - private var listener: Listener? = null + protected var listener: Listener? = null override fun registerListener(listener: Listener) { if (this.listener == null) { diff --git a/app/src/main/java/org/oxycblt/auxio/tasker/Start.kt b/app/src/main/java/org/oxycblt/auxio/tasker/Start.kt index 5381b3383..7372bde56 100644 --- a/app/src/main/java/org/oxycblt/auxio/tasker/Start.kt +++ b/app/src/main/java/org/oxycblt/auxio/tasker/Start.kt @@ -66,6 +66,9 @@ class StartActionRunner : TaskerPluginRunnerActionNoOutputOrInput() { while (!AuxioService.isForeground) { Thread.sleep(100) } + // Actually need to sleep even longer since for some reason the notification still + // won't accept media button events for an arbitrary period. + Thread.sleep(100) return TaskerPluginResultSucess() } } diff --git a/app/src/main/java/org/oxycblt/auxio/ui/Animations.kt b/app/src/main/java/org/oxycblt/auxio/ui/Animations.kt index edbaf01ef..986893cc3 100644 --- a/app/src/main/java/org/oxycblt/auxio/ui/Animations.kt +++ b/app/src/main/java/org/oxycblt/auxio/ui/Animations.kt @@ -46,25 +46,25 @@ class AnimConfig( companion object { val STANDARD = MR.attr.motionEasingStandardInterpolator - val EMPHASIZED = MR.attr.motionEasingEmphasizedInterpolator + // val EMPHASIZED = MR.attr.motionEasingEmphasizedInterpolator val EMPHASIZED_ACCELERATE = MR.attr.motionEasingEmphasizedAccelerateInterpolator val EMPHASIZED_DECELERATE = MR.attr.motionEasingEmphasizedDecelerateInterpolator val SHORT1 = MR.attr.motionDurationShort1 to 50 - val SHORT2 = MR.attr.motionDurationShort2 to 100 + // val SHORT2 = MR.attr.motionDurationShort2 to 100 val SHORT3 = MR.attr.motionDurationShort3 to 150 - val SHORT4 = MR.attr.motionDurationShort4 to 200 + // val SHORT4 = MR.attr.motionDurationShort4 to 200 val MEDIUM1 = MR.attr.motionDurationMedium1 to 250 val MEDIUM2 = MR.attr.motionDurationMedium2 to 300 val MEDIUM3 = MR.attr.motionDurationMedium3 to 350 - val MEDIUM4 = MR.attr.motionDurationMedium4 to 400 - val LONG1 = MR.attr.motionDurationLong1 to 450 - val LONG2 = MR.attr.motionDurationLong2 to 500 - val LONG3 = MR.attr.motionDurationLong3 to 550 - val LONG4 = MR.attr.motionDurationLong4 to 600 - val EXTRA_LONG1 = MR.attr.motionDurationExtraLong1 to 700 - val EXTRA_LONG2 = MR.attr.motionDurationExtraLong2 to 800 - val EXTRA_LONG3 = MR.attr.motionDurationExtraLong3 to 900 - val EXTRA_LONG4 = MR.attr.motionDurationExtraLong4 to 1000 + // val MEDIUM4 = MR.attr.motionDurationMedium4 to 400 + // val LONG1 = MR.attr.motionDurationLong1 to 450 + // val LONG2 = MR.attr.motionDurationLong2 to 500 + // val LONG3 = MR.attr.motionDurationLong3 to 550 + // val LONG4 = MR.attr.motionDurationLong4 to 600 + // val EXTRA_LONG1 = MR.attr.motionDurationExtraLong1 to 700 + // val EXTRA_LONG2 = MR.attr.motionDurationExtraLong2 to 800 + // val EXTRA_LONG3 = MR.attr.motionDurationExtraLong3 to 900 + // val EXTRA_LONG4 = MR.attr.motionDurationExtraLong4 to 1000 fun of(context: Context, @AttrRes interpolator: Int, duration: Pair) = AnimConfig(context, interpolator, duration.first, duration.second) @@ -122,7 +122,7 @@ private constructor( } } - fun jumpToFadeIn(view: View) { + private fun jumpToFadeIn(view: View) { view.apply { alpha = 1f scaleX = 1.0f diff --git a/app/src/main/java/org/oxycblt/auxio/util/FrameworkUtil.kt b/app/src/main/java/org/oxycblt/auxio/util/FrameworkUtil.kt index ec6091863..2322a196e 100644 --- a/app/src/main/java/org/oxycblt/auxio/util/FrameworkUtil.kt +++ b/app/src/main/java/org/oxycblt/auxio/util/FrameworkUtil.kt @@ -24,7 +24,6 @@ import android.content.Context import android.content.Intent import android.content.pm.PackageManager import android.graphics.PointF -import android.graphics.drawable.Drawable import android.os.Build import android.view.View import android.view.WindowInsets @@ -36,7 +35,6 @@ import androidx.appcompat.widget.Toolbar import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.core.app.ShareCompat import androidx.core.graphics.Insets -import androidx.core.graphics.drawable.DrawableCompat import androidx.core.net.toUri import androidx.core.view.children import androidx.navigation.NavController @@ -106,10 +104,6 @@ private fun isUnderImpl( val View.isRtl: Boolean get() = layoutDirection == View.LAYOUT_DIRECTION_RTL -/** Whether this [Drawable] is using an RTL layout direction. */ -val Drawable.isRtl: Boolean - get() = DrawableCompat.getLayoutDirection(this) == View.LAYOUT_DIRECTION_RTL - /** Get a [Context] from a [ViewBinding]'s root [View]. */ val ViewBinding.context: Context get() = root.context @@ -357,7 +351,7 @@ fun Context.startIntent(intent: Intent) { // No app installed to open the link showToast(R.string.err_no_app) } - } else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) { + } else { // On older versions of android, opening links from an ACTION_VIEW intent might // not work in all cases, especially when no default app was set. If that is the // case, we will try to manually handle these cases before we try to launch the diff --git a/app/src/main/java/org/oxycblt/auxio/util/StateUtil.kt b/app/src/main/java/org/oxycblt/auxio/util/StateUtil.kt index 7f9f4e9a5..eb74d8f15 100644 --- a/app/src/main/java/org/oxycblt/auxio/util/StateUtil.kt +++ b/app/src/main/java/org/oxycblt/auxio/util/StateUtil.kt @@ -22,18 +22,11 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle -import java.util.concurrent.TimeoutException import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.TimeoutCancellationException -import kotlinx.coroutines.channels.ReceiveChannel -import kotlinx.coroutines.channels.SendChannel import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.launch -import kotlinx.coroutines.withTimeout -import org.oxycblt.auxio.BuildConfig -import timber.log.Timber as L /** * A wrapper around [StateFlow] exposing a one-time consumable event. @@ -153,71 +146,3 @@ private fun Fragment.launch( ) { viewLifecycleOwner.lifecycleScope.launch { viewLifecycleOwner.repeatOnLifecycle(state, block) } } - -const val DEFAULT_TIMEOUT = 60000L - -/** - * Wraps [SendChannel.send] with a specified timeout. - * - * @param element The element to send. - * @param timeout The timeout in milliseconds. Defaults to 10 seconds. - * @throws TimeoutException If the timeout is reached, provides context on what element - * specifically. - */ -suspend fun SendChannel.sendWithTimeout(element: E, timeout: Long = DEFAULT_TIMEOUT) { - try { - withTimeout(timeout) { send(element) } - } catch (e: TimeoutCancellationException) { - L.e("Failed to send element to channel $e in ${timeout}ms.") - if (BuildConfig.DEBUG) { - throw TimeoutException("Timed out sending element to channel: $e") - } else { - L.e(e.stackTraceToString()) - send(element) - } - } -} - -/** - * Wraps a [ReceiveChannel] consumption with a specified timeout. Note that the timeout will only - * start on the first element received, as to prevent initialization of dependent coroutines being - * interpreted as a timeout. - * - * @param action The action to perform on each element received. - * @param timeout The timeout in milliseconds. Defaults to 10 seconds. - * @throws TimeoutException If the timeout is reached, provides context on what element - * specifically. - */ -suspend fun ReceiveChannel.forEachWithTimeout( - timeout: Long = DEFAULT_TIMEOUT, - action: suspend (E) -> Unit -) { - var exhausted = false - var subsequent = false - val handler: suspend () -> Unit = { - val value = receiveCatching() - if (value.isClosed && value.exceptionOrNull() == null) { - exhausted = true - } else { - action(value.getOrThrow()) - } - } - while (!exhausted) { - try { - if (subsequent) { - withTimeout(timeout) { handler() } - } else { - handler() - subsequent = true - } - } catch (e: TimeoutCancellationException) { - L.e("Failed to send element to channel $e in ${timeout}ms.") - if (BuildConfig.DEBUG) { - throw TimeoutException("Timed out sending element to channel: $e") - } else { - L.e(e.stackTraceToString()) - handler() - } - } - } -} diff --git a/app/src/main/java/org/oxycblt/auxio/widgets/WidgetBitmapTransformation.kt b/app/src/main/java/org/oxycblt/auxio/widgets/WidgetBitmapTransformation.kt index d844026af..7ad05b026 100644 --- a/app/src/main/java/org/oxycblt/auxio/widgets/WidgetBitmapTransformation.kt +++ b/app/src/main/java/org/oxycblt/auxio/widgets/WidgetBitmapTransformation.kt @@ -20,6 +20,7 @@ package org.oxycblt.auxio.widgets import android.content.res.Resources import android.graphics.Bitmap +import androidx.core.graphics.scale import coil3.size.Size import coil3.transform.Transformation import kotlin.math.sqrt @@ -49,7 +50,7 @@ class WidgetBitmapTransformation(reduce: Float) : Transformation() { val scale = sqrt(maxBitmapArea / inputArea.toDouble()) val newWidth = (input.width * scale).toInt() val newHeight = (input.height * scale).toInt() - return Bitmap.createScaledBitmap(input, newWidth, newHeight, true) + return input.scale(newWidth, newHeight) } return input } diff --git a/app/src/main/java/org/oxycblt/auxio/widgets/WidgetUtil.kt b/app/src/main/java/org/oxycblt/auxio/widgets/WidgetUtil.kt index 049531c88..a5e32881b 100644 --- a/app/src/main/java/org/oxycblt/auxio/widgets/WidgetUtil.kt +++ b/app/src/main/java/org/oxycblt/auxio/widgets/WidgetUtil.kt @@ -19,7 +19,6 @@ package org.oxycblt.auxio.widgets import android.appwidget.AppWidgetManager -import android.appwidget.AppWidgetProviderInfo import android.content.ComponentName import android.content.Context import android.os.Build @@ -66,11 +65,6 @@ fun RemoteViews.setLayoutDirection(@IdRes viewId: Int, layoutDirection: Int) { setInt(viewId, "setLayoutDirection", layoutDirection) } -fun AppWidgetManager.setWidgetPreviewCompat(component: ComponentName, remoteViews: RemoteViews) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) { - setWidgetPreview(component, AppWidgetProviderInfo.WIDGET_CATEGORY_HOME_SCREEN, remoteViews) - } -} /** * Update the app widget layouts corresponding to the given [WidgetProvider] [ComponentName] with an * adaptive layout, in a version-compatible manner. diff --git a/app/src/main/res/layout-h360dp/fragment_detail.xml b/app/src/main/res/layout-h360dp/fragment_detail.xml index 12bb1598b..8a980b1c0 100644 --- a/app/src/main/res/layout-h360dp/fragment_detail.xml +++ b/app/src/main/res/layout-h360dp/fragment_detail.xml @@ -119,7 +119,8 @@ app:layout_constraintEnd_toStartOf="@+id/detail_shuffle_button" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/detail_cover" /> + app:layout_constraintTop_toBottomOf="@+id/detail_cover" + tools:ignore="RtlSymmetry" /> + app:layout_constraintTop_toBottomOf="@+id/detail_info" + tools:ignore="RtlSymmetry"/> + app:layout_constraintTop_toTopOf="@+id/detail_play_button" + tools:ignore="RtlSymmetry" /> + app:layout_constraintTop_toTopOf="@+id/detail_play_button" + tools:ignore="RtlSymmetry" /> + xmlns:tools="http://schemas.android.com/tools"> \ No newline at end of file diff --git a/app/src/main/res/layout/widget_wafer_thin.xml b/app/src/main/res/layout/widget_wafer_thin.xml index 385a39fe7..86f1581ca 100644 --- a/app/src/main/res/layout/widget_wafer_thin.xml +++ b/app/src/main/res/layout/widget_wafer_thin.xml @@ -22,7 +22,7 @@ android:scaleType="centerCrop" android:background="@drawable/ui_widget_bg_round" android:clipToOutline="true" - tools:ignore="ContentDescription" /> + tools:ignore="ContentDescription,UnusedAttribute" /> + tools:ignore="ContentDescription,UnusedAttribute" /> عرض وتحكم بشتغيل الموسيقى إعادة المحاولة - منح الانواع فنانين البومات @@ -32,9 +31,7 @@ تمت الإضافة إلى الطابور أذهب إلى الفنان أذهب إلى الالبوم - أضف حفظ - لا مجلد حول الإصدار كود البرنامج @@ -71,9 +68,7 @@ ايقاف مؤقت عند تكرار تشغيل اغنية محتوى - لم يتم ايجاد موسيقى فشل تحميل الموسيقى - اوكسيو يحتاج إلى صلاحيات لقراءة للاطلاع على مكتبتك للموسيقى لا يوجد تطبيق لفتح هذا الرابط هذا المجلد غير مدعوم @@ -85,7 +80,6 @@ تخطي للاغنية الاخيرة تغيير وضع التكرار تشغيل او اطفاء الخلط - خلط جميع الاغاني إزالة اغنية من الطابور نقل اغنية من الطابور تحريك التبويت @@ -190,7 +184,6 @@ قوائم التشغيل قائمة التشغيل تم خلق قائمة التشغيل - المزيد حذف تم النسخ إضافة إلى قائمة التشغيل diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 9d6db7b73..e703b6610 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -3,7 +3,6 @@ مشغّل موسيقى بسيط ومعقول للأندرويد. مراقبة مكتبة الموسيقى إعادة المحاولة - منح الألبومات أغاني أغنية @@ -18,7 +17,6 @@ إضافة للطابور إضافة لقائمة التشغيل إعادة ضبط - إضافة مجلد جارِ تحميل مكتبتك الموسيقية… أضيفت للطابور تم إنشاء قائمة التشغيل @@ -85,7 +83,6 @@ لا قرص صوت MPEG-4 أوغ الصوت - صوت ماتروسكا برنامج ترميز الصوت المجاني بدون فقدان البيانات (FLAC) نيلي أزرق @@ -109,7 +106,6 @@ إظهار فقط الفنانين المُعتمدين مباشرة على الألبوم (يعمل بشكل أفضل في المكتبات المعروفة بتوسيماتها الجيدة) المحتوى - مجلدات إخفاء المتعاونين ضبط سلوك وصوت التشغيل إعادة التشغيل قبل الانتقال للوراء @@ -117,7 +113,6 @@ البقاء على التشغيل/الإيقاف عند الانتقال أو تعديل قائمة التشغيل تذكر الإيقاف المؤقت مسح ذاكرة التخزين المؤقت للعلامات وإعادة تحميل كامل مكتبة الموسيقى (أبطأ ولكن أكثر اكتمالًا) - يحتاج Auxio إلى إذن لقراءة مكتبتك الموسيقية غير قادر على استيراد قائمة التشغيل من هذا الملف لم يتم العثور على تطبيق يمكنه التعامل مع هذه المهمة تشغيل أو إيقاف مؤقت @@ -140,7 +135,6 @@ تسجيلات تجريبية اغاني دي جي اغنية دي جي - المزيد صورة التحديد إزالة هذه الأغنية نقل هذه الأغنية @@ -169,9 +163,7 @@ اغنية فردية ريميكس الصور إعادة تحميل مكتبة الموسيقى، باستخدام العلامات المخزنة مؤقتًا عند الإمكان - لا توجد مجلدات هذا المجلد غير مدعوم - خلط جميع الأغاني ازرق سماوي تحرير %s تلقائي @@ -248,7 +240,6 @@ يتم تطبيق مكبر الصوت المسبق على التعديل الحالي أثناء التشغيل ضبط مع العلامات تحديث الموسيقى - لم يتم العثور على موسيقى لا مسار لا يوجد تشغيل الموسيقى ترميز الصوت المتقدم (AAC) diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 5f602a887..0bb44f396 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -3,7 +3,6 @@ Musiqi yüklənir Musiqi yüklənir Təkrar cəhd et - Qəbul et Mahnılar Bütün mahnılar Albomlar @@ -35,7 +34,6 @@ Sənətkar Sənətkarlar Janr - Daha çox Mahnı Qarışıq lentlər Qarışıq lent @@ -76,7 +74,6 @@ Alboma keç Baxış Paylaş - Əlavə et Səsləndir Çeşidləmə üsulu Göstəriş diff --git a/app/src/main/res/values-be/strings.xml b/app/src/main/res/values-be/strings.xml index 2e83e80c0..3de57a7e6 100644 --- a/app/src/main/res/values-be/strings.xml +++ b/app/src/main/res/values-be/strings.xml @@ -23,7 +23,6 @@ Налады Просты, рацыянальны музычны плэер для Android. Маніторынг музычнай бібліятэкі - Выдаць Песні Змяніце тэму і колеры праграмы Ўсе песні @@ -88,7 +87,6 @@ Бітрэйт Частата дыскрэтызацыі Скінуць - Дадаць Вікі Захаваць Версія @@ -113,15 +111,11 @@ Папярэдні ўзмацняльнік ReplayGain Бібліятэка Кіруйце месцам загрузкі музыкі - Тэчкі Перасканаваць музыку Абнавіць музыку Перазагрузіце музычную бібліятэку, выкарыстоўваючы па магчымасці кэшаваныя тэгі Ачысціце кэш тэгаў і цалкам перазагрузіце музычную бібліятэку (павольней, але больш поўна) - Auxio патрабуецца дазвол на чытанне вашай музычнай бібліятэкі - Музыка не знойдзена Памылка загрузкі музыкі - Няма тэчак Гэтая папка не падтрымліваецца Кампазіцыя %d Перамясціць песню ў чаргу @@ -133,7 +127,6 @@ Значок Auxio Ўключыце або выключыце перамешванне Выдаліць гэтую песню з чаргі - Перамяшаць усе песні Спыніць прайграванне Адкрыйце чаргу Ачысціць пошукавы запыт @@ -148,7 +141,6 @@ Без даты Няма дарожкі MPEG-1 аўдыё - Matroska аўдыё Музыка не грае MPEG-4 аўдыё Чырвоны @@ -279,7 +271,6 @@ Напрамак Абярыце малюнак Абярыце - Дадаткова Скапіравана Інфармацыя пра памылку Справаздача пра памылку diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 54296b712..a3f06d667 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -76,7 +76,6 @@ Използвай съвместими с Windows пътища Прост, рационален музикален плейър за android. Зарежда се музика - Още Албуми EP на живо Сингъл наживо @@ -97,7 +96,6 @@ Сега се изпълнява ReplayGain Регулиране на песента Разбъркай всички - Добави Относно Абсолютно EPs @@ -186,7 +184,6 @@ Нормализация на звука ReplayGain стратегия Изключено - Предоставяне Дарете за проекта, за да бъде добавено името ви тук! Търсене във вашата библиотека… Персонализирано действие на лентата за възпроизвеждане @@ -210,20 +207,15 @@ Библиотека Музикални папки Управлявайте откъде да се зарежда музиката - Папки Обновяване на музика - Няма намерена музика Неуспешно зареждане на музика - Auxio се нуждае от разрешение, за да чете вашата музикална библиотека Плейлиста не може да се изнесе в този файл Няма намерено приложение, което да може да се справи с тази задача - Няма папки Изпълни или пауза Премини към следваща песен Премини към последна песен Промени режима на повторение Включи или изключи разбъркване - Разбъркай всички песни Спри възпроизвеждането Премахни тази песен Премести тази песен @@ -255,7 +247,6 @@ MPEG-1 audio MPEG-4 audio Ogg audio - Matroska audio Розово Червено Лилаво diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 386ec94e2..abd9a21c8 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -7,7 +7,6 @@ Načítání vaší hudební knihovny… Zkusit znovu - Udělit Žánry Umělci Alba @@ -42,7 +41,6 @@ OK Zrušit - Přidat Uložit O aplikaci Verze @@ -90,11 +88,8 @@ Obnovit hudbu Znovu načíst hudební knihovnu, pokud možno s použitím značek uložených v mezipaměti - Nenalezena žádná hudba Načítání hudby selhalo - Auxio potřebuje oprávnění ke čtení vaší hudební knihovny Nebyla nalezena žádná aplikace, která by dokázala vykonat tuto akci - Žádné složky Tato složka není podporována Prohledat vaší knihovnu… @@ -105,7 +100,6 @@ Přeskočit na předchozí skladbu Změnit režim opakování Vypnout nebo zapnout náhodné přehrávání - Náhodně přehrávat vše Odebrat tuto skladbu z fronty Přesunout tuto skladbu ve frontě Přesunout tuto kartu @@ -167,7 +161,6 @@ Zvuk MPEG-1 Zvuk MPEG-4 Zvuk Ogg - Zvuk Matroska Advanced Audio Coding (AAC) Free Lossless Audio Codec (FLAC) %d kbps @@ -246,7 +239,6 @@ Wiki %1$s, %2$s Obnovit - Složky Normalizace hlasitosti Chování Změnit motiv a barvy aplikace @@ -290,7 +282,6 @@ Seřadit podle Výběr obrázku Výběr - Další Informace o chybě Zkopírovat Nahlásit @@ -341,4 +332,7 @@ Vaši umělci se zobrazí zde. Vaše seznamy skladeb se zobrazí zde. Vaše žánry se zobrazí zde. - \ No newline at end of file + Zahrnout skryté soubory + Zahrnout skryté zvukové soubory (např. .cache) + Původní + diff --git a/app/src/main/res/values-cy/strings.xml b/app/src/main/res/values-cy/strings.xml index c2f6fb9f0..5afb2eda0 100644 --- a/app/src/main/res/values-cy/strings.xml +++ b/app/src/main/res/values-cy/strings.xml @@ -4,7 +4,6 @@ Llwytho cerddoriaeth Yn monitro llyfrgell cerddoriaeth Ceisio eto - Caniatáu Caneuon Cân Holl ganeuon @@ -24,7 +23,6 @@ Tapiau cymysgiad Tâp cymysgiad Chwaraewr cerddoriaeth syml a synhwyrol. - Mwy EP ail-gymysgiad Enw Dyddiad @@ -34,7 +32,6 @@ Trac Didoli Didoli gan - Ffolderi Rhestri chwarae Rhestr chwarae newydd Rhestr chwarae gwag @@ -89,7 +86,6 @@ Ffolderi cerddoriaeth Adnewyddu cerddoriaeth Trac %d - Chwarae pob cân ar hap Artist anhysbys Genre anhysbys Dim dyddiad @@ -157,7 +153,6 @@ Diddymu Cadw Ailosod - Ychwanegu Dull llwybr Defnyddio llwybrau Windows Ynghylch @@ -199,11 +194,8 @@ Ffafrio trac Ffafrio albwm Addasiad gyda thagiau - Ni chanfuwyd cerddoriaeth Methwyd llwytho cerddoriaeth - Mae ar Auxio angen caniatâd i ddarllen eich llyfrgell gerddoriaeth Methwyd dod o hyd ap sydd yn gallu gwneud y tasg hon - Dim ffolderi Neidio i\'r gân nesaf Neidio i\'r gân ddiwethaf Newid y modd ail-chwarae @@ -245,7 +237,6 @@ Tynnu\'r gân hon Agor y ciw Sain MPEG-4 - Sain Matroska Dileu %s? Ni fydd yn bosib dadwneud hyn. %d caneuon diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 6eaa0d219..1f05d2b5a 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -2,7 +2,6 @@ Erneut versuchen - Gewähren Genres Künstler Alben @@ -24,9 +23,7 @@ Der Warteschlange hinzugefügt Zum Künstler gehen Zum Album gehen - Hinzufügen Speichern - Keine Ordner Über Version Quellcode @@ -64,9 +61,7 @@ Musik neu laden Musikbibliothek neu laden, verwendet gecachte Tags wenn möglich - Keine Musik gefunden Laden der Musik fehlgeschlagen - Auxio benötigt die Berechtigung, um deine Musikbibliothek zu lesen Es konnte keine App gefunden werden, die diese Aufgabe übernehmen kann Das Verzeichnis wird nicht unterstützt @@ -129,7 +124,6 @@ Bibliotheks-Registerkarten Sichtbarkeit und Ordnung der Bibliotheksregisterkarten ändern Name - Alle Lieder zufällig Lied in der Warteschlange löschen Tab versetzen Unbekannter Künstler @@ -158,7 +152,6 @@ Ogg-Audio MPEG-4-Audio MPEG-1-Audio - Matroska-Audio Advanced Audio Coding (AAC) Free Lossless Audio Codec (FLAC) %d kB/s @@ -244,7 +237,6 @@ Musik Bilder Bibliothek - Ordner Wiedergabe Ton und Wiedergabeverhalten konfigurieren Lautstärkenormalisierung @@ -281,7 +273,6 @@ Sortieren nach Auswahl-Bild Auswahl - Mehr Kopiert Melden Fehlerinformation @@ -332,4 +323,7 @@ Deine Lieder werden hier angezeigt. Deine Genres werden hier angezeigt. Deine Künstler werden hier angezeigt. - \ No newline at end of file + Unverändert + Audio-Dateien einbeziehen, die versteckt sind (z. B. .cache) + Versteckte Dateien einbeziehen + diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 6f379565b..a4bbc2bb2 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -2,7 +2,6 @@ Προσπάθεια εκ νέου - Χορήγηση Είδη Καλλιτέχνες Άλμπουμ @@ -75,10 +74,8 @@ Καλλιτέχνες που φορτώθηκαν: %d Έτος Δίσκος - Δεν βρέθηκε καθόλου μουσική Η φόρτωση μουσικής απέτυχε %d kbps - Πρόσθεση Ιδιότητες τραγουδιού Προβολή Ιδιοτήτων Στατιστικά συλλογής @@ -95,7 +92,6 @@ Όνομα Διάρκεια Συνολική διάρκεια: %s - Καθόλου φάκελοι Μια απλή, λογική εφαρμογή αναπαραγωγής μουσικής για Android. Φόρτωση μουσικής Προβολή και έλεγχος αναπαραγωγής μουσικής diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 99573f8c6..eec11937a 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -5,7 +5,6 @@ Ver y controlar la reproducción musical Reintentar - Permitir Géneros Artistas Álbumes @@ -22,38 +21,36 @@ Ascendente En reproducción Reproducir - Mezcla + Modo aleatorio Reproducir todo Reproducir por álbum Reproducir por artista Cola Reproducir siguiente - Agregar a la cola - Agregado a la cola + Añadir a la cola + Añadido a la cola Ir al artista Ir al álbum - Agregar Guardar - Sin carpetas Acerca de Versión Código fuente Licencias Desarrollado por Alexander Capehart - Ajustes - Aspecto y Comportamiento + Configuración + Aspecto y comportamiento Tema Automático Claro Oscuro - Esquema de color + Combinación de colores Tema negro Usar un tema completamente negro Pantalla Pestañas de la biblioteca Cambiar visibilidad y orden de las pestañas de la biblioteca - Carátulas redondeadas + Modo redondeado Habilitar las esquinas redondeadas en los elementos adicionales de la interfaz del usuario (requiere que las portadas de los álbumes estén redondeadas) Usar acciones de notificación personalizadas Sonido @@ -73,13 +70,11 @@ Actualizar música Recargar la biblioteca musical, utilizando las etiquetas en caché cuando sea posible - No se ha encontrado música Falló la carga de música - Auxio necesita permiso para leer su biblioteca de música No se encontró ninguna aplicación que pueda manejar esta tarea - Directorio no soportado + No se admite esta carpeta - Buscar en la biblioteca… + Buscar en la fonoteca… Pista %d Reproducir o pausar @@ -87,7 +82,6 @@ Saltar a la última canción Cambiar modo de repetición Activar o desactivar mezcla - Mezclar todas las canciones Quitar canción de la cola Mover canción en la cola Mover pestaña @@ -142,13 +136,12 @@ Ver propiedades Mezclar Mezclar todo - De acuerdo + Aceptar Estadísticas de la biblioteca Ajuste sin etiquetas Advertencia: Cambiar el pre-amp a un valor alto puede resultar en picos en algunas pistas de audio. Reproducir desde el elemento que se muestra - Audio matroska - Free Losless Audio Codec (FLAC) + Códec de audio sin pérdida libre (FLAC) Advanced Audio Coding (AAC) Cargando tu biblioteca de música… (%1$d/%2$d) Artistas cargados: %d @@ -157,15 +150,15 @@ Número de canciones Recarga automática Recargar la biblioteca musical cada vez que cambie (requiere una notificación persistente) - Cargando tu librería de música… + Cargando la fonoteca… Cargando música - Monitorizando la librería de música - Monitorizando cambios en tu librería de música… - Audio ogg + Monitorizando la fonoteca + Monitorizando cambios en la fonoteca… + Audio Ogg Cuando se reproduce desde los detalles - Fecha de añadido + Fecha de adición Propiedades de la canción - Frecuencia de muestreo + Tasa de muestreo Cancelar Reproducción automática con auriculares Carpetas de música @@ -176,9 +169,9 @@ EP Sencillos Sencillo - Pista de audio - Álbum remix - Pistas de audio + Banda sonora + Álbum de remezclas + Bandas sonoras Mixtapes (recopilación de canciones) Mixtape (recopilación de canciones) Remezclas @@ -191,7 +184,7 @@ Álbumes cargados: %d Duración total: %s Álbum en directo - Single en directo + Sencillo en directo Compilación En directo Audio MPEG-1 @@ -199,9 +192,9 @@ %d kbps -%.1f dB EP en directo - Single remix + Sencillo remezclado Compilaciones - EP de remixes + EP de remezclas Abrir la cola Género Separadores de varios valores @@ -216,7 +209,7 @@ Mezcla de DJ Ecualizador Portadas de álbumes - Apagado + Desactivadas Modo de repetición Más (+) Signo et @@ -248,7 +241,6 @@ Imágenes Configurar el comportamiento del sonido y la reproducción Reproducción - Carpetas Cambiar el tema y los colores de la aplicación Personalizar los controles y el comportamiento de la interfaz de usuario Biblioteca @@ -260,17 +252,17 @@ Ignorar palabras como \"the\" al ordenar por nombre (funciona mejor con música en inglés) Nueva lista de reproducción Lista de reproducción %d - Agregar a la lista de reproducción + Añadir a la lista de reproducción Agregado a la lista de reproducción Lista de reproducción creada No hay canciones - Borrar - Cambiar el nombre - Cambiar el nombre de la lista de reproducción + Eliminar + Cambiar nombre + Cambiar nombre de lista de reproducción Lista de reproducción renombrada - Lista de reproducción borrada + Lista de reproducción eliminada ¿Borrar %s\? Esto no se puede deshacer. - ¿Borrar la lista de reproducción\? + ¿Quiere eliminar la lista de reproducción? Editar Editando %s Aparece en @@ -285,7 +277,6 @@ Dirección Selección de imágenes Selección - Más Información sobre el error Copiado Informar @@ -328,12 +319,15 @@ Álbum desconocido Desconocido El MPEG-4 contiene %s - Apple Lossless Audio Codec (ALAC) - Tus álbumes aparecerán aquí. - Tus artistas aparecerán aquí. - Tus géneros aparecerán aquí. + Códec de audio sin pérdida de Apple (ALAC) + Sus álbumes aparecerán aquí. + Sus artistas aparecerán aquí. + Sus géneros aparecerán aquí. Nueva carpeta - Tus listas de reproducción aparecerán aquí. - Tus canciones aparecerán aquí. + Sus listas de reproducción aparecerán aquí. + Sus canciones aparecerán aquí. Ahorra espacio + Original + Incluir ficheros de audio ocultos (ej. .cache) + Incluir ficheros ocultos diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index af1438fb0..3c3b17816 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -2,8 +2,6 @@ Muusika on laadimisel Jälgime muudatusi muusikakogus - Veel - Anna õigused Pala Albumid Album elavas esituses muusikaga @@ -57,7 +55,6 @@ Alusta taasesitust Katkesta Salvesta - Lisa Asukoha kuvamise viis Absoluutne Rakenduse teave @@ -243,19 +240,15 @@ Muusikakogu Muusika kaustad Halda kaustu, kust otsime ja laadime muusikat - Kaustad Värskenda muusika andmed Laadi muusikakogu uuesti ning kui võimalik, siis kasuta puhverdatud silte Laadi muusikakogu uuesti Kustuta puhverdatud siltide andmed ja laadi muusikakogu tervikuna uuesti (aeglasem, aga täpsem tulemus) - Muusikat ei leidu Muusika laadimine ei õnnestunud - Auxio vajab muusikakogu töötlemiseks õigust lugeda faile ja kaustu sinu nutiseadmes Sellest failist ei õnnestu esitusloendit importida Sellesse faili ei õnnestu esitusloendit eksportida Ei leidu selle ülesande täitmiseks sobilikku rakendust Lugu %d - Kaustu pole määratud See kaust pole toetatud Esita või peata Muuda kordamise režiimi @@ -265,7 +258,6 @@ Lõpeta taasesitus Ava esitusjärjekord Liiguta seda vahelehte - Sega kõik palad Eemalda see pala Tõsta see pala teise kohta Tühjenda otsinguajalugu @@ -288,7 +280,6 @@ Ogg Vorbis audio MPEG-1 audio MPEG-4 audio - Matroska audio Advanced Audio Coding (AAC) Laaditud palasid: %d Kas kustutame %s? Seda tegevust ei saa tagasi pöörata. @@ -324,4 +315,7 @@ Sinu žanrid saavad olema nähtavad siin. Sinu albumid saavad olema nähtavad siin. Sinu esitusloendid saavad olema nähtavad siin. + Kaasa peidetud failid + Kaasa peidetud helifailid (nt. .cache) + Sellisena, nagu ta on diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index cd35522f9..2729e5849 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -3,7 +3,6 @@ بارگیری موسیقی یک پخش کننده موسیقی ساده و منطقی برای اندروید. تلاش دوباره - اجازه دادن آلبوم آلبوم زنده آلبوم ریمیکس diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index c10ce2e6c..5a5993dc7 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -4,7 +4,6 @@ Musiikki latautuu Ladataan musiikkia Yritä uudelleen - Anna lupa Kappaleet Kaikki kappaleet Albumit @@ -51,7 +50,6 @@ Peruuta Tallenna Palauta oletus - Lisää Valvotaa musiikkikirjastoa muutosten varalta… Sekoita Sekoita kaikki @@ -70,7 +68,7 @@ Toista tyylilajista Moniarvoerottimet Ohita äänitiedostot, jotka eivät ole musiikkia, kuten podcastit - Ampersand (&) + Ampersand & Pilkku (,) Plus (+) Puolipiste (;) @@ -89,7 +87,6 @@ Määritä mistä musiikki tulee ladata Läpikäy musiikki uudelleen Tähän tehtävään kykenevää sovellusta ei löytynyt - Ei kansioita Raita %d Siirry seuraavaan kappaleeseen Muuta kertaustilaa @@ -106,7 +103,6 @@ MPEG-1-ääni MPEG-4-ääni Ogg-ääni - Matroska-ääni Advanced Audio Coding (AAC) Free Lossless Audio Codec (FLAC) Punainen @@ -165,10 +161,8 @@ Pyöristetty tila Elokuvamusiikit DJ-mixaukset - Auxio tarvitsee luvan lukea musiikkikirjastoa Asetukset Järjestä - Musiikkia ei löytynyt Wiki Harmaa Muuta sovelluksen teemaa ja värejä @@ -205,11 +199,9 @@ Automaattitoisto kuulokkeilla Aloita aina toisto, kun kuulokkeet yhdistetään (ei välttämättä toimi kaikilla laitteilla) Siirry viimeiseen kappaleeseen - Kansiot Toista tai keskeytä Tämä kansio ei ole tuettu Sekoitus päällä/pois - Sekoita kaikki kappaleet Siirry tätä välilehteä Tyhjennä hakuehto Esittäjän %s kuva @@ -250,7 +242,6 @@ Tyhjennä tunnistevälimuisti ja lataa musiikkikirjasto kokonaan uudelleen (hitaampi mutta kattavampi) Kappale Näytä - Lisää Kopioitu Ilmoita virheestä Valinta diff --git a/app/src/main/res/values-fil/strings.xml b/app/src/main/res/values-fil/strings.xml index f7c9d50a7..36d92e856 100644 --- a/app/src/main/res/values-fil/strings.xml +++ b/app/src/main/res/values-fil/strings.xml @@ -51,7 +51,6 @@ Tulin ng mga bit Tulin ng sample Haluin - Idagdag I-save Tungkol Ulat @@ -88,7 +87,6 @@ Live Hanapin Mga Single - Bigyan Mga Genre Tignan at ayusin ang pagtugtog ng kanta Tema diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index bff206f2b..fe5d67b14 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -2,7 +2,6 @@ Réessayer - Accorder Genres Artistes Albums @@ -38,7 +37,6 @@ Audio Comportement - Pas de musique trouvée Morceau %d Lecture ou pause @@ -85,7 +83,6 @@ Annuler Enregistrer Taille - Ajouter Affichage Onglets de la bibliothèque Un lecteur de musique simple et rationnel pour Android. @@ -125,13 +122,11 @@ Album de remix Genre Égaliseur - Lecture aléatoire de tous les titres Icône Auxio Couverture de l\'album Genre inconnu Dynamique Cyan - Aucun dossier Supprimer le dossier Artiste inconnu Compilation en direct @@ -200,13 +195,11 @@ Stratégie de normalisation de volume Par chanson Par album - Dossiers Par album si un album est en lecture Bibliothèque Actualiser la musique Effacer le cache des étiquettes et recharger entièrement la bibliothèque musicale (lent, mais plus complet) Aucune application trouvée qui puisse gérer cette tâche - Auxio a besoin de permissions pour lire votre bibliothèque musicale Tri intelligent Ignorer les nombres ou certains mots comme \"the\" en début de nom lors du tri (fonctionne au mieux avec de la musique en anglais) Scanner à nouveau la musique @@ -222,7 +215,6 @@ %d Hz Passer à la dernière chanson Ajouter à la liste de lecture - Audio Matroska Artistes chargés : %d Rembobiner avant de revenir en arrière Image d\'artiste pour %s @@ -283,7 +275,6 @@ Trier par Direction Sélection - En savoir plus Copié Signaler Info sur l\'erreur diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 765e7879d..eb68df5f4 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -14,7 +14,6 @@ Sinxelo Compilacións Compilación - Permitir Álbums Sinxelo remix Volver a intentar @@ -93,7 +92,6 @@ Ver as propiedades Propiedades da canción Gardar - Engadir Licenzas Engadido á cola Personalizar @@ -162,7 +160,6 @@ Borrar a caché das etiquetas a recargar completamente a biblioteca de música (máis lento, pero máis completo) Cambiar o modo de repetición Activar ou desactivar a mezcla - Mezclar todas as cancións Deter a reprodución Abrir a cola Borrar o historial de busca @@ -179,9 +176,7 @@ Audio MPEG-1 Audio MPEG-4 Fallou a carga de música - Auxio necesita permiso para leer a túa biblioteca de música Non se atopou ningunha aplicación que poda facer esta tarefa - Sen cartafois Audio ogg Advanced Audio Coding (AAC) Free Lossless Audio Codec (FLAC) @@ -227,12 +222,9 @@ Ignorar palabras como \"the\" ao ordenar por nome (funciona mellor con música en inglés) Xestionar dende onde se carga a música Pausar cando se repite unha canción - Cartafois Ningunha pista Saltar á última canción - Sen música Pista %d - Audio Matroska Mixtapes (compilación de cancións) Mixtapes (compilación de cancións) Remix diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index bba044624..ea3995d17 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -2,7 +2,6 @@ पुन: प्रयास करें - अनुदान कलाकार एल्बम गीत @@ -31,7 +30,6 @@ ऑडियो चाल चलन - कोई संगीत नहीं मिला चलाएं/रोकें @@ -141,7 +139,6 @@ %d कलाकार संगीत लाइब्रेरी की निगरानी - जोड़ें ईपी नाम बदलें अर्धविराम (;) @@ -202,12 +199,10 @@ जब कोई गीत दोहराया जाता है तो रुक जाएं रीप्लेगेन प्री-एम्प टैग के साथ समायोजन - फ़ोल्डर संगीत लोड करना विफल रहा यह फ़ोल्डर समर्थित नहीं है रिपीट मोड बदलें शफ़ल चालू या बंद करें - सभी गीत शफ़ल करें प्लेबैक बंद करो इस गीत को इस स्थानांतरित करें अज्ञात शैली @@ -261,8 +256,6 @@ वापस जाने से पहले रिवाइंड करें ट्रैक को प्राथमिकता दें टैग कैश साफ़ करें और संगीत लाइब्रेरी को पूरी तरह पुनः लोड करें (धीमी, लेकिन अधिक पूर्ण) - Auxio को आपकी संगीत लाइब्रेरी पढ़ने के लिए अनुमति की आवश्यकता है - कोई फ़ोल्डर नहीं भूरा पीला नींबू रंग @@ -271,7 +264,6 @@ अगले गाने पर जाएं ऑक्सियो आइकन Ogg ऑडियो - Matroska ऑडियो गुलाबी बुद्धिमान छंटाई संख्याओं या \"the\" जैसे शब्दों से शुरू होने वाले नामों को सही ढंग से क्रमबद्ध करें (अंग्रेजी भाषा के संगीत के साथ सबसे अच्छा काम करता है) @@ -283,7 +275,6 @@ त्रुटि की जानकारी रिपोर्ट करें कापी किया गया - और कोई एल्बम नहीं डेमो डेमो diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index d5cea9257..0601971ad 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -48,7 +48,6 @@ Izmiješaj sve U redu Odustani - Dodaj Spremi O Inačica @@ -87,16 +86,12 @@ Upravljaj odakle će se glazba učitati Automatsko ponovno učitavanje Ponovo učitaj svoju zbirku glazbe čim se dogode promjene (zahtijeva stalno obavještavanje) - Nijedna glazba nije pronađena Greška u učitvanju glazbe - Auxio treba dozvolu za čitanje tvoje zbirke glazbe Nijedna aplikacija ne može obraditi ovaj zadatak - Nema mapa Ova mapa nije podržana Pretraži svoju zbirku … Zvučni zapis %d Omogućite ili onemogućite miješanje - Izmiješaj sve pjesme Ukoni ovu pjesmu iz popisa pjesama Premjesti ovu pjesmu u popisu pjesama Pomakni ovu karticu @@ -158,7 +153,6 @@ Pokušaj ponovo Učitavanje glazbe Prikaži i upravljaj reprodukcijom glazbe - Dozvoli Singl uživo Singl remiks Singl @@ -191,7 +185,6 @@ Preskoči na prethodnu pjesmu Promijeni način ponavljanja Ljubičasto - Matroska zvuk Otvori redoslijed Žanr Zarez (,) @@ -233,7 +226,6 @@ %1$s, %2$s Resetiraj Normalizacija glasnoće - Mape Silazno Promijenite temu i boje aplikacije Prilagodite kontrole i ponašanje korisničkog sučelja @@ -276,7 +268,6 @@ Smjer Slika odabira Odabir - Više Podaci greške Prijavi Kopirano diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index ea06a90e6..b179042d2 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -2,7 +2,6 @@ Újra - Engedélyez Műfajok Előadók Albumok @@ -37,7 +36,6 @@ Hang Testreszabás - Nem található zene Keresés a könyvtárban… @@ -112,7 +110,6 @@ DJ Mix Műfaj Dal tulajdonságai - Nincs mappa Tiszta fekete sötét téma használata Dinamikus Album borítók @@ -163,7 +160,6 @@ Lejátszólista átnevezés Átnevez Hozzáadás dátuma - Mappák Ment Alaphelyzet Fejlesztő Alexander Capehart @@ -185,7 +181,6 @@ Nincs dátum Gyors A nem zenei anyagok kizárása - Keverés minden dalból Ogg audio Megjelenítés Hangsáv @@ -206,7 +201,6 @@ Zene könyvtár figyelése Lejátszás megállítása Egyszerű, praktikus zenelejátszó androidra. - Matroska hang Album Kislemezek Kislemez @@ -222,7 +216,6 @@ Keverés Előadó Remixek - Hozzáad +%.1f dB Per jel (/) @@ -266,7 +259,6 @@ Megjelenik itt, Megoszt Lejátszólista törlése\? - Az Auxio engedélyt kér a zenei könyvtár olvasásához Távolítsa el ezt a dalt Auxio ikon Nincs lemez @@ -280,7 +272,6 @@ Rendezés Kiválasztás Kép kiválasztás - További Másolva Jelentés Hiba információ diff --git a/app/src/main/res/values-ia/strings.xml b/app/src/main/res/values-ia/strings.xml index 693501bfe..3aa7ad135 100644 --- a/app/src/main/res/values-ia/strings.xml +++ b/app/src/main/res/values-ia/strings.xml @@ -2,8 +2,6 @@ Cargante le musica Retentar - Plus - Conceder Cantos Canto Tote le cantos @@ -45,7 +43,6 @@ Reproducer Reproducer sequente Adder al cauda - Adder Version Codice fonte Wiki @@ -119,7 +116,6 @@ Reproducer ab le elemento mostrate Reproducer ab artista Mantener le reproduction aleatori al reproducer un nove canto - Auxio besonia permission pro leger tu bibliotheca de musica Genere incognite Generes cargate: %d Imagine de genere ab %s @@ -139,11 +135,8 @@ Reproduction Rememorar le pausa Dossieres de musica - Dossieres Actualisar le musica - Nulle musica trovate Falleva le carga del musica - Necun dossieres Iste dossier non es supportate Tracia %d Reproducer o pausar @@ -164,7 +157,6 @@ Audio MPEG-4 Audio MPEG-1 Audio Ogg - Audio Matroska Free Lossless Audio Codec (FLAC) Advanced Audio Coding (AAC) %d seligite diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index d0c9761fd..a62eee844 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -2,7 +2,6 @@ Coba lagi - Izinkan Aliran Artis Album @@ -38,7 +37,6 @@ Personalisasi Ingat daftar putar acak - Musik tidak ditemukan Telusuri pustaka Anda… @@ -55,7 +53,6 @@ Laju bit OK Batal - Tambah Simpan Tema hitam Gunakan tema gelap hitam murni @@ -136,14 +133,11 @@ Penyesuaian tanpa tag Folder musik Putar dari artis - Auxio memerlukan izin untuk membaca perpustakaan musik Anda Loncat ke lagu terakhir - Acak semua lagu Tidak ada tanggal Pemuatan musik gagal Sampul album untuk %s Artis tidak dikenal - Tidak ada folder Loncat ke lagu berikutnya Hapus folder Ikon Auxio @@ -157,7 +151,6 @@ Total durasi: %s Gambar genre untuk %s Genre tidak diketahui - Audio Matroska Hijau tua Kuning Audio MPEG-4 @@ -187,7 +180,6 @@ Nonaktif Cepat Album remix - Folder Memuat musik Memantau pustaka musik Memantau perubahan pada pustaka musik Anda… @@ -207,7 +199,6 @@ EP Live Kompilasi Kaset campuran - Lainnya Soundtrack Album live diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 7d2fe3d74..223158f1a 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -5,7 +5,6 @@ Visualizza e gestisci la riproduzione musicale Riprova - Autorizza Generi Artisti Album @@ -32,9 +31,7 @@ Aggiungi alla coda Vai all\'artista Vai all\'album - Aggiungi Salva - Nessuna cartella Informazioni Versione Codice sorgente @@ -42,7 +39,7 @@ Alexander Capehart Statistiche della libreria - Opzioni + Impostazioni Aspetto Tema Sistema @@ -76,9 +73,7 @@ Aggiorna libreria Ricarica la libreria musicale, usando i tag nella cache quando possibile - Musica non trovata Caricamento musica fallito - Auxio ha bisogno del permesso per leggere la tua libreria musicale Nessuna app può completare questa azione Questa cartella non è supportata @@ -90,7 +85,6 @@ Passa all\'ultimo brano Cambia modalità ripetizione Attiva o disattiva la riproduzione casuale - Riproduce casualmente tutti i brani Rimuovi questo brano Sposta questo brano Sposta questa scheda @@ -157,7 +151,6 @@ Riproduci dall\'elemento corrente Gestisci le cartelle da dove caricare la musica Cartelle musicali - Matroska audio Free Lossless Audio Codec (FLAC) Advanced Audio Coding (AAC) Disco %d @@ -242,7 +235,6 @@ %1$s, %2$s Ripristina Comportamento - Cartelle Musica Immagini Libreria @@ -285,7 +277,6 @@ Playlist esterna Impossibile esportare la playlist in questo file Ordine - Espandi Selezione immagine Selezione Copiato @@ -330,8 +321,11 @@ Le tue playlist appariranno qui. Espandi Nuova cartella - Libera spazio + Bassa qualità MPEG-4 contenente %s Apple Lossless Audio Codec (ALAC) Sconosciuto + Qualità originale + Include file audio nascosti (per esempio in .cache) + Includi file nascosti diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index 8b9ad9827..5bac78150 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -55,7 +55,6 @@ ביטול שמירה אתחול - הוספה גרסה קוד מקור ויקי @@ -156,7 +155,6 @@ המגבר מוחל על ההתאמה הקיימת בזמן השמעה רשימת השמעה חדשה הוספה לרשימת השמעה - הענק רשימת השמעה (פלייליסט) רשימות השמעה מחיקה @@ -168,7 +166,6 @@ תיקיות מוזיקה טעינה מחדש של ספריית המוזיקה, במידה וניתן ייעשה שימוש בתגיות מהמטמון סריקת מוסיקה מחדש - ‏ Auxio צריך הרשאות על מנת לקרוא את ספריית המוזיקה שלך פתיחת התור משך כולל: %s רשימת השמעה %d @@ -178,7 +175,6 @@ ז\'אנרים טעונים: %d ספריה לא נמצא יישום שיכול לטפל במשימה זו - אין תיקיות תיקייה זו אינה נתמכת דילוג לשיר האחרון שינוי מצב חזרה @@ -203,14 +199,12 @@ אין שירים ורוד נוצרה רשימת השמעה - תיקיות אומן אחד שני אומנים %d אומנים רענון מוזיקה - לא נמצאה מוזיקה אירע כשל בטעינה מוזיקה עטיפת אלבום @@ -226,7 +220,6 @@ שונה שם רשימת ההשמעה רשימת השמעה נמחקה נוסף לרשימת השמעה - ערבוב כל השירים סמל Auxio הסרת תיקייה תמונת רשימת השמעה עבור %s @@ -262,7 +255,6 @@ טורקיז חום %d נבחרו - עוד בחירה מידע על השגיאה דיווח @@ -275,7 +267,6 @@ %d הרץ (Hz) %d קילוביטים לשנייה (kbps) מועתק - אודיו Matroska קודק אודיו מתקדם (AAC) %1$s, %2$s ליים diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 8004f19ff..b8e67554a 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -2,7 +2,6 @@ 再試行 Android 用のシンプルで合理的な音楽プレーヤー。 - 許可する アーティスト ジャンル 曲の長さ @@ -26,12 +25,10 @@ 日付け 高クオリティ ラウンドモード - 音楽が見つかりません 音楽の読み込みに失敗 Ogg オーディオ シアン - 追加 保存 ライブラリ検索… 暗い @@ -78,8 +75,6 @@ トラックを優先 音楽の読み込み元を管理 音楽の再読み込み - Auxio は音楽ライブラリを読む許可を必要とします - フォルダがありません このフォルダはサポートされていません トラック %d 再生またはポーズ @@ -149,7 +144,6 @@ このタスクを実行できるアプリが見つかりません コンテンツ 音楽の再スキャン - Matroska オーディオ 高度なオーディオ コーデック (AAC) 品質を損なうことのない無料のオーディオ コーデック (FLAC) グレイ @@ -176,13 +170,11 @@ ポーズと繰り返し ライブラリ タグ無しで調整 - フォルダ セミコロン (;) スラッシュ (/) 繰り返しモードを変更 シャフルのオン・オフ 次の曲にスキップ - すべての曲をシャフル %d ヘルツ %d kbps タグで調整 diff --git a/app/src/main/res/values-ka/strings.xml b/app/src/main/res/values-ka/strings.xml index 1c02fbacb..1e94b12ef 100644 --- a/app/src/main/res/values-ka/strings.xml +++ b/app/src/main/res/values-ka/strings.xml @@ -1,7 +1,6 @@ გამეორება - მეტი EP მარტივი და სასიამოვნო მუსიკის დამკვრელი Android-სთვის. სიმღერა @@ -9,7 +8,6 @@ მუსიკის ჩატვირთვა სიმღერები მუსიკის ბიბლიოთეკის მონიტორინგი - ავტორიზაცია ალბომები EP-ები ყველა სიმღერა @@ -66,7 +64,6 @@ სიმღერის პარამეტრები პარამეტრების ნახვა ზომა - დამატება მეტი გაუქმება შენახვა @@ -102,8 +99,6 @@ ავტომატური ჩატვირთვა სურათები მუსიკის საქაღალდე - საქაღალდეები ახალი საქაღალდე - სიმღერები ვერ მოიძებნა ბოლო სიმღერაზე გადასვლა diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index bd47b3560..0554e1575 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -5,7 +5,6 @@ 음악 재생 제어 및 상태 확인 다시 시도 - 허용 장르 아티스트 앨범 @@ -40,7 +39,6 @@ 확인 취소 - 추가 저장 정보 버전 @@ -88,11 +86,8 @@ 음악 새로고침 캐시된 태그를 사용하여 음악 라이브러리를 다시 불러옵니다. - 음악 없음 음악 불러오기 실패 - 앱에서 음악 라이브러리를 읽을 수 있는 권한이 필요합니다. 이 작업을 처리할 수 있는 앱을 찾을 수 없습니다. - 폴더 없음 지원하지 않는 폴더입니다 라이브러리에서 검색… @@ -103,7 +98,6 @@ 마지막 곡으로 건너뛰기 반복 방식 변경 무작위 재생 켜기 또는 끄기 - 모든 곡 무작위 재생 이 곡 제거 이 곡 이동 이 탭 이동 @@ -163,7 +157,6 @@ 모두 무작위 재생 재생 중지 Ogg 오디오 - Matroska 오디오 %d Hz DJ믹스 라이브 컴필레이션 @@ -240,7 +233,6 @@ ReplayGain 볼륨 조정 사운드 및 재생 동작 구성 재생 - 폴더 앱 테마 및 색상 변경 음악 라이브러리 @@ -281,7 +273,6 @@ 정렬 기준 선택 이미지 선택 - 더 보기 복사했습니다. 오류 보고 오류 정보 diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index c7e5d0f38..f834bc17f 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -38,7 +38,6 @@ Dainos ypatybės Išsaugoti Apie - Pridėti Išvaizda ir pojūtis Formatas Versija @@ -50,7 +49,6 @@ Peržiūrėk ir valdyk muzikos įrašo perklausą Žanrai Pakartoti - Suteikti Įkeliama muzika Įkeliamas tavo muzikos biblioteka… Bibliotekos statistika @@ -114,7 +112,6 @@ Gyvai mini albumas Remikso mini albumas MPEG-4 garsas - Matroska garsas Gyvai albumas Remikso albumas Gyvai @@ -122,7 +119,6 @@ Ogg garsas Aleksandras Keiphartas (angl. Alexander Capehart) Pageidauti takeliui - Nėra aplankų Šis aplankas nepalaikomas. Leisti arba pristabdyti Praleisti į kitą dainą @@ -138,7 +134,6 @@ Perkelti šią dainą Perkelti šį skirtuką Nepavyko įkelti muzikos. - „Auxio“ reikia leidimo skaityti tavo muzikos biblioteką. %d diskas +%.1f dB -%.1f dB @@ -159,7 +154,6 @@ Ieškok savo bibliotekoje… Ekvalaizeris Automatinis perkėlimas - Muzika nerasta. Sustabdyti įrašo perklausą Nėra takelio Praleisti į kitą @@ -179,7 +173,6 @@ Įkelti albumai: %d Įkelti atlikėjai: %d Įkėliamas tavo muzikos biblioteka… (%1$d/%2$d) - Maišyti visas dainas Suasmeninti Įspėjimas: keičiant išankstinį stiprintuvą į didelę teigiamą reikšmę, kai kuriuose garso takeliuose gali atsirasti tarpų. Albumo viršelis %s @@ -245,7 +238,6 @@ Vaizdai Įrašo perklausa Garso normalizavimas - Aplankai Mažėjantis Teisingai surūšiuok pavadinimus, kurie prasideda skaičiais arba žodžiais, tokiais kaip „the“ (geriausiai veikia su anglų kalbos muzika). Išmanusis rūšiavimas @@ -281,7 +273,6 @@ Pasirinkimas Klaidos informacija Nukopijuota - Daugiau Pranešti Nėra albumų Demo versija @@ -330,4 +321,7 @@ „Apple“ be nuostolių garso kodekas (ALAC) Nežinomas Išsaugoti vietos - \ No newline at end of file + Kaip yra + Įtraukti paslėptus failus + Įtraukite garso failus, kurie paslėpti (pvz., .cache) + diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index f363362d8..744e33f5e 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -3,7 +3,6 @@ രക്ഷിക്കുക പെരുമാറ്റം ഉള്ളടക്കം - സംഗീതമൊന്നും കണ്ടെത്തിയില്ല വരി തുറക്കുക അജ്ഞാത കലാകാരൻ ചാരനിറം @@ -23,7 +22,6 @@ അടുത്തത് കളിക്കുക രൂപകല്പന വലിപ്പം - ചേർക്കുക ശരി റദ്ദാക്കുക വെളിച്ചം @@ -71,7 +69,6 @@ സംഗീതം ലോഡ് ചെയ്യുന്നു സംഗീത ഗ്രന്ഥശാല നിരീക്ഷിക്കുന്നു വീണ്ടും ശ്രമിക്കുക - അനുവദിക്കുക ഗാനങ്ങൾ പാട്ടുകളുടെ എണ്ണം തീയതി ചേർത്തു diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index cb76f29f3..81ef9a412 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -109,7 +109,6 @@ Spor innlastet: %d Dato Endre drakten og programfargene - Mapper Gul Intelligent sortering Gi nytt navn @@ -119,7 +118,6 @@ Versjon Wiki Tilbakestill - Legg til Fargedrakt Svart drakt Bruk en helsvart mørk drakt @@ -136,7 +134,6 @@ Vis kun artister som er kreditert direkte på album (fungerer best med velmerkede bibliotek) Reskann musikk Last inn musikkbiblioteket igjen, ved bruk av hurtiglagrede etiketter når mulig - Ingen mapper Album innlastet: %d Bibliotekstatistikk Av @@ -151,7 +148,6 @@ Denne mappen støttes ikke Hopp til neste spor Hopp til siste spor - Omstokk alle spor Fjern mappe Ukjent sjanger Sjangerbilde for %s @@ -222,7 +218,6 @@ Beskjær alle albumomslag til 1:1-sideforhold Spill av eller pause Artistbilde for %s - Auxio trenger tilgang til å lese musikkbiblioteket ditt Rosa Grå Redigerer %s @@ -239,7 +234,6 @@ Live-singel Laster inn musikk Holder øye med musikkbiblioteket - Bevilge Singler Spor Album @@ -257,8 +251,6 @@ Laster inn musikkbiblioteket ditt … Ved avspilling fra bibliotek Spill fra artist - Fant ikke noe musikk - Matroska-lyd Spill fra vist element OGG-lyd Mørkeblå @@ -286,7 +278,6 @@ Kan ikke eksportere spillelisten til denne filen Demo Demoer - Vis mer Feilopplysninger Kopiert ReplayGain-albumjustering diff --git a/app/src/main/res/values-ne/strings.xml b/app/src/main/res/values-ne/strings.xml index 65aac81c4..663089e98 100644 --- a/app/src/main/res/values-ne/strings.xml +++ b/app/src/main/res/values-ne/strings.xml @@ -20,8 +20,6 @@ गीतहरु लोड गर्दै सङ्गीत लाइब्रेरी निगरानी गर्दै फोल्डर छान्नुहोस् - अझै - दिनुहोस् गीतहरु गीत सबै गीत diff --git a/app/src/main/res/values-night/colors_ui.xml b/app/src/main/res/values-night/colors_ui.xml index 87bd21bc7..971638013 100644 --- a/app/src/main/res/values-night/colors_ui.xml +++ b/app/src/main/res/values-night/colors_ui.xml @@ -24,7 +24,6 @@ #D8C2BE #A08C89 #534341 - #000000 #F1DEDC #392E2C #904A42 @@ -47,101 +46,6 @@ #271D1C #322826 #3D3231 - #FFBAB0 - #330503 - #CC7B70 - #000000 - #EBC1BB - #26100D - #AE8883 - #000000 - #E3C790 - #1F1500 - #A68E5B - #000000 - #FFBAB1 - #370001 - #FF5449 - #000000 - #1A1110 - #F1DEDC - #1A1110 - #FFF9F8 - #534341 - #DCC6C3 - #B39E9B - #927F7C - #000000 - #F1DEDC - #322826 - #74352D - #FFDAD5 - #2C0101 - #FFB4A9 - #5E241D - #FFDAD5 - #200B08 - #E7BDB7 - #4B2F2B - #FCDFA6 - #191000 - #DFC38C - #453409 - #1A1110 - #423735 - #140C0B - #231918 - #271D1C - #322826 - #3D3231 - #FFF9F8 - #000000 - #FFBAB0 - #000000 - #FFF9F8 - #000000 - #EBC1BB - #000000 - #FFFAF7 - #000000 - #E3C790 - #000000 - #FFF9F9 - #000000 - #FFBAB1 - #000000 - #1A1110 - #F1DEDC - #1A1110 - #FFFFFF - #534341 - #FFF9F8 - #DCC6C3 - #DCC6C3 - #000000 - #F1DEDC - #000000 - #4E1812 - #FFE0DB - #000000 - #FFBAB0 - #330503 - #FFE0DB - #000000 - #EBC1BB - #26100D - #FFE4AF - #000000 - #E3C790 - #1F1500 - #1A1110 - #423735 - #140C0B - #231918 - #271D1C - #322826 - #3D3231 - #FFB2BD #561D29 #72333F @@ -166,7 +70,6 @@ #D6C2C3 #9F8C8E #524345 - #000000 #F0DEDF #382E2F #8E4956 @@ -189,101 +92,6 @@ #261D1E #312829 #3D3233 - #FFB8C2 - #330310 - #C97A87 - #000000 - #E9C1C5 - #261014 - #AC888C - #000000 - #EFC393 - #241200 - #B08A5E - #000000 - #FFBAB1 - #370001 - #FF5449 - #000000 - #191112 - #F0DEDF - #191112 - #FFF9F9 - #524345 - #DBC6C7 - #B29EA0 - #917F80 - #000000 - #F0DEDF - #312829 - #733440 - #FFD9DD - #2C000B - #FFB2BD - #5D222F - #FFD9DD - #200B0E - #E5BDC1 - #4A2F33 - #FFDDB9 - #1D0E00 - #EABF8F - #4C300D - #191112 - #413738 - #140C0D - #22191A - #261D1E - #312829 - #3D3233 - #FFF9F9 - #000000 - #FFB8C2 - #000000 - #FFF9F9 - #000000 - #E9C1C5 - #000000 - #FFFAF8 - #000000 - #EFC393 - #000000 - #FFF9F9 - #000000 - #FFBAB1 - #000000 - #191112 - #F0DEDF - #191112 - #FFFFFF - #524345 - #FFF9F9 - #DBC6C7 - #DBC6C7 - #000000 - #F0DEDF - #000000 - #4E1623 - #FFDFE2 - #000000 - #FFB8C2 - #330310 - #FFDFE2 - #000000 - #E9C1C5 - #261014 - #FFE2C5 - #000000 - #EFC393 - #241200 - #191112 - #413738 - #140C0D - #22191A - #261D1E - #312829 - #3D3233 - #EBB5ED #49204E #613766 @@ -308,7 +116,6 @@ #D0C3CC #998D96 #4D444C - #000000 #EBDFE6 #352F34 #7B4E7F @@ -331,101 +138,6 @@ #231E23 #2E282D #393338 - #F0B9F1 - #2B0432 - #B280B4 - #000000 - #DCC3D9 - #1F1121 - #A08A9E - #000000 - #FABCB2 - #2C0C07 - #BA837A - #000000 - #FFBAB1 - #370001 - #FF5449 - #000000 - #171216 - #EBDFE6 - #171216 - #FFF9FA - #4D444C - #D4C7D1 - #AB9FA9 - #8B8089 - #000000 - #EBDFE6 - #2E282D - #633867 - #FFD6FE - #24002C - #EBB5ED - #4F2654 - #F4DBF1 - #1A0C1B - #D7BFD5 - #413142 - #FFDAD4 - #250704 - #F6B8AD - #532B25 - #171216 - #3E373D - #110D11 - #1F1A1F - #231E23 - #2E282D - #393338 - #FFF9FA - #000000 - #F0B9F1 - #000000 - #FFF9FA - #000000 - #DCC3D9 - #000000 - #FFF9F8 - #000000 - #FABCB2 - #000000 - #FFF9F9 - #000000 - #FFBAB1 - #000000 - #171216 - #EBDFE6 - #171216 - #FFFFFF - #4D444C - #FFF9FA - #D4C7D1 - #D4C7D1 - #000000 - #EBDFE6 - #000000 - #411947 - #FFDCFD - #000000 - #F0B9F1 - #2B0432 - #F9DFF6 - #000000 - #DCC3D9 - #1F1121 - #FFE0DB - #000000 - #FABCB2 - #2C0C07 - #171216 - #3E373D - #110D11 - #1F1A1F - #231E23 - #2E282D - #393338 - #D3BCFD #38265C #4F3D74 @@ -450,7 +162,6 @@ #CBC4CF #948F99 #49454E - #000000 #E7E0E8 #322F35 #68548E @@ -473,101 +184,6 @@ #211F24 #2C292F #36343A - #D7C0FF - #1D0840 - #9B86C4 - #000000 - #D1C6DF - #191325 - #968DA4 - #000000 - #F5BCC9 - #2B0B16 - #B68390 - #000000 - #FFBAB1 - #370001 - #FF5449 - #000000 - #151218 - #E7E0E8 - #151218 - #FFF9FF - #49454E - #CFC8D3 - #A7A1AB - #86818B - #000000 - #E7E0E8 - #2C292F - #513E75 - #EBDDFF - #18023B - #D3BCFD - #3E2C62 - #E9DEF8 - #140E20 - #CDC2DB - #3A3346 - #FFD9E1 - #250611 - #F0B7C5 - #512A36 - #151218 - #3B383E - #0F0D13 - #1D1B20 - #211F24 - #2C292F - #36343A - #FFF9FF - #000000 - #D7C0FF - #000000 - #FFF9FF - #000000 - #D1C6DF - #000000 - #FFF9F9 - #000000 - #F5BCC9 - #000000 - #FFF9F9 - #000000 - #FFBAB1 - #000000 - #151218 - #E7E0E8 - #151218 - #FFFFFF - #49454E - #FFF9FF - #CFC8D3 - #CFC8D3 - #000000 - #E7E0E8 - #000000 - #321F55 - #EEE2FF - #000000 - #D7C0FF - #1D0840 - #EEE2FC - #000000 - #D1C6DF - #191325 - #FFDFE5 - #000000 - #F5BCC9 - #2B0B16 - #151218 - #3B383E - #0F0D13 - #1D1B20 - #211F24 - #2C292F - #36343A - #BAC3FF #222C61 #394379 @@ -592,7 +208,6 @@ #C7C5D0 #90909A #46464F - #000000 #E4E1E9 #303036 #515B92 @@ -615,101 +230,6 @@ #1F1F25 #29292F #34343A - #C0C7FF - #050F46 - #848DC8 - #000000 - #C8C9E1 - #121526 - #8D8FA6 - #000000 - #EABEDC - #270C22 - #AC85A1 - #000000 - #FFBAB1 - #370001 - #FF5449 - #000000 - #121318 - #E4E1E9 - #121318 - #FDFAFF - #46464F - #CBC9D4 - #A3A2AC - #83828C - #000000 - #E4E1E9 - #292A2F - #3B447A - #DEE0FF - #000841 - #BAC3FF - #283267 - #E0E1F9 - #0D1021 - #C3C5DD - #323548 - #FFD7F1 - #21071D - #E6BAD7 - #4B2C43 - #121318 - #39393F - #0D0E13 - #1B1B21 - #1F1F25 - #29292F - #34343A - #FDFAFF - #000000 - #C0C7FF - #000000 - #FDFAFF - #000000 - #C8C9E1 - #000000 - #FFF9F9 - #000000 - #EABEDC - #000000 - #FFF9F9 - #000000 - #FFBAB1 - #000000 - #121318 - #E4E1E9 - #121318 - #FFFFFF - #46464F - #FDFAFF - #CBC9D4 - #CBC9D4 - #000000 - #E4E1E9 - #000000 - #1C255A - #E4E5FF - #000000 - #C0C7FF - #050F46 - #E4E5FE - #000000 - #C8C9E1 - #121526 - #FFDDF3 - #000000 - #EABEDC - #270C22 - #121318 - #39393F - #0D0E13 - #1B1B21 - #1F1F25 - #29292F - #34343A - #A1C9FD #003259 #1B4975 @@ -734,7 +254,6 @@ #C3C6CF #8D9199 #43474E - #000000 #E1E2E8 #2E3135 #37618E @@ -757,101 +276,6 @@ #1D2024 #272A2F #32353A - #A8CEFF - #00172E - #6B93C4 - #000000 - #BFCCDF - #0A1725 - #8592A4 - #000000 - #DCC2E8 - #200F2B - #A088AC - #000000 - #FFBAB1 - #370001 - #FF5449 - #000000 - #111418 - #E1E2E8 - #111418 - #FAFAFF - #43474E - #C7CBD3 - #9FA3AB - #7F838B - #000000 - #E1E2E8 - #272A2F - #1D4A76 - #D2E4FF - #001225 - #A1C9FD - #003863 - #D7E3F8 - #051220 - #BBC7DB - #2B3747 - #F3DAFF - #1A0926 - #D7BDE4 - #412F4D - #111418 - #36393E - #0B0E13 - #191C20 - #1D2024 - #272A2F - #32353A - #FAFAFF - #000000 - #A8CEFF - #000000 - #FAFAFF - #000000 - #BFCCDF - #000000 - #FFF9FB - #000000 - #DCC2E8 - #000000 - #FFF9F9 - #000000 - #FFBAB1 - #000000 - #111418 - #E1E2E8 - #111418 - #FFFFFF - #43474E - #FAFAFF - #C7CBD3 - #C7CBD3 - #000000 - #E1E2E8 - #000000 - #002B4F - #D9E8FF - #000000 - #A8CEFF - #00172E - #DBE8FC - #000000 - #BFCCDF - #0A1725 - #F6DFFF - #000000 - #DCC2E8 - #200F2B - #111418 - #36393E - #0B0E13 - #191C20 - #1D2024 - #272A2F - #32353A - #8BD0F0 #003546 #004D64 @@ -876,7 +300,6 @@ #C0C8CD #8A9297 #40484C - #000000 #DFE3E7 #2C3134 #136682 @@ -899,101 +322,6 @@ #1B2023 #262B2E #303538 - #90D4F4 - #001923 - #5499B7 - #000000 - #B8CEDA - #031922 - #7F949F - #000000 - #CBC6EF - #141231 - #908DB2 - #000000 - #FFBAB1 - #370001 - #FF5449 - #000000 - #0F1417 - #DFE3E7 - #0F1417 - #F7FBFF - #40484C - #C4CCD1 - #9CA4A9 - #7C8489 - #000000 - #DFE3E7 - #262B2E - #004E66 - #BEE9FF - #00131C - #8BD0F0 - #003B4E - #D0E6F2 - #00131C - #B4CAD6 - #253942 - #E3DFFF - #0F0D2B - #C6C2EA - #353353 - #0F1417 - #353A3D - #0A0F11 - #171C1F - #1B2023 - #262B2E - #303538 - #F7FBFF - #000000 - #90D4F4 - #000000 - #F7FBFF - #000000 - #B8CEDA - #000000 - #FEF9FF - #000000 - #CBC6EF - #000000 - #FFF9F9 - #000000 - #FFBAB1 - #000000 - #0F1417 - #DFE3E7 - #0F1417 - #FFFFFF - #40484C - #F7FBFF - #C4CCD1 - #C4CCD1 - #000000 - #DFE3E7 - #000000 - #002E3E - #C9ECFF - #000000 - #90D4F4 - #001923 - #D4EAF7 - #000000 - #B8CEDA - #031922 - #E8E4FF - #000000 - #CBC6EF - #141231 - #0F1417 - #353A3D - #0A0F11 - #171C1F - #1B2023 - #262B2E - #303538 - #83D2E4 #00363F #004E5A @@ -1018,7 +346,6 @@ #BFC8CB #899295 #3F484B - #000000 #DEE3E5 #2B3133 #006877 @@ -1041,101 +368,6 @@ #1B2122 #252B2C #303637 - #87D7E8 - #00191F - #4A9CAC - #000000 - #B6CFD5 - #01191E - #7C959B - #000000 - #C1C9EF - #0B1531 - #878FB3 - #000000 - #FFBAB1 - #370001 - #FF5449 - #000000 - #0E1416 - #DEE3E5 - #0E1416 - #F6FCFD - #3F484B - #C3CCCF - #9BA4A7 - #7B8587 - #000000 - #DEE3E5 - #252B2C - #00505C - #A4EEFF - #001418 - #83D2E4 - #003C46 - #CDE7ED - #001418 - #B2CBD1 - #223A3F - #DCE1FF - #060F2C - #BDC5EB - #2C3553 - #0E1416 - #343A3C - #090F11 - #171D1E - #1B2122 - #252B2C - #303637 - #F3FCFF - #000000 - #87D7E8 - #000000 - #F3FCFF - #000000 - #B6CFD5 - #000000 - #FCFAFF - #000000 - #C1C9EF - #000000 - #FFF9F9 - #000000 - #FFBAB1 - #000000 - #0E1416 - #DEE3E5 - #0E1416 - #FFFFFF - #3F484B - #F3FCFF - #C3CCCF - #C3CCCF - #000000 - #DEE3E5 - #000000 - #002F37 - #B4F1FF - #000000 - #87D7E8 - #00191F - #D2EBF2 - #000000 - #B6CFD5 - #01191E - #E1E6FF - #000000 - #C1C9EF - #0B1531 - #0E1416 - #343A3C - #090F11 - #171D1E - #1B2122 - #252B2C - #303637 - #82D5C7 #003731 #005048 @@ -1160,7 +392,6 @@ #BEC9C5 #899390 #3F4946 - #000000 #DDE4E1 #2B3230 #006B5F @@ -1183,101 +414,6 @@ #1A211F #252B2A #303634 - #87DACC - #001A17 - #4A9E92 - #000000 - #B5D0CA - #011A17 - #7C9690 - #000000 - #B1CEEA - #001829 - #7794AE - #000000 - #FFBAB1 - #370001 - #FF5449 - #000000 - #0E1513 - #DDE4E1 - #0E1513 - #F6FCF9 - #3F4946 - #C3CDCA - #9BA5A2 - #7B8582 - #000000 - #DDE4E1 - #252B2A - #005249 - #9EF2E3 - #001511 - #82D5C7 - #003E37 - #CCE8E2 - #001511 - #B1CCC6 - #223B36 - #CCE5FF - #001321 - #ADCAE5 - #1B394F - #0E1513 - #343B39 - #090F0E - #161D1B - #1A211F - #252B2A - #303634 - #EBFFFA - #000000 - #87DACC - #000000 - #EBFFFA - #000000 - #B5D0CA - #000000 - #F9FBFF - #000000 - #B1CEEA - #000000 - #FFF9F9 - #000000 - #FFBAB1 - #000000 - #0E1513 - #DDE4E1 - #0E1513 - #FFFFFF - #3F4946 - #F3FDF9 - #C3CDCA - #C3CDCA - #000000 - #DDE4E1 - #000000 - #00302B - #A3F6E8 - #000000 - #87DACC - #001A17 - #D1EDE6 - #000000 - #B5D0CA - #011A17 - #D4E9FF - #000000 - #B1CEEA - #001829 - #0E1513 - #343B39 - #090F0E - #161D1B - #1A211F - #252B2A - #303634 - #A2D399 #0C390E #255023 @@ -1302,7 +438,6 @@ #C2C8BD #8C9388 #424940 - #000000 #E0E4DA #2D322B #3C6838 @@ -1325,101 +460,6 @@ #1D211B #272B25 #323630 - #A6D89D - #001C02 - #6E9C67 - #000000 - #BED0B7 - #0C1A0A - #85957F - #000000 - #A5D3D8 - #001A1C - #6B989D - #000000 - #FFBAB1 - #370001 - #FF5449 - #000000 - #10140F - #E0E4DA - #10140F - #F9FCF2 - #424940 - #C6CDC1 - #9EA59A - #7F857A - #000000 - #E0E4DA - #272B25 - #265124 - #BDF0B3 - #001601 - #A2D399 - #133F14 - #D6E8CE - #071406 - #BACCB3 - #2B3A28 - #BCEBF0 - #001416 - #A0CFD4 - #073C41 - #10140F - #363A34 - #0B0F0A - #191D17 - #1D211B - #272B25 - #323630 - #F1FFE9 - #000000 - #A6D89D - #000000 - #F1FFE9 - #000000 - #BED0B7 - #000000 - #EFFEFF - #000000 - #A5D3D8 - #000000 - #FFF9F9 - #000000 - #FFBAB1 - #000000 - #10140F - #E0E4DA - #10140F - #FFFFFF - #424940 - #F7FDF0 - #C6CDC1 - #C6CDC1 - #000000 - #E0E4DA - #000000 - #043208 - #C1F4B7 - #000000 - #A6D89D - #001C02 - #DAECD2 - #000000 - #BED0B7 - #0C1A0A - #C0EFF4 - #000000 - #A5D3D8 - #001A1C - #10140F - #363A34 - #0B0F0A - #191D17 - #1D211B - #272B25 - #323630 - #B0D18B #1E3702 #334E17 @@ -1444,7 +484,6 @@ #C4C8BA #8E9285 #44483D - #000000 #E2E3D8 #2F312A #4A672D @@ -1467,101 +506,6 @@ #1E211A #282B24 #33362E - #B4D58F - #0B1A00 - #7B9A5A - #000000 - #C3CFB1 - #101907 - #89957A - #000000 - #A4D4D0 - #001A19 - #6B9996 - #000000 - #FFBAB1 - #370001 - #FF5449 - #000000 - #12140E - #E2E3D8 - #12140E - #FAFCF0 - #44483D - #C9CCBE - #A1A497 - #818578 - #000000 - #E2E3D8 - #282B24 - #344F18 - #CBEDA5 - #071400 - #B0D18B - #233D07 - #DBE7C8 - #0B1404 - #BFCBAD - #2F3924 - #BBECE8 - #001414 - #A0CFCC - #083D3B - #12140E - #373A33 - #0C0F09 - #1A1C16 - #1E211A - #282B24 - #33362E - #F4FFE1 - #000000 - #B4D58F - #000000 - #F4FFE1 - #000000 - #C3CFB1 - #000000 - #EAFFFD - #000000 - #A4D4D0 - #000000 - #FFF9F9 - #000000 - #FFBAB1 - #000000 - #12140E - #E2E3D8 - #12140E - #FFFFFF - #44483D - #F9FCED - #C9CCBE - #C9CCBE - #000000 - #E2E3D8 - #000000 - #183000 - #D0F2A9 - #000000 - #B4D58F - #0B1A00 - #DFEBCC - #000000 - #C3CFB1 - #101907 - #C0F0ED - #000000 - #A4D4D0 - #001A19 - #12140E - #373A33 - #0C0F09 - #1A1C16 - #1E211A - #282B24 - #33362E - #C3CD7B #2E3400 #434B05 @@ -1586,7 +530,6 @@ #C8C7B7 #929283 #47483B - #000000 #E5E3D6 #313128 #5B631E @@ -1609,101 +552,6 @@ #202018 #2A2B22 #35352D - #C8D17F - #151800 - #8D964B - #000000 - #CBCDAB - #151804 - #909374 - #000000 - #A6D4C6 - #001B14 - #6D9A8C - #000000 - #FFBAB1 - #370001 - #FF5449 - #000000 - #13140D - #E5E3D6 - #13140D - #FDFBEE - #47483B - #CCCCBB - #A4A494 - #848475 - #000000 - #E5E3D6 - #2A2B22 - #454C06 - #E0E995 - #101300 - #C3CD7B - #333A00 - #E3E5C1 - #101301 - #C7C9A7 - #35381F - #BEECDD - #00150F - #A2D0C1 - #0F3D33 - #13140D - #393A31 - #0E0F08 - #1B1C14 - #202018 - #2A2B22 - #35352D - #FAFFC9 - #000000 - #C8D17F - #000000 - #FBFDD9 - #000000 - #CBCDAB - #000000 - #ECFFF7 - #000000 - #A6D4C6 - #000000 - #FFF9F9 - #000000 - #FFBAB1 - #000000 - #13140D - #E5E3D6 - #13140D - #FFFFFF - #47483B - #FDFCEA - #CCCCBB - #CCCCBB - #000000 - #E5E3D6 - #000000 - #282D00 - #E4EE98 - #000000 - #C8D17F - #151800 - #E7E9C6 - #000000 - #CBCDAB - #151804 - #C2F1E1 - #000000 - #A6D4C6 - #001B14 - #13140D - #393A31 - #0E0F08 - #1B1C14 - #202018 - #2A2B22 - #35352D - #F0BE6D #432C00 #604100 @@ -1728,7 +576,6 @@ #D2C4B4 #9B8F80 #4E4539 - #000000 #ECE1D4 #362F27 #7D570D @@ -1751,101 +598,6 @@ #241F17 #2F2921 #3A342B - #F5C371 - #211400 - #B5893E - #000000 - #E0C7A5 - #201402 - #A38E6E - #000000 - #B9D2A8 - #081A02 - #809871 - #000000 - #FFBAB1 - #370001 - #FF5449 - #000000 - #17130B - #ECE1D4 - #17130B - #FFFAF7 - #4E4539 - #D6C9B8 - #ADA191 - #8D8173 - #000000 - #ECE1D4 - #2F2921 - #614200 - #FFDEAC - #1A0F00 - #F0BE6D - #4A3100 - #F8DFBB - #1A0F00 - #DBC3A1 - #43341B - #D1EABF - #041500 - #B5CEA4 - #273B1D - #17130B - #3F382F - #120D07 - #201B13 - #241F17 - #2F2921 - #3A342B - #FFFAF7 - #000000 - #F5C371 - #000000 - #FFFAF7 - #000000 - #E0C7A5 - #000000 - #F2FFE5 - #000000 - #B9D2A8 - #000000 - #FFF9F9 - #000000 - #FFBAB1 - #000000 - #17130B - #ECE1D4 - #17130B - #FFFFFF - #4E4539 - #FFFAF7 - #D6C9B8 - #D6C9B8 - #000000 - #ECE1D4 - #000000 - #3A2600 - #FFE3BB - #000000 - #F5C371 - #211400 - #FDE3BF - #000000 - #E0C7A5 - #201402 - #D5EFC3 - #000000 - #B9D2A8 - #081A02 - #17130B - #3F382F - #120D07 - #201B13 - #241F17 - #2F2921 - #3A342B - #FFB77B #4C2700 #6B3A05 @@ -1870,7 +622,6 @@ #D6C3B6 #9E8E82 #51443B - #000000 #EFE0D6 #382F28 #88511D @@ -1893,101 +644,6 @@ #261E18 #312822 #3C332C - #FFBD87 - #271100 - #C3824A - #000000 - #E7C4A9 - #241203 - #AA8B73 - #000000 - #C8CF9B - #141800 - #8E9565 - #000000 - #FFBAB1 - #370001 - #FF5449 - #000000 - #19120C - #EFE0D6 - #19120C - #FFFAF8 - #51443B - #DAC7BA - #B1A094 - #908075 - #000000 - #EFE0D6 - #312822 - #6D3C06 - #FFDCC2 - #1F0C00 - #FFB77B - #552C00 - #FFDCC2 - #1E0D01 - #E3C0A5 - #48311F - #E0E7B1 - #0F1300 - #C4CB97 - #333913 - #19120C - #413731 - #140D08 - #221A14 - #261E18 - #312822 - #3C332C - #FFFAF8 - #000000 - #FFBD87 - #000000 - #FFFAF8 - #000000 - #E7C4A9 - #000000 - #F9FFCD - #000000 - #C8CF9B - #000000 - #FFF9F9 - #000000 - #FFBAB1 - #000000 - #19120C - #EFE0D6 - #19120C - #FFFFFF - #51443B - #FFFAF8 - #DAC7BA - #DAC7BA - #000000 - #EFE0D6 - #000000 - #432100 - #FFE1CC - #000000 - #FFBD87 - #271100 - #FFE1CC - #000000 - #E7C4A9 - #241203 - #E4ECB5 - #000000 - #C8CF9B - #141800 - #19120C - #413731 - #140D08 - #221A14 - #261E18 - #312822 - #3C332C - #E7BDB0 #442A21 #6D4E43 @@ -2012,7 +668,6 @@ #D4C3BE #9D8E89 #504440 - #000000 #E9E1DF #33302E #77574C @@ -2035,101 +690,6 @@ #221F1E #2D2928 #383433 - #EBC2B4 - #261009 - #AD887C - #000000 - #DCC6BF - #1F1410 - #A08D86 - #000000 - #D4CBA5 - #1A1602 - #98916E - #000000 - #FFBAB1 - #370001 - #FF5449 - #000000 - #161312 - #E9E1DF - #161312 - #FFF9F8 - #504440 - #D8C7C2 - #AFA09B - #8E807C - #000000 - #E9E1DF - #2D2928 - #5E4137 - #FFDBCF - #200B05 - #E7BDB0 - #4A3026 - #F5DED6 - #190F0B - #D8C2BB - #41332E - #ECE3BB - #151100 - #CFC7A1 - #3B361B - #161312 - #3C3837 - #100E0D - #1E1B1A - #221F1E - #2D2928 - #383433 - #FFF9F8 - #000000 - #EBC2B4 - #000000 - #FFF9F8 - #000000 - #DCC6BF - #000000 - #FFFAF4 - #000000 - #D4CBA5 - #000000 - #FFF9F9 - #000000 - #FFBAB1 - #000000 - #161312 - #E9E1DF - #161312 - #FFFFFF - #504440 - #FFF9F8 - #D8C7C2 - #D8C7C2 - #000000 - #E9E1DF - #000000 - #3D241B - #FFE0D7 - #000000 - #EBC2B4 - #261009 - #F9E2DB - #000000 - #DCC6BF - #1F1410 - #F1E7C0 - #000000 - #D4CBA5 - #1A1602 - #161312 - #3C3837 - #100E0D - #1E1B1A - #221F1E - #2D2928 - #383433 - #C7C6C6 #303031 #6C6C6C @@ -2154,7 +714,6 @@ #C4C7C7 #8E9192 #444748 - #000000 #E5E2E1 #313030 #5E5E5E @@ -2177,98 +736,4 @@ #201F1F #2A2A2A #353434 - #CBCACA - #151617 - #919090 - #000000 - #CCCACA - #161616 - #929090 - #000000 - #CFC9CB - #181617 - #948F91 - #000000 - #FFBAB1 - #370001 - #FF5449 - #000000 - #141313 - #E5E2E1 - #141313 - #FEFAF9 - #444748 - #C8CBCC - #A0A3A4 - #808484 - #000000 - #E5E2E1 - #2B2A2A - #474848 - #E3E2E2 - #101111 - #C7C6C6 - #353636 - #E5E2E1 - #111111 - #C8C6C5 - #363636 - #E7E1E3 - #121112 - #CBC5C7 - #383537 - #141313 - #3A3939 - #0E0E0E - #1C1B1B - #201F1F - #2A2A2A - #353434 - #FCFAFA - #000000 - #CBCACA - #000000 - #FDFAF9 - #000000 - #CCCACA - #000000 - #FFF9FA - #000000 - #CFC9CB - #000000 - #FFF9F9 - #000000 - #FFBAB1 - #000000 - #141313 - #E5E2E1 - #141313 - #FFFFFF - #444748 - #F9FBFC - #C8CBCC - #C8CBCC - #000000 - #E5E2E1 - #000000 - #292A2A - #E8E6E6 - #000000 - #CBCACA - #151617 - #E9E6E6 - #000000 - #CCCACA - #161616 - #EBE5E7 - #000000 - #CFC9CB - #181617 - #141313 - #3A3939 - #0E0E0E - #1C1B1B - #201F1F - #2A2A2A - #353434 \ No newline at end of file diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 6d668957c..f61018fd3 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -4,7 +4,6 @@ Een eenvoudige, rationele muziekspeler voor Android. Probeer opnieuw - Sta toe Genres Artiesten Albums @@ -27,9 +26,7 @@ Toegevoegd aan wachtrij Ga naar artiest Ga naar album - Voeg toe Bewaar - Geen mappen Over Versie Broncode @@ -54,9 +51,7 @@ Terugspoelen voor het overslaan van het vorige nummer Inhoud - Geen muziek aangetroffen Laden van muziek mislukt - Auxio heeft toestemming nodig om uw muziekbibliotheek te lezen Geen app gevonden die deze taak kan uitvoeren Deze map wordt niet ondersteund @@ -133,7 +128,6 @@ Schakel shuffle aan of uit Laad de muziekbibliotheek opnieuw, indien mogelijk met behulp van gecashte tags Uw muziekbibliotheek wordt geladen… (%1$d/%2$d) - Shuffle alle nummers Pauze wanneer een nummer wordt herhaald Muziek opnieuw laden Aanpassing met tags @@ -158,7 +152,6 @@ MPEG-1 audio MPEG-4 audio Ogg audio - Matroska audio Albums geladen: %d Artiesten geladen: %d Genres geladen: %d @@ -218,7 +211,6 @@ Hernoem afspeellijst Verwijder afspeellijst? Herhaalmodus - Mappen Open de wachtrij %s verwijderen\? Dit kan niet ongedaan worden gemaakt. Uit @@ -282,7 +274,6 @@ Demo Demo\'s Sorteer op - Meer Richting ReplayGain spoor aanpassing ReplayGain album aanpassing diff --git a/app/src/main/res/values-nn/strings.xml b/app/src/main/res/values-nn/strings.xml index 108229ec8..3ed6dbfae 100644 --- a/app/src/main/res/values-nn/strings.xml +++ b/app/src/main/res/values-nn/strings.xml @@ -15,7 +15,6 @@ Bland alle OK Begynn avspeling - Legg til Absolutt Lagre Kjeldekode @@ -24,7 +23,6 @@ Ein enkel, rasjonell musikkspillar for Android. Musikk vert lasta inn Held auge med musikkbiblioteket - Løyv Spor Spor Alle spor @@ -89,7 +87,6 @@ Utvikla av Alexander Capehart Lastar inn musikk Prøv igjen - Syn meir Live-singel Ljodspor Live-album @@ -187,7 +184,6 @@ Justering utan etikettar Bibliotek Handsam kvar musikk skal lastast inn ifrå - Mapper Gjenoppfrisk musikk Kan ikkje importere ei speleliste frå denne fila Hopp til neste spor @@ -257,10 +253,8 @@ Åtvaring: Å endre forforsterkninga til høge positive verdier, kan forårsake forvrengning ved høge ljodtrykk på nokre spor. Musikkmapper Last inn musikkbiblioteket på nytt og bruk hurtiglagra etikettar når mogleg - Fann ikkje musikk Skann musikk på nytt Tøm etiketthurtiglager og last inn heile musikkbiblioteket på nytt (tregare, men meir fullstendig) - Auxio treng løyve til å lesa musikkbiblioteket ditt Artistbilete for %s Klarte ikkje å laste inn musikk Kan ikkje eksportere spelelista til denne fila @@ -269,8 +263,6 @@ Spel av eller pause Auxio-ikon Spor %d - Ingen mapper - Bland alle spor Fjern dette sporet Flytt dette sporet Hopp til siste spor @@ -289,7 +281,6 @@ Gul Oransje Inga plate - Matroska-ljod Ingen musik vert spelt av MPEG-4-ljod Avansert audio-koding (AAC) diff --git a/app/src/main/res/values-pa-rPK/strings.xml b/app/src/main/res/values-pa-rPK/strings.xml index 27f990961..836dc4d8c 100644 --- a/app/src/main/res/values-pa-rPK/strings.xml +++ b/app/src/main/res/values-pa-rPK/strings.xml @@ -2,7 +2,6 @@ سنگیت لوڈ کیتا جا رہا اے مُڑ لوڈ کرو - اِجازت دیو گیت سارے گیت البم diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index 87feed829..c7108561d 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -6,7 +6,6 @@ ਮਿਕਸਟੇਪ ਸੰਗੀਤ ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ - ਇਜਾਜ਼ਤ ਦਿਉ ਸਾਰੇ ਗੀਤ ਐਲਬਮ ਐਲਬਮ @@ -75,7 +74,6 @@ ਕਲਾਕਾਰ \'ਤੇ ਜਾਓ ਬਿੱਟ ਰੇਟ ਸੈਂਪਲ ਰੇਟ - ਸ਼ਾਮਿਲ ਕਰੋ ਤਬਦੀਲੀਆਂ ਲਈ ਤੁਹਾਡੀ ਸੰਗੀਤ ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਨਿਗਰਾਨੀ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ… ਲਾਈਸੈਂਸ ਸੰਗੀਤ ਪਲੇਬੈਕ ਵੇਖੋ ਅਤੇ ਕੰਟਰੋਲ ਕਰੋ @@ -120,10 +118,8 @@ ਐਲਬਮ ਨੂੰ ਤਰਜੀਹ ਬਿਨਾਂ ਟੈਗਾਂ ਦੇ ਐਡਜਸਟਮੈਂਟ ਪ੍ਰਬੰਧਿਤ ਕਰੋ ਕਿ ਸੰਗੀਤ ਕਿੱਥੋਂ ਲੋਡ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ - ਫੋਲਡਰ ਸੰਗੀਤ ਤਾਜ਼ਾ-ਤਰੀਨ ਕਰੋ ਕੋਈ ਐਪ ਨਹੀਂ ਮਿਲੀ ਜੋ ਇਸ ਕਾਰਜ ਨੂੰ ਸੰਭਾਲ ਸਕਦੀ ਹੈ - ਕੋਈ ਫੋਲਡਰ ਨਹੀਂ ਇਹ ਫੋਲਡਰ ਸਮਰਥਿਤ ਨਹੀਂ ਹੈ ਚਲਾਓ ਜਾਂ ਰੋਕੋ ਅਗਲੇ ਗੀਤ \'ਤੇ ਜਾਓ @@ -137,9 +133,7 @@ ਟੈਗਸ ਨਾਲ ਐਡਜਸਟਮੈਂਟ ਚੇਤਾਵਨੀ: ਪ੍ਰੀ-ਐਂਪ ਨੂੰ ਉੱਚ ਸਕਾਰਾਤਮਕ ਮੁੱਲ ਵਿੱਚ ਬਦਲਣ ਦੇ ਨਤੀਜੇ ਵਜੋਂ ਕੁਝ ਆਡੀਓ ਟਰੈਕਾਂ \'ਤੇ ਸਿਖਰ ਹੋ ਸਕਦਾ ਹੈ। ਟੈਗ ਕੈਸ਼ ਨੂੰ ਸਾਫ਼ ਕਰੋ ਅਤੇ ਸੰਗੀਤ ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਰੀਲੋਡ ਕਰੋ (ਹੌਲੀ, ਪਰ ਵਧੇਰੇ ਸੰਪੂਰਨ) - ਕੋਈ ਸੰਗੀਤ ਨਹੀਂ ਮਿਲਿਆ ਸੰਗੀਤ ਲੋਡ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ - Auxio ਨੂੰ ਤੁਹਾਡੀ ਸੰਗੀਤ ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਪੜ੍ਹਨ ਲਈ ਇਜਾਜ਼ਤ ਦੀ ਲੋੜ ਹੈ %d ਨੂੰ ਟਰੈਕ ਕਰੋ ਸਿਰਫ਼ ਉਹਨਾਂ ਕਲਾਕਾਰਾਂ ਨੂੰ ਦਿਖਾਓ ਜੋ ਕਿਸੇ ਐਲਬਮ \'ਤੇ ਸਿੱਧੇ ਤੌਰ \'ਤੇ ਕ੍ਰੈਡਿਟ ਕੀਤੇ ਜਾਂਦੇ ਹਨ (ਚੰਗੀ ਤਰ੍ਹਾਂ ਨਾਲ ਟੈਗ ਕੀਤੀਆਂ ਲਾਇਬ੍ਰੇਰੀਆਂ \'ਤੇ ਵਧੀਆ ਕੰਮ ਕਰਦਾ ਹੈ ਉਹਨਾਂ ਆਡੀਓ ਫਾਈਲਾਂ ਨੂੰ ਅਣਡਿੱਠ ਕਰੋ ਜੋ ਸੰਗੀਤ ਨਹੀਂ ਹਨ, ਜਿਵੇਂ ਕਿ ਪੌਡਕਾਸਟ @@ -178,7 +172,6 @@ ਇਸ ਕਤਾਰ ਗੀਤ ਨੂੰ ਮੂਵ ਕਰੋ ਦੁਹਰਾਓ ਮੋਡ ਬਦਲੋ ਸ਼ਫਲ ਚਾਲੂ ਜਾਂ ਬੰਦ ਕਰੋ - ਸਾਰੇ ਗੀਤਾਂ ਨੂੰ ਸ਼ਫਲ ਕਰੋ ਪਲੇਬੈਕ ਬੰਦ ਕਰੋ ਨਵੀਂ ਪਲੇਅ-ਲਿਸਟ ਪਲੇਅ-ਲਿਸਟ ਵਿੱਚ ਜੋੜ੍ਹੋ @@ -193,7 +186,6 @@ ਪਲੇਅ- ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕੀਤਾ ਇਹ ਟੈਬ ਹਿਲਾਓ ਕੋਈ ਗੀਤ ਨਹੀਂ - Matroska ਆਡੀਓ ਗੂੜ੍ਹਾ ਜ੍ਹਾਮਣੀ Ogg ਆਡੀਓ %d: ਗੀਤ ਲੋਡ ਕੀਤੇ @@ -273,7 +265,6 @@ ਦਿਸ਼ਾ ਚੋਣ ਚੋਣ ਚਿੱਤਰ - ਹੋਰ ਤਰੁੱਟੀ ਦੀ ਜਾਣਕਾਰੀ ਕਾਪੀ ਕੀਤਾ ਗਿਆ ਰਿਪੋਰਟ ਕਰੋ diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index fab6bfb0d..876851fd9 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -2,7 +2,6 @@ Ponów - Zezwól Gatunki Wykonawcy Albumy @@ -37,7 +36,6 @@ Dźwięk Interfejs - Nie znaleziono utworów Utwór %d Odtwórz albo zapauzuj @@ -108,7 +106,6 @@ Gatunek Wszystkie losowo %d Hz - Dodaj Czarny motyw Ciemny fioletowy -%.1f dB @@ -129,7 +126,6 @@ Brak utworu Korektor Rozmiar - Brak folderów Odtwórz wszystkie utwory Odtwórz album Automatycznie odtwórz muzykę po podłączeniu słuchawek (może nie działać na wszystkich urządzeniach) @@ -179,7 +175,6 @@ Elementy Material You %d kb/s - Matroska Foldery z muzyką Wybierz z których folderów importowane są utwory Przewiń przed odtworzeniem poprzedniego utworu @@ -205,7 +200,6 @@ Zatrzymaj odtwarzanie, kiedy utwór się powtórzy Znaki oddzielające wartości Wybierz znaki oddzielające poszczególne wartości w metadanych - Auxio wymaga zgody na dostęp do twojej biblioteki muzycznej Ten folder nie jest wspierany Utwory nie są odtwarzane Importuję bibliotekę muzyczną… (%1$d/%2$d) @@ -213,7 +207,6 @@ Zaimportowane gatunki: %d Łączny czas trwania: %s Zmień tryb powtarzania - Odtwórz losowo wszystkie utwory Monitoruję zmiany w bibliotece muzycznej… Importowanie utworów Monitoruję bibliotekę muzyczną @@ -234,7 +227,6 @@ Dostosuj elementy i funkcje interfejsu Pokaż tylko artystów bezpośrednio przypisanych do albumu (działa najlepiej w przypadku dobrze otagowanych bibliotek) Odtwarzanie - Foldery Obrazy Zarządzaj dźwiękiem i odtwarzaniem muzyki Wybrano %d @@ -295,7 +287,6 @@ Eksportuj Styl ścieżki Wybór obrazu - Więcej Zaznaczenie Skopiowano Autor diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index e714bc71f..4ce195e83 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -2,7 +2,6 @@ Tentar novamente - Conceder Gêneros Artistas Álbuns @@ -38,7 +37,6 @@ Comportamento Manter modo aleatório ativado - Nenhuma música encontrada Faixa %d Reproduzir ou pausar @@ -74,7 +72,6 @@ Ver propriedades Aleatório Aleatorizar tudo - Adicionar Salvar Estatísticas da biblioteca Usar player de notificação alternativo @@ -84,13 +81,11 @@ Gerencia de onde as músicas devem ser carregadas Falha ao carregar músicas Nenhum aplicativo encontrado que possa lidar com esta tarefa - Sem pastas Esta pasta não é compatível Recarrega a biblioteca de músicas usando metadados salvos em cache quando possível Retroceder antes de voltar Recarregar música Retroceder a música antes de voltar para a anterior - O Auxio precisa de permissão para ler sua biblioteca de músicas Um reprodutor de música simples e racional para Android. Carregando a sua biblioteca de músicas… Ano @@ -114,7 +109,6 @@ Pausar quando uma música se repete Pular para a música anterior Alterar o modo de repetição - Aleatorizar todas das músicas Remover esta música da fila Limpar histórico de pesquisa Capa do álbum para %s @@ -136,7 +130,6 @@ Áudio MPEG-1 Áudio MPEG-4 Áudio Ogg - Áudio Matroska Advanced Audio Coding (AAC) Free Lossless Audio Codec (FLAC) Mover esta música da fila @@ -249,7 +242,6 @@ Normalização de volume Biblioteca Comportamento - Pastas Decrescente Ignorar artigos ao classificar Ignore palavras como \"the\" ao classificar por nome (funciona melhor com músicas em inglês) @@ -257,7 +249,6 @@ Playlist %d Playlist Playlist criada - Mais Apagar Copiado Adicionar à playlist @@ -334,6 +325,7 @@ Os seus gêneros aparecerão aqui. Economizar espaço Nova pasta + Qualidade original Ignorar arquivos e pastas que estão ocultos (por exemplo, .cache) Ignorar arquivos ocultos diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index a71a388f6..b05e66b38 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -2,7 +2,6 @@ Tentar novamente - Permitir Géneros Artistas Álbuns @@ -39,7 +38,6 @@ Personalizar Memorizar música misturada - Nenhuma música encontrada Música %d Reproduzir ou pausar @@ -95,8 +93,6 @@ Modo de repetição Reproduzir do artista Pausar na repetição - O Auxio precisa de permissão para ler a sua biblioteca de músicas - Sem pastas Esta pasta não é compatível Mover esta música da fila Remover pasta @@ -119,7 +115,6 @@ Propriedades Propriedades da música OK - Adicionar Tema preto Limpar consulta de pesquisa Imagem de gênero para %s @@ -182,9 +177,7 @@ Reproduzir de todas as músicas Pausar quando uma música é repetida Ativar ou desativar a reprodução aleatória - Embaralhar todas as músicas Remover esta música de fila - Áudio Matroska Codificação de Audio Avançada (AAC) Álbum Miniálbuns @@ -247,7 +240,6 @@ Imagens Configurar o som e comportamento da reprodução Reprodução - Pastas Biblioteca E comercial (&) Comportamento @@ -261,7 +253,6 @@ Lista de reprodução %d Lista de reprodução Lista de reprodução criada - Mais Imagem da lista de reprodução de %s Eliminar Nenhum disco diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index f193cf386..2f95536f9 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -3,9 +3,7 @@ Lista de reprodução importada A monitorizar a biblioteca de música Tentar novamente - Mais Um reprodutor de música simples e racional para Android. - Permitir Música Todas as músicas Álbuns @@ -77,7 +75,6 @@ Editar Nome Cancelar - Adicionar Salvar Mudar o tema e cores da app Tema @@ -114,7 +111,6 @@ Procurar na biblioteca… Desligado Configurar onde a música deve ser carregada - Pastas Ativar ou desativar a reprodução aleatória Seleção de imagem Verde @@ -185,14 +181,11 @@ O pré-amplificador é aplicado ao ajuste existente durante a reprodução Ajustar com etiquetas Ajustar sem etiquetas - Nenhuma música encontrada Falha ao carregar música - O Auxio precisa de permissão para ler a sua biblioteca de músicas Música %d Reproduzir ou pausar Pular para a próxima música Pular para a última música - Embaralhar todas as músicas Ícone do Auxio Capa do álbum Nenhum disco @@ -280,7 +273,6 @@ Não foi possível importar uma lista de reprodução deste ficheiro Incapaz de exportar a lista de reprodução para este ficheiro Nenhuma aplicação encontrada que possa executar esta tarefa - Sem pastas Esta pasta não é compatível Alterar o modo de repetição Parar reprodução @@ -299,7 +291,6 @@ Áudio MPEG-1 Áudio MPEG-4 Áudio Ogg - Áudio Matroska Azul profundo Azul-verde Grisalho diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 851e63946..a3bebbf04 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -2,7 +2,6 @@ Reîncercați - Permiteți Genuri Artiști Albume @@ -38,7 +37,6 @@ Audio Comportament - Nu a fost găsită muzică Căutați în bibliotecă… @@ -106,7 +104,6 @@ Format Proprietățile cântecului Amestecare - Adaugă Frecvența de eșantionare Salvează Gen @@ -194,7 +191,6 @@ Re-scanează muzica Șterge memoria cache cu taguri și reîncarcă biblioteca de muzică de tot (mai încet, dar mai complet) Cântece încărcate %d - Amestecă toate cântecele Bleu Nu se redă muzică Ștergi %s? Nu te poți răzgândi după aceea. @@ -215,10 +211,8 @@ Imagine gen pentru %s Imagine playlist pentru %s Artist necunoscut - Vezi mai mult Configurează caracterele care denotă mai multe valori de taguri Foldere cu muzică - Foldere Fără cântece Imagine artist pentru %s Playlist importat @@ -258,9 +252,7 @@ Redă cântecul fără să facă parte din nicio listă Pune pauză atunci când un cântec se repetă Încărcarea muzicii a eșuat - Auxio are nevoie de permisiune ca să-ți acceseze biblioteca de muzică Mută acest cântec - Niciun dosar Pornește sau oprește amestecarea Oprește redarea Elimină acest cântec diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 3283e2333..38f466406 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -5,7 +5,6 @@ Настройки воспроизведения Повторить попытку - Разрешить Жанры Исполнители Альбомы @@ -32,9 +31,7 @@ Добавлено в очередь Перейти к исполнителю Перейти к альбому - Добавить Сохранить - Нет папок О программе Версия Исходный код @@ -75,9 +72,7 @@ Обновить музыку Обновлять библиотеку, при возможности используя кэш тегов - Треков нет Ошибка чтения библиотеки - Auxio требуется разрешение на чтение музыкальной библиотеки Нет приложений для открытия данной ссылки Эта папка не поддерживается @@ -89,7 +84,6 @@ Вернуться к предыдущему треку Режим повтора Перемешивание - Перемешать все треки Удалить трек из очереди Переместить трек в очереди Переместить вкладку @@ -172,7 +166,6 @@ MPEG-1 FLAC Общая продолжительность: %s - Matroska Диск %d +%.1f дБ Открыть очередь @@ -254,7 +247,6 @@ Управляйте загрузкой музыки и изображений Настройка звука и поведения при воспроизведении Воспроизведение - Папки По убыванию Плейлист Плейлисты @@ -288,7 +280,6 @@ Направление Выберите Выберите изображение - Дополнительно Информация об ошибке Отчёт об ошибке Скопировано diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index 69638c1d6..043a6ed8e 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -29,7 +29,6 @@ Lastnosti pesmi Spremenite način ponavljanja Oranžna - Dodaj Naključno predvajanje DJ Miks Prednost pesmi @@ -74,7 +73,6 @@ Izvajalec Pravilno razvrsti imena, ki se začnejo z številkami ali besedami, kot so \'the\' (najbolje deluje z angleško glasbo) Zelenkasto modra - Premešaj vse pesmi Seznam predavanja ustvarjen Celoten čas predvajanja: %s Pavza ob ponavljanju @@ -84,7 +82,6 @@ Naloženih pesmi: %d Premakni to pesem Spremljanje glasbene knjižnice - Pokaži več Ciano modra Barvna shema Slika seznama predvajanja za %s @@ -106,11 +103,9 @@ Prilagodi zvok in obnašanje predvajanja Nadzorujte kako se glasba in slike nalagajo Izgled in občutek - Matroska Audio Začasna prekinitev ob ponavljanju Predvajaj Nalaganje glasbe - Ni najdenih pesmi Datum Izprazni predpomnilnik oznak in popolnoma ponovno naloži glasbeno knjižnico (počasneje, vendar bolj popolno) Pred-ojačevalec se uporablja na obstoječi prilagoditvi med predvajanjem @@ -152,7 +147,6 @@ Ni pesmi Podaljšano Pesmi - Mape Prireži vse naslovnice albumov v razmerje 1:1 Prilagojeno dejanje na vrstici za predvajanje Indigo modra @@ -192,7 +186,6 @@ Ustavi predvajanje Mežanica Remiks singla - Auxio potrebuje dovoljenje za branje vaše glasbene knjižnice Tema Knjižnica Statistika knjižnice @@ -217,7 +210,6 @@ Vredu Singl Seznam predvajanja odstranjen - Dovoli Predvajaj iz vseh pesmi Prilagoditev z oznakami Predvajanje ob priključitvi slušalk @@ -257,7 +249,6 @@ ReplayGain strategija Izvorna koda Predvajaj iz izvajalca - Ni map Prilagoditev kontrol uporabniškega vmesnika in obnašanja Hitrost vzorčenja Čakalna vrsta diff --git a/app/src/main/res/values-sq/strings.xml b/app/src/main/res/values-sq/strings.xml index de17dd795..f19ff2835 100644 --- a/app/src/main/res/values-sq/strings.xml +++ b/app/src/main/res/values-sq/strings.xml @@ -6,7 +6,6 @@ Kompilim Live Monitorimi i bibliotekës muzikore Përsëritje - Më shumë Këngët Këngë Të gjitha këngët @@ -30,7 +29,6 @@ Mixtapes Mixtape Riemërto listën e këngëve - Lejoj Demo Demos DJ Mixes @@ -94,7 +92,6 @@ Anulo Ruaj Rivendos - Shto Më shumë Absolute Relativ @@ -245,24 +242,19 @@ Kujdes: Ndryshimi i pre-amplitudës në një vlerë të lartë pozitive mund të shkaktojë teprim në disa shtegtarë audio. Biblioteka Menaxho se nga ku duhet të ngarkohet muzika - Dosjet Rifresko muzikën Rifreskoni bibliotekën muzikore, duke përdorur etiketat e ruajtura kur është e mundur Rikërkoni muzikën Pastroni cache-n e etiketave dhe rifreskoni plotësisht bibliotekën muzikore (më ngadalë, por më të plotë) - Nuk u gjet muzikë Ngarkimi i muzikës dështoi - Auxio ka nevojë për leje për të lexuar bibliotekën tuaj muzikore Nuk mund të importoni një listë këngësh nga ky skedar Nuk mund të eksportoni listën e këngëve në këtë skedar Nuk u gjet asnjë aplikacion që mund ta përballojë këtë detyrë - Nuk ka dosje Kënga %d Luaj ose ndalo Kaloni te kënga tjetër Kaloni te kënga e fundit Aktivizoni ose çaktivizoni përzierjen - Përziej të gjitha këngët Ndalo riprodhimin Lëviz këtë këngë Hap radhën @@ -284,7 +276,6 @@ MPEG-1 audio MPEG-4 audio Ogg audio - Matroska audio Advanced Audio Coding (AAC) Kuq Rozë @@ -302,7 +293,7 @@ Kafe -%.1f dB %d kbps - Duke ngarkuar bibliotekën tuaj muzikore... (%1$d/%2$d) + Duke ngarkuar bibliotekën tuaj muzikore… (%1$d/%2$d) Këngët e ngarkuara: %d Albumet e ngarkuara: %d Artistët e ngarkuar: %d diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 314de547a..1d151baf7 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -2,7 +2,6 @@ Праћење музичке библиотеке Покушај поново - Одобрити Једноставан, рационалан музички плејер за android. Музика се учитава Учитавање музике diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index f0c5a6b39..2e810c9db 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -78,7 +78,6 @@ Ljust Svart tema Runt läge - Bevilja En enkel, rationell musikspelare för Android. Övervakar musikbibliotek Spår @@ -97,7 +96,6 @@ Disk Sortera Lägg till i kö - Lägg till Överföringskapacitet Återställ Version @@ -169,7 +167,6 @@ Bibliotek Uppdatera musik Läs in musik på nytt, vid möjlighet med användning av cachade etiketter - Blanda alla låtar Rensa sökfrågan Ta bort mapp Genrebild för %s @@ -177,7 +174,6 @@ MPEG-1-ljud MPEG-4-ljud OGG-ljud - Matroska-ljud Blå Mörkblå Cyanblå @@ -199,12 +195,9 @@ Musikmappar Varning: Att ändra förförstärkaren till ett högt positivt värde kan leda till ett förhöjt ljudtryck på vissa ljudspår. Hantera var musik läses in ifrån - Mappar Skanna om musik Rensa etikettbiblioteket och ladda komplett om musikbiblioteket (långsammare, men mer komplett) - Ingen musik hittades Musikinläsning misslyckades - Auxio måste ges behörighet för att läsa in ditt musikbibliotek Ingen lämplig app kunde hittas Denna mapp stöds inte Spår %d @@ -245,7 +238,6 @@ Beskär alla albumomslag till ett 1:1 sidförhållande Spola tillbaka innan att hoppa till föregående låt Justering med etiketter - Inga mappar Stoppa uppspelning Ta bort låt Auxio-ikon @@ -272,7 +264,6 @@ Föredra album om ett album spelar Förförstarkning användas för befintliga justeringar vid uppspelning Röd - Visa mera Låt Importerad spellista Kunde inte importera spellista från denna fil diff --git a/app/src/main/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml index bb6179527..38e9d15f5 100644 --- a/app/src/main/res/values-ta/strings.xml +++ b/app/src/main/res/values-ta/strings.xml @@ -9,7 +9,6 @@ வட்டு மின்தடம் மீட்டமை - கூட்டு அமைப்புகள் பாருங்கள் மற்றும் உணருங்கள் இருண்ட @@ -53,8 +52,6 @@ கண்காணிப்பு இசை நூலகம் மீண்டும் முயற்சிக்கவும் கோப்புறைகளைத் தேர்ந்தெடுங்கள் - மேலும் - மானியம் பாடல்கள் பாடல் அனைத்து பாடல்களும் @@ -240,18 +237,14 @@ நூலகம் இசை கோப்புறைகள் இசையை எங்கிருந்து ஏற்ற வேண்டும் என்பதை நிர்வகிக்கவும் - கோப்புறைகள் இசையைப் புதுப்பிக்கவும் மீண்டும்இயக்கையில் இடைநிறுத்தம் முடிந்தவரை தற்காலிக சேமிப்பு குறிச்சொற்களைப் பயன்படுத்தி இசை நூலகத்தை மீண்டும் ஏற்றவும் ரெசான் மியூசிக் - இசை எதுவும் கிடைக்கவில்லை இசை ஏற்றுதல் தோல்வியடைந்தது - உங்கள் இசை நூலகத்தைப் படிக்க ஆக்சியோவுக்கு இசைவு தேவை இந்த கோப்பிலிருந்து ஒரு பிளேலிச்ட்டை இறக்குமதி செய்ய முடியவில்லை இந்த கோப்பில் பிளேலிச்ட்டை ஏற்றுமதி செய்ய முடியவில்லை இந்த பணியைக் கையாளக்கூடிய எந்த பயன்பாடும் கிடைக்கவில்லை - கோப்புறைகள் இல்லை இந்த கோப்புறை ஆதரிக்கப்படவில்லை ட்ராக் %d விளையாடுங்கள் அல்லது இடைநிறுத்தம் @@ -259,7 +252,6 @@ கடைசி பாடலுக்குச் செல்லுங்கள் மீண்டும் பயன்முறையை மாற்றவும் கலக்கலை ஆன் அல்லது ஆஃப் செய்யுங்கள் - எல்லா பாடல்களையும் மாற்றவும் பிளேபேக்கை நிறுத்துங்கள் இந்த பாடலை அகற்று இந்த பாடலை நகர்த்தவும் @@ -281,7 +273,6 @@ MPEG-1 ஆடியோ MPEG-4 ஆடியோ OGG ஆடியோ - திருமண ஆடியோ மேம்பட்ட ஆடியோ குறியீட்டு முறை (AAC) இலவச இழப்பு இல்லாத ஆடியோ கோடெக் (FLAC) சிவப்பு diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index d04d0cc05..5ea90a82e 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -2,7 +2,6 @@ Yeniden dene - İzin ver Türler Sanatçılar Albümler @@ -37,7 +36,6 @@ Ses Tercihler - Müzik bulunamadı Kitaplığınız taranıyor… @@ -59,7 +57,6 @@ Hepsini karıştır Tamam İptal - Ekle Kaydet Toplam süre: %s Şarkı sayısı @@ -96,7 +93,6 @@ %s Albümünün kapağı %s Sanatçısının resmi Parça yok - Matroska Ses İleri Düzeyde Ses Kodlama (AAC) Bağımsız Kayıpsız Ses Kodlama (FLAC) Kırmızı @@ -147,17 +143,14 @@ Yeni bir şarkı çalarken karışık çalmayı açık tut Müziği yenile Mümkün olduğunda önbelleğe alınmış etiketleri kullanarak müzik kitaplığını yeniden yükleyin - Klasör yok Bu klasör desteklenmiyor Sonraki şarkıya geç Son şarkıya geç Tekrarlama modunu değiştir Müzik yüklemesi başarısız oldu - Auxio\'nun müzik kitaplığınızı görüntülemek için izne ihtiyacı var Bu görevi yerine getirebilecek bir uygulama bulunamadı Karıştırmayı açın veya kapatın Klasörü kaldır - Bütün şarkıları karıştır Auxio simgesi Bu sekmeyi taşı Albüm kapağı @@ -243,7 +236,6 @@ Kütüphane Azalan Uygulamanın temasını ve renklerini değiştirin - Klasörler Arayüz kontrollerini ve davranışını özelleştirin Davranış Ses normaleştirmesi @@ -263,7 +255,6 @@ Şarkıyı kendi kendine çal Çalma listesi %d Oynatma listesi oluşturuldu - Daha fazla Disk yok Kopyalandı Çalma listesine ekle diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 0d889edf5..b9fafd43d 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -2,7 +2,6 @@ Повторити спробу - Надати Жанри Виконавці Альбоми @@ -34,7 +33,6 @@ Аудіо Персоналізація - Музику не знайдено Пошук в бібліотеці… @@ -95,7 +93,6 @@ Заокруглені обкладинки Завантажено жанрів: %d Властивості пісні - Додати Ставити на паузу при повторенні пісні Дата додавання Частота дискретизації @@ -179,7 +176,6 @@ Невідомий виконавець Лаймовий Амперсанд & - Немає папок Перейти до наступної пісні Ввімкніть або вимкніть перемішування Зупинити відтворення @@ -228,7 +224,6 @@ Перейти до попередньої пісні Червоний Звук MPEG-4 - Перемішати всі пісні Іконка Auxio Рожевий Помаранчевий @@ -238,9 +233,7 @@ Не вдалося завантажити музику Видалити папку Розширене кодування звуку (AAC) - Звук Matroska %1$s, %2$s - Auxio потрібен дозвіл на читання вашої музичної бібліотеки Поведінка Змініть тему та кольори застосунку Налаштуйте елементи керування та поведінку інтерфейсу користувача @@ -251,7 +244,6 @@ Вирівнювання гучності Бібліотека Налаштуйте звук і поведінку при відтворенні - Папки За спаданням Зображення списку відтворення для %s Список відтворення @@ -285,7 +277,6 @@ Напрямок Вибрати Вибрати зображення - Докладніше Інформація про помилку Скопійовано Звіт @@ -336,4 +327,7 @@ Тут відображатимуться ваші списки відтворення. Тут відображатимуться ваші жанри. Тут з’являться ваші виконавці. - \ No newline at end of file + Як є + Включати приховані файли + Включати приховані аудіофайли (наприклад, .cache) + diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 9c56b4c75..27523b88e 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -5,7 +5,6 @@ 查看并控制音乐播放 重试 - 授予 流派 艺术家 专辑 @@ -32,9 +31,7 @@ 已加入播放队列 查看艺术家 查看专辑 - 添加 保存 - 没有文件夹 关于 版本 源代码 @@ -75,9 +72,7 @@ 刷新音乐 重新加载音乐库,如有可能使用缓存的标签 - 没有找到音乐 加载音乐失败 - Auxio 需要权限来读取音乐库 未找到可以处理此任务的应用 该目录不受支持 @@ -89,7 +84,6 @@ 切换到上一首歌 更改重复播放模式 开启或关闭随机播放模式 - 随机播放所有曲目 移除队列曲目 移动队列曲目 移动该标签 @@ -144,7 +138,6 @@ MPEG-1 音频 MPEG-4 音频 Ogg 音频 - Matroska 音频 免费无损音频编码 (FLAC) 动态 碟片 %d @@ -243,7 +236,6 @@ 图片 播放 曲库 - 文件夹 音乐 配置声音和播放行为 降序 @@ -280,7 +272,6 @@ 选择 选择图片 报告 - 更多 已复制 错误信息 无专辑 @@ -330,4 +321,7 @@ 流派会出现在此处。 专辑会出现在此处。 播放列表会出现在此处。 - \ No newline at end of file + 保持原样 + 包括隐藏的文件 + 包括隐藏的音频文件(排除 .cache) + diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 45407a509..e52ff3e75 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -2,7 +2,6 @@ 重試 - 取得 類型 演出者 專輯 @@ -38,7 +37,6 @@ 行為 記住隨機播放 - 找不到音樂 音軌 %d 播放/暫停 @@ -61,7 +59,6 @@ 取樣頻率 使用純黑暗色主題 顯示 - 新增 重設 正在載入你的音樂庫… 流派 @@ -73,7 +70,6 @@ 單曲 單曲 在更多的用戶界面元素上啟用圓角(需要專輯封面也要設定圓角) - 更多 演出者 新播放隊列 匯入播放隊列 diff --git a/app/src/main/res/values/colors_ui.xml b/app/src/main/res/values/colors_ui.xml index 984e35604..6763c18b3 100644 --- a/app/src/main/res/values/colors_ui.xml +++ b/app/src/main/res/values/colors_ui.xml @@ -24,7 +24,6 @@ #534341 #857370 #D8C2BE - #000000 #392E2C #FFEDEA #FFB4A9 @@ -47,100 +46,6 @@ #FCEAE7 #F7E4E1 #F1DEDC - #6E3028 - #FFFFFF - #AA6056 - #FFFFFF - #593B37 - #FFFFFF - #8F6C67 - #FFFFFF - #534015 - #FFFFFF - #887242 - #FFFFFF - #8C0009 - #FFFFFF - #DA342E - #FFFFFF - #FFF8F7 - #231918 - #FFF8F7 - #231918 - #F5DDDA - #4F3F3D - #6C5B59 - #897674 - #000000 - #392E2C - #FFEDEA - #FFB4A9 - #AA6056 - #FFFFFF - #8D483F - #FFFFFF - #8F6C67 - #FFFFFF - #745450 - #FFFFFF - #887242 - #FFFFFF - #6E592C - #FFFFFF - #E8D6D3 - #FFF8F7 - #FFFFFF - #FFF0EE - #FCEAE7 - #F7E4E1 - #F1DEDC - #44100B - #FFFFFF - #6E3028 - #FFFFFF - #341C18 - #FFFFFF - #593B37 - #FFFFFF - #2E2000 - #FFFFFF - #534015 - #FFFFFF - #4E0002 - #FFFFFF - #8C0009 - #FFFFFF - #FFF8F7 - #231918 - #FFF8F7 - #000000 - #F5DDDA - #2E211F - #4F3F3D - #4F3F3D - #000000 - #392E2C - #FFFFFF - #FFE7E3 - #6E3028 - #FFFFFF - #521A15 - #FFFFFF - #593B37 - #FFFFFF - #402622 - #FFFFFF - #534015 - #FFFFFF - #3A2A02 - #FFFFFF - #E8D6D3 - #FFF8F7 - #FFFFFF - #FFF0EE - #FCEAE7 - #F7E4E1 - #F1DEDC #8E4956 #FFFFFF @@ -166,7 +71,6 @@ #524345 #847375 #D6C2C3 - #000000 #382E2F #FEEDEE #FFB2BD @@ -189,100 +93,6 @@ #FBEAEB #F6E4E5 #F0DEDF - #6D2F3B - #FFFFFF - #A85F6B - #FFFFFF - #583B3F - #FFFFFF - #8D6C70 - #FFFFFF - #5A3D18 - #FFFFFF - #916E45 - #FFFFFF - #8C0009 - #FFFFFF - #DA342E - #FFFFFF - #FFF8F7 - #22191A - #FFF8F7 - #22191A - #F3DDDF - #4E3F41 - #6B5B5D - #887678 - #000000 - #382E2F - #FEEDEE - #FFB2BD - #A85F6B - #FFFFFF - #8B4753 - #FFFFFF - #8D6C70 - #FFFFFF - #735458 - #FFFFFF - #916E45 - #FFFFFF - #76562F - #FFFFFF - #E7D6D7 - #FFF8F7 - #FFFFFF - #FFF0F1 - #FBEAEB - #F6E4E5 - #F0DEDF - #430E1B - #FFFFFF - #6D2F3B - #FFFFFF - #331B1F - #FFFFFF - #583B3F - #FFFFFF - #341D00 - #FFFFFF - #5A3D18 - #FFFFFF - #4E0002 - #FFFFFF - #8C0009 - #FFFFFF - #FFF8F7 - #22191A - #FFF8F7 - #000000 - #F3DDDF - #2D2122 - #4E3F41 - #4E3F41 - #000000 - #382E2F - #FFFFFF - #FFE6E8 - #6D2F3B - #FFFFFF - #511926 - #FFFFFF - #583B3F - #FFFFFF - #3F2629 - #FFFFFF - #5A3D18 - #FFFFFF - #412705 - #FFFFFF - #E7D6D7 - #FFF8F7 - #FFFFFF - #FFF0F1 - #FBEAEB - #F6E4E5 - #F0DEDF #7B4E7F #FFFFFF @@ -308,7 +118,6 @@ #4D444C #7F747D #D0C3CC - #000000 #352F34 #F9EEF5 #EBB5ED @@ -331,100 +140,6 @@ #F6EBF2 #F0E5EC #EBDFE6 - #5D3362 - #FFFFFF - #936497 - #FFFFFF - #4F3D4F - #FFFFFF - #826E82 - #FFFFFF - #623730 - #FFFFFF - #9B685F - #FFFFFF - #8C0009 - #FFFFFF - #DA342E - #FFFFFF - #FFF7FA - #1F1A1F - #FFF7FA - #1F1A1F - #ECDFE8 - #494048 - #665C64 - #827880 - #000000 - #352F34 - #F9EEF5 - #EBB5ED - #936497 - #FFFFFF - #794C7D - #FFFFFF - #826E82 - #FFFFFF - #695668 - #FFFFFF - #9B685F - #FFFFFF - #7F5048 - #FFFFFF - #E2D7DE - #FFF7FA - #FFFFFF - #FCF0F7 - #F6EBF2 - #F0E5EC - #EBDFE6 - #38113F - #FFFFFF - #5D3362 - #FFFFFF - #2C1D2D - #FFFFFF - #4F3D4F - #FFFFFF - #3B1812 - #FFFFFF - #623730 - #FFFFFF - #4E0002 - #FFFFFF - #8C0009 - #FFFFFF - #FFF7FA - #1F1A1F - #FFF7FA - #000000 - #ECDFE8 - #292229 - #494048 - #494048 - #000000 - #352F34 - #FFFFFF - #FFE4FC - #5D3362 - #FFFFFF - #441C4A - #FFFFFF - #4F3D4F - #FFFFFF - #372738 - #FFFFFF - #623730 - #FFFFFF - #48221C - #FFFFFF - #E2D7DE - #FFF7FA - #FFFFFF - #FCF0F7 - #F6EBF2 - #F0E5EC - #EBDFE6 #68548E #FFFFFF @@ -450,7 +165,6 @@ #49454E #7A757F #CBC4CF - #000000 #322F35 #F5EFF7 #D3BCFD @@ -473,100 +187,6 @@ #F2ECF4 #EDE6EE #E7E0E8 - #4B3970 - #FFFFFF - #7F6AA5 - #FFFFFF - #473F54 - #FFFFFF - #797187 - #FFFFFF - #5F3742 - #FFFFFF - #976774 - #FFFFFF - #8C0009 - #FFFFFF - #DA342E - #FFFFFF - #FEF7FF - #1D1B20 - #FEF7FF - #1D1B20 - #E7E0EB - #45414A - #625D67 - #7E7983 - #000000 - #322F35 - #F5EFF7 - #D3BCFD - #7F6AA5 - #FFFFFF - #65528B - #FFFFFF - #797187 - #FFFFFF - #60586E - #FFFFFF - #976774 - #FFFFFF - #7C4F5B - #FFFFFF - #DED8E0 - #FEF7FF - #FFFFFF - #F8F1FA - #F2ECF4 - #EDE6EE - #E7E0E8 - #2A164D - #FFFFFF - #4B3970 - #FFFFFF - #251F32 - #FFFFFF - #473F54 - #FFFFFF - #391722 - #FFFFFF - #5F3742 - #FFFFFF - #4E0002 - #FFFFFF - #8C0009 - #FFFFFF - #FEF7FF - #1D1B20 - #FEF7FF - #000000 - #E7E0EB - #26222B - #45414A - #45414A - #000000 - #322F35 - #FFFFFF - #F3E8FF - #4B3970 - #FFFFFF - #352258 - #FFFFFF - #473F54 - #FFFFFF - #30293D - #FFFFFF - #5F3742 - #FFFFFF - #46212C - #FFFFFF - #DED8E0 - #FEF7FF - #FFFFFF - #F8F1FA - #F2ECF4 - #EDE6EE - #E7E0E8 #515B92 #FFFFFF @@ -592,7 +212,6 @@ #46464F #767680 #C7C5D0 - #000000 #303036 #F2EFF7 #BAC3FF @@ -615,100 +234,6 @@ #EFEDF4 #E9E7EF #E4E1E9 - #353F74 - #FFFFFF - #6871AA - #FFFFFF - #3F4255 - #FFFFFF - #717389 - #FFFFFF - #593851 - #FFFFFF - #8E6984 - #FFFFFF - #8C0009 - #FFFFFF - #DA342E - #FFFFFF - #FBF8FF - #1B1B21 - #FBF8FF - #1B1B21 - #E3E1EC - #42424B - #5E5E67 - #7A7A83 - #000000 - #303036 - #F2EFF7 - #BAC3FF - #6871AA - #FFFFFF - #4F5890 - #FFFFFF - #717389 - #FFFFFF - #585B6F - #FFFFFF - #8E6984 - #FFFFFF - #74516B - #FFFFFF - #DBD9E0 - #FBF8FF - #FFFFFF - #F5F2FA - #EFEDF4 - #E9E7EF - #E4E1E9 - #131D52 - #FFFFFF - #353F74 - #FFFFFF - #1E2133 - #FFFFFF - #3F4255 - #FFFFFF - #34182F - #FFFFFF - #593851 - #FFFFFF - #4E0002 - #FFFFFF - #8C0009 - #FFFFFF - #FBF8FF - #1B1B21 - #FBF8FF - #000000 - #E3E1EC - #23232B - #42424B - #42424B - #000000 - #303036 - #FFFFFF - #EAEAFF - #353F74 - #FFFFFF - #1E285D - #FFFFFF - #3F4255 - #FFFFFF - #292C3E - #FFFFFF - #593851 - #FFFFFF - #40233A - #FFFFFF - #DBD9E0 - #FBF8FF - #FFFFFF - #F5F2FA - #EFEDF4 - #E9E7EF - #E4E1E9 #37618E #FFFFFF @@ -734,7 +259,6 @@ #43474E #73777F #C3C6CF - #000000 #2E3135 #EFF0F7 #A1C9FD @@ -757,100 +281,6 @@ #ECEEF4 #E7E8EE #E1E2E8 - #164571 - #FFFFFF - #4F77A6 - #FFFFFF - #384454 - #FFFFFF - #697587 - #FFFFFF - #4F3B5B - #FFFFFF - #826D8F - #FFFFFF - #8C0009 - #FFFFFF - #DA342E - #FFFFFF - #F8F9FF - #191C20 - #F8F9FF - #191C20 - #DFE2EB - #3F434A - #5B5F67 - #777B83 - #000000 - #2E3135 - #EFF0F7 - #A1C9FD - #4F77A6 - #FFFFFF - #345E8C - #FFFFFF - #697587 - #FFFFFF - #515D6E - #FFFFFF - #826D8F - #FFFFFF - #695475 - #FFFFFF - #D8DAE0 - #F8F9FF - #FFFFFF - #F2F3FA - #ECEEF4 - #E7E8EE - #E1E2E8 - #002342 - #FFFFFF - #164571 - #FFFFFF - #172332 - #FFFFFF - #384454 - #FFFFFF - #2C1B38 - #FFFFFF - #4F3B5B - #FFFFFF - #4E0002 - #FFFFFF - #8C0009 - #FFFFFF - #F8F9FF - #191C20 - #F8F9FF - #000000 - #DFE2EB - #20242B - #3F434A - #3F434A - #000000 - #2E3135 - #FFFFFF - #E2EDFF - #164571 - #FFFFFF - #002E53 - #FFFFFF - #384454 - #FFFFFF - #222E3D - #FFFFFF - #4F3B5B - #FFFFFF - #372543 - #FFFFFF - #D8DAE0 - #F8F9FF - #FFFFFF - #F2F3FA - #ECEEF4 - #E7E8EE - #E1E2E8 #136682 #FFFFFF @@ -876,7 +306,6 @@ #40484C #70787D #C0C8CD - #000000 #2C3134 #EDF1F5 #8BD0F0 @@ -899,100 +328,6 @@ #EAEEF2 #E4E9EC #DFE3E7 - #00495F - #FFFFFF - #347D9A - #FFFFFF - #314650 - #FFFFFF - #637882 - #FFFFFF - #413F60 - #FFFFFF - #747195 - #FFFFFF - #8C0009 - #FFFFFF - #DA342E - #FFFFFF - #F6FAFE - #171C1F - #F6FAFE - #171C1F - #DCE4E9 - #3C4448 - #586065 - #747C81 - #000000 - #2C3134 - #EDF1F5 - #8BD0F0 - #347D9A - #FFFFFF - #0D6480 - #FFFFFF - #637882 - #FFFFFF - #4A5F69 - #FFFFFF - #747195 - #FFFFFF - #5B587B - #FFFFFF - #D6DBDE - #F6FAFE - #FFFFFF - #F0F4F8 - #EAEEF2 - #E4E9EC - #DFE3E7 - #002633 - #FFFFFF - #00495F - #FFFFFF - #10252E - #FFFFFF - #314650 - #FFFFFF - #211E3D - #FFFFFF - #413F60 - #FFFFFF - #4E0002 - #FFFFFF - #8C0009 - #FFFFFF - #F6FAFE - #171C1F - #F6FAFE - #000000 - #DCE4E9 - #1D2529 - #3C4448 - #3C4448 - #000000 - #2C3134 - #FFFFFF - #D5F0FF - #00495F - #FFFFFF - #003141 - #FFFFFF - #314650 - #FFFFFF - #1B2F39 - #FFFFFF - #413F60 - #FFFFFF - #2B2949 - #FFFFFF - #D6DBDE - #F6FAFE - #FFFFFF - #F0F4F8 - #EAEEF2 - #E4E9EC - #DFE3E7 #006877 #FFFFFF @@ -1018,7 +353,6 @@ #3F484B #6F797B #BFC8CB - #000000 #2B3133 #ECF2F3 #83D2E4 @@ -1041,100 +375,6 @@ #E9EFF0 #E3E9EB #DEE3E5 - #004A55 - #FFFFFF - #277F8F - #FFFFFF - #2F464C - #FFFFFF - #60797E - #FFFFFF - #394261 - #FFFFFF - #6B7395 - #FFFFFF - #8C0009 - #FFFFFF - #DA342E - #FFFFFF - #F5FAFC - #171D1E - #F5FAFC - #171D1E - #DBE4E7 - #3B4447 - #576163 - #737C7F - #000000 - #2B3133 - #ECF2F3 - #83D2E4 - #277F8F - #FFFFFF - #006574 - #FFFFFF - #60797E - #FFFFFF - #486065 - #FFFFFF - #6B7395 - #FFFFFF - #525B7B - #FFFFFF - #D5DBDD - #F5FAFC - #FFFFFF - #EFF4F6 - #E9EFF0 - #E3E9EB - #DEE3E5 - #00262D - #FFFFFF - #004A55 - #FFFFFF - #0D252A - #FFFFFF - #2F464C - #FFFFFF - #18213E - #FFFFFF - #394261 - #FFFFFF - #4E0002 - #FFFFFF - #8C0009 - #FFFFFF - #F5FAFC - #171D1E - #F5FAFC - #000000 - #DBE4E7 - #1D2527 - #3B4447 - #3B4447 - #000000 - #2B3133 - #FFFFFF - #C6F4FF - #004A55 - #FFFFFF - #00323A - #FFFFFF - #2F464C - #FFFFFF - #183035 - #FFFFFF - #394261 - #FFFFFF - #232B49 - #FFFFFF - #D5DBDD - #F5FAFC - #FFFFFF - #EFF4F6 - #E9EFF0 - #E3E9EB - #DEE3E5 #006B5F #FFFFFF @@ -1160,7 +400,6 @@ #3F4946 #6F7976 #BEC9C5 - #000000 #2B3230 #ECF2EF #82D5C7 @@ -1183,100 +422,6 @@ #E9EFEC #E3EAE7 #DDE4E1 - #004C44 - #FFFFFF - #298176 - #FFFFFF - #2F4743 - #FFFFFF - #607A74 - #FFFFFF - #29465C - #FFFFFF - #5B7890 - #FFFFFF - #8C0009 - #FFFFFF - #DA342E - #FFFFFF - #F4FBF8 - #161D1B - #F4FBF8 - #161D1B - #DAE5E1 - #3B4543 - #57615F - #737D7A - #000000 - #2B3230 - #ECF2EF - #82D5C7 - #298176 - #FFFFFF - #00685D - #FFFFFF - #607A74 - #FFFFFF - #48615C - #FFFFFF - #5B7890 - #FFFFFF - #435F77 - #FFFFFF - #D5DBD9 - #F4FBF8 - #FFFFFF - #EFF5F2 - #E9EFEC - #E3EAE7 - #DDE4E1 - #002823 - #FFFFFF - #004C44 - #FFFFFF - #0D2622 - #FFFFFF - #2F4743 - #FFFFFF - #02243A - #FFFFFF - #29465C - #FFFFFF - #4E0002 - #FFFFFF - #8C0009 - #FFFFFF - #F4FBF8 - #161D1B - #F4FBF8 - #000000 - #DAE5E1 - #1C2624 - #3B4543 - #3B4543 - #000000 - #2B3230 - #FFFFFF - #A8FCED - #004C44 - #FFFFFF - #00332D - #FFFFFF - #2F4743 - #FFFFFF - #18312D - #FFFFFF - #29465C - #FFFFFF - #102F45 - #FFFFFF - #D5DBD9 - #F4FBF8 - #FFFFFF - #EFF5F2 - #E9EFEC - #E3EAE7 - #DDE4E1 #3C6838 #FFFFFF @@ -1302,7 +447,6 @@ #424940 #73796F #C2C8BD - #000000 #2D322B #EFF2E9 #A2D399 @@ -1325,100 +469,6 @@ #ECEFE6 #E6E9E0 #E0E4DA - #214C1F - #FFFFFF - #527F4D - #FFFFFF - #384734 - #FFFFFF - #697964 - #FFFFFF - #1A494E - #FFFFFF - #4F7C80 - #FFFFFF - #8C0009 - #FFFFFF - #DA342E - #FFFFFF - #F7FBF1 - #191D17 - #F7FBF1 - #191D17 - #DEE5D8 - #3E453C - #5B6157 - #767D72 - #000000 - #2D322B - #EFF2E9 - #A2D399 - #527F4D - #FFFFFF - #3A6636 - #FFFFFF - #697964 - #FFFFFF - #50604C - #FFFFFF - #4F7C80 - #FFFFFF - #366367 - #FFFFFF - #D8DBD2 - #F7FBF1 - #FFFFFF - #F2F5EB - #ECEFE6 - #E6E9E0 - #E0E4DA - #002904 - #FFFFFF - #214C1F - #FFFFFF - #172615 - #FFFFFF - #384734 - #FFFFFF - #00272A - #FFFFFF - #1A494E - #FFFFFF - #4E0002 - #FFFFFF - #8C0009 - #FFFFFF - #F7FBF1 - #191D17 - #F7FBF1 - #000000 - #DEE5D8 - #20261E - #3E453C - #3E453C - #000000 - #2D322B - #FFFFFF - #C6FABC - #214C1F - #FFFFFF - #07350B - #FFFFFF - #384734 - #FFFFFF - #22301F - #FFFFFF - #1A494E - #FFFFFF - #003236 - #FFFFFF - #D8DBD2 - #F7FBF1 - #FFFFFF - #F2F5EB - #ECEFE6 - #E6E9E0 - #E0E4DA #4A672D #FFFFFF @@ -1444,7 +494,6 @@ #44483D #75796C #C4C8BA - #000000 #2F312A #F0F2E6 #B0D18B @@ -1467,100 +516,6 @@ #EDEFE4 #E8E9DE #E2E3D8 - #304A13 - #FFFFFF - #607D41 - #FFFFFF - #3C4630 - #FFFFFF - #6D785F - #FFFFFF - #1A4A48 - #FFFFFF - #4F7C7A - #FFFFFF - #8C0009 - #FFFFFF - #DA342E - #FFFFFF - #F9FAEF - #1A1C16 - #F9FAEF - #1A1C16 - #E1E4D5 - #40443A - #5C6155 - #787C70 - #000000 - #2F312A - #F0F2E6 - #B0D18B - #607D41 - #FFFFFF - #48642A - #FFFFFF - #6D785F - #FFFFFF - #556048 - #FFFFFF - #4F7C7A - #FFFFFF - #366361 - #FFFFFF - #D9DBD0 - #F9FAEF - #FFFFFF - #F3F5E9 - #EDEFE4 - #E8E9DE - #E2E3D8 - #132700 - #FFFFFF - #304A13 - #FFFFFF - #1C2512 - #FFFFFF - #3C4630 - #FFFFFF - #002726 - #FFFFFF - #1A4A48 - #FFFFFF - #4E0002 - #FFFFFF - #8C0009 - #FFFFFF - #F9FAEF - #1A1C16 - #F9FAEF - #000000 - #E1E4D5 - #21251C - #40443A - #40443A - #000000 - #2F312A - #FFFFFF - #D5F7AE - #304A13 - #FFFFFF - #1A3300 - #FFFFFF - #3C4630 - #FFFFFF - #26301B - #FFFFFF - #1A4A48 - #FFFFFF - #003331 - #FFFFFF - #D9DBD0 - #F9FAEF - #FFFFFF - #F3F5E9 - #EDEFE4 - #E8E9DE - #E2E3D8 #5B631E #FFFFFF @@ -1586,7 +541,6 @@ #47483B #78786A #C8C7B7 - #000000 #313128 #F3F1E4 #C3CD7B @@ -1609,100 +563,6 @@ #F0EEE1 #EAE9DC #E5E3D6 - #404701 - #FFFFFF - #717A32 - #FFFFFF - #42452B - #FFFFFF - #747759 - #FFFFFF - #1E4A3F - #FFFFFF - #517D70 - #FFFFFF - #8C0009 - #FFFFFF - #DA342E - #FFFFFF - #FCFAED - #1B1C14 - #FCFAED - #1B1C14 - #E4E3D2 - #434437 - #5F6052 - #7B7C6D - #000000 - #313128 - #F3F1E4 - #C3CD7B - #717A32 - #FFFFFF - #59611B - #FFFFFF - #747759 - #FFFFFF - #5B5E42 - #FFFFFF - #517D70 - #FFFFFF - #396458 - #FFFFFF - #DCDACE - #FCFAED - #FFFFFF - #F6F4E7 - #F0EEE1 - #EAE9DC - #E5E3D6 - #202500 - #FFFFFF - #404701 - #FFFFFF - #21240D - #FFFFFF - #42452B - #FFFFFF - #002820 - #FFFFFF - #1E4A3F - #FFFFFF - #4E0002 - #FFFFFF - #8C0009 - #FFFFFF - #FCFAED - #1B1C14 - #FCFAED - #000000 - #E4E3D2 - #24251A - #434437 - #434437 - #000000 - #313128 - #FFFFFF - #E9F39D - #404701 - #FFFFFF - #2A3000 - #FFFFFF - #42452B - #FFFFFF - #2C2E17 - #FFFFFF - #1E4A3F - #FFFFFF - #01332A - #FFFFFF - #DCDACE - #FCFAED - #FFFFFF - #F6F4E7 - #F0EEE1 - #EAE9DC - #E5E3D6 #7D570D #FFFFFF @@ -1728,7 +588,6 @@ #4E4539 #807567 #D2C4B4 - #000000 #362F27 #FBEFE2 #F0BE6D @@ -1751,100 +610,6 @@ #F8ECDF #F2E6D9 #ECE1D4 - #5B3D00 - #FFFFFF - #966D24 - #FFFFFF - #504026 - #FFFFFF - #857254 - #FFFFFF - #334829 - #FFFFFF - #647B57 - #FFFFFF - #8C0009 - #FFFFFF - #DA342E - #FFFFFF - #FFF8F3 - #201B13 - #FFF8F3 - #201B13 - #EFE0CF - #4A4135 - #685E50 - #84796B - #000000 - #362F27 - #FBEFE2 - #F0BE6D - #966D24 - #FFFFFF - #7A550A - #FFFFFF - #857254 - #FFFFFF - #6B593D - #FFFFFF - #647B57 - #FFFFFF - #4C6240 - #FFFFFF - #E4D8CC - #FFF8F3 - #FFFFFF - #FEF2E5 - #F8ECDF - #F2E6D9 - #ECE1D4 - #301F00 - #FFFFFF - #5B3D00 - #FFFFFF - #2D2009 - #FFFFFF - #504026 - #FFFFFF - #14270B - #FFFFFF - #334829 - #FFFFFF - #4E0002 - #FFFFFF - #8C0009 - #FFFFFF - #FFF8F3 - #201B13 - #FFF8F3 - #000000 - #EFE0CF - #2A2318 - #4A4135 - #4A4135 - #000000 - #362F27 - #FFFFFF - #FFE9CB - #5B3D00 - #FFFFFF - #3E2900 - #FFFFFF - #504026 - #FFFFFF - #392A12 - #FFFFFF - #334829 - #FFFFFF - #1E3214 - #FFFFFF - #E4D8CC - #FFF8F3 - #FFFFFF - #FEF2E5 - #F8ECDF - #F2E6D9 - #ECE1D4 #88511D #FFFFFF @@ -1870,7 +635,6 @@ #51443B #847469 #D6C3B6 - #000000 #382F28 #FEEEE4 #FFB77B @@ -1893,100 +657,6 @@ #FBEBE1 #F5E5DB #EFE0D6 - #673702 - #FFFFFF - #A26731 - #FFFFFF - #563E2A - #FFFFFF - #8C6F58 - #FFFFFF - #40461E - #FFFFFF - #72784B - #FFFFFF - #8C0009 - #FFFFFF - #DA342E - #FFFFFF - #FFF8F5 - #221A14 - #FFF8F5 - #221A14 - #F3DFD1 - #4D4037 - #6B5C52 - #87786D - #000000 - #382F28 - #FEEEE4 - #FFB77B - #A26731 - #FFFFFF - #854F1B - #FFFFFF - #8C6F58 - #FFFFFF - #715741 - #FFFFFF - #72784B - #FFFFFF - #596035 - #FFFFFF - #E7D7CD - #FFF8F5 - #FFFFFF - #FFF1E8 - #FBEBE1 - #F5E5DB - #EFE0D6 - #381B00 - #FFFFFF - #673702 - #FFFFFF - #311E0C - #FFFFFF - #563E2A - #FFFFFF - #1F2502 - #FFFFFF - #40461E - #FFFFFF - #4E0002 - #FFFFFF - #8C0009 - #FFFFFF - #FFF8F5 - #221A14 - #FFF8F5 - #000000 - #F3DFD1 - #2C2219 - #4D4037 - #4D4037 - #000000 - #382F28 - #FFFFFF - #FFE8D8 - #673702 - #FFFFFF - #472400 - #FFFFFF - #563E2A - #FFFFFF - #3D2816 - #FFFFFF - #40461E - #FFFFFF - #2A2F0A - #FFFFFF - #E7D7CD - #FFF8F5 - #FFFFFF - #FFF1E8 - #FBEBE1 - #F5E5DB - #EFE0D6 #604238 #FFFFFF @@ -2012,7 +682,6 @@ #504440 #827470 #D4C3BE - #000000 #33302E #F7EFED #E7BDB0 @@ -2035,100 +704,6 @@ #F4ECEA #EFE6E4 #E9E1DF - #593C32 - #FFFFFF - #87665A - #FFFFFF - #4F3F3B - #FFFFFF - #83716B - #FFFFFF - #484327 - #FFFFFF - #746E4E - #FFFFFF - #8C0009 - #FFFFFF - #DA342E - #FFFFFF - #FFF8F6 - #1E1B1A - #FFF8F6 - #1E1B1A - #F1DFD9 - #4C403D - #695C58 - #867873 - #000000 - #33302E - #F7EFED - #E7BDB0 - #8F6D61 - #FFFFFF - #74554A - #FFFFFF - #83716B - #FFFFFF - #695853 - #FFFFFF - #7B7554 - #FFFFFF - #625C3E - #FFFFFF - #E0D8D6 - #FFF8F6 - #FFFFFF - #FAF2F0 - #F4ECEA - #EFE6E4 - #E9E1DF - #341C14 - #FFFFFF - #593C32 - #FFFFFF - #2C1F1B - #FFFFFF - #4F3F3B - #FFFFFF - #272209 - #FFFFFF - #484327 - #FFFFFF - #4E0002 - #FFFFFF - #8C0009 - #FFFFFF - #FFF8F6 - #1E1B1A - #FFF8F6 - #000000 - #F1DFD9 - #2B221F - #4C403D - #4C403D - #000000 - #33302E - #FFFFFF - #FFE7E0 - #593C32 - #FFFFFF - #40261D - #FFFFFF - #4F3F3B - #FFFFFF - #372A25 - #FFFFFF - #484327 - #FFFFFF - #312D12 - #FFFFFF - #E0D8D6 - #FFF8F6 - #FFFFFF - #FAF2F0 - #F4ECEA - #EFE6E4 - #E9E1DF #505151 #FFFFFF @@ -2154,7 +729,6 @@ #444748 #747878 #C4C7C7 - #000000 #313030 #F4F0EF #C7C6C6 @@ -2177,98 +751,4 @@ #F1EDEC #EBE7E7 #E5E2E1 - #424343 - #FFFFFF - #757575 - #FFFFFF - #434343 - #FFFFFF - #757474 - #FFFFFF - #454244 - #FFFFFF - #787476 - #FFFFFF - #8C0009 - #FFFFFF - #DA342E - #FFFFFF - #FCF8F8 - #1C1B1B - #FCF8F8 - #1C1B1B - #E0E3E3 - #404344 - #5C6060 - #787B7C - #000000 - #313030 - #F4F0EF - #C7C6C6 - #747474 - #FFFFFF - #5C5C5C - #FFFFFF - #757474 - #FFFFFF - #5C5C5C - #FFFFFF - #777375 - #FFFFFF - #5E5B5D - #FFFFFF - #DDD9D8 - #FCF8F8 - #FFFFFF - #F7F3F2 - #F1EDEC - #EBE7E7 - #E5E2E1 - #212222 - #FFFFFF - #424343 - #FFFFFF - #222222 - #FFFFFF - #434343 - #FFFFFF - #242223 - #FFFFFF - #454244 - #FFFFFF - #4E0002 - #FFFFFF - #8C0009 - #FFFFFF - #FCF8F8 - #1C1B1B - #FCF8F8 - #000000 - #E0E3E3 - #212525 - #404344 - #404344 - #000000 - #313030 - #FFFFFF - #EDECEB - #424343 - #FFFFFF - #2C2D2D - #FFFFFF - #434343 - #FFFFFF - #2D2D2D - #FFFFFF - #454244 - #FFFFFF - #2E2C2E - #FFFFFF - #DDD9D8 - #FCF8F8 - #FFFFFF - #F7F3F2 - #F1EDEC - #EBE7E7 - #E5E2E1 \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index cc1da0f4c..1300d4a5f 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -7,13 +7,11 @@ 16dp 20dp 24dp - 28dp 48dp 56dp 64dp - 76dp 80dp 128dp @@ -25,15 +23,7 @@ 40dp 48dp - 48dp - 48dp - - 72dp - 52dp - @dimen/spacing_medium - 30dp - 48dp 16dp 128dp diff --git a/app/src/main/res/values/settings.xml b/app/src/main/res/values/settings.xml index eec560b35..78cbeca29 100644 --- a/app/src/main/res/values/settings.xml +++ b/app/src/main/res/values/settings.xml @@ -16,7 +16,6 @@ auxio_music_dirs auxio_cover_mode2 auxio_square_covers - auxio_include_dirs auxio_exclude_non_music auxio_with_hidden auxio_music_locations2 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c055b0dd0..0b5830db5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -18,9 +18,7 @@ Retry Pick folders - More - Grant Songs Song @@ -163,7 +161,6 @@ Reset - Add More Path style @@ -268,7 +265,7 @@ Exclude non-music Ignore audio files that are not music, such as podcasts Include hidden files - Include files and folders that are hidden (ex. .cache) + Include audio files that are hidden (ex. .cache) Multi-value separators Configure characters that denote multiple tag values Comma (,) @@ -317,7 +314,6 @@ Library Music folders Manage where music should be loaded from - Folders New folder Refresh music Reload the music library, using cached tags when possible @@ -326,14 +322,11 @@ Clear the tag cache and fully reload the music library (slower, but more complete) - No music found Music loading failed - Auxio needs permission to read your music library Unable to import a playlist from this file Unable to export the playlist to this file No app found that can handle this task - No folders This folder is not supported @@ -345,7 +338,6 @@ Skip to last song Change repeat mode Turn shuffle on or off - Shuffle all songs Stop playback Remove this song @@ -392,7 +384,6 @@ Ogg audio - Matroska audio Free Lossless Audio Codec (FLAC) diff --git a/app/src/main/res/values/styles_ui.xml b/app/src/main/res/values/styles_ui.xml index 65b6ca8c4..108191a94 100644 --- a/app/src/main/res/values/styles_ui.xml +++ b/app/src/main/res/values/styles_ui.xml @@ -68,10 +68,6 @@ 0dp - - - -