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.
-
-
+
+
@@ -15,7 +15,12 @@
-
+
+
+
+
+
+
@@ -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
-
-
-
-