From da712f45768dca9cd28fe73e94bd79957c1a2b2f Mon Sep 17 00:00:00 2001 From: tva2000hn Date: Tue, 24 Sep 2019 19:56:03 +0700 Subject: [PATCH 01/57] Update LrcHelper.java --- .../name/monkey/retromusic/lyrics/LrcHelper.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/lyrics/LrcHelper.java b/app/src/main/java/code/name/monkey/retromusic/lyrics/LrcHelper.java index e6fb2d7e..d2c05193 100644 --- a/app/src/main/java/code/name/monkey/retromusic/lyrics/LrcHelper.java +++ b/app/src/main/java/code/name/monkey/retromusic/lyrics/LrcHelper.java @@ -42,8 +42,8 @@ public class LrcHelper { private static final String CHARSET = "utf-8"; //[03:56.00][03:18.00][02:06.00][01:07.00]原谅我这一生不羁放纵爱自由 - private static final String LINE_REGEX = "((\\[\\d{2}:\\d{2}\\.\\d{2}])+)(.*)"; - private static final String TIME_REGEX = "\\[(\\d{2}):(\\d{2})\\.(\\d{2})]"; + private static final String LINE_REGEX = "((\\[\\d{2}:\\d{2}\\.\\d{2,3}])+)(.*)"; + private static final String TIME_REGEX = "\\[(\\d{2}):(\\d{2})\\.(\\d{2,3})]"; public static List parseLrcFromAssets(Context context, String fileName) { try { @@ -127,8 +127,14 @@ public class LrcHelper { String mil = timeMatcher.group(3); Lrc lrc = new Lrc(); if (content != null && content.length() != 0) { - lrc.setTime(Long.parseLong(min) * 60 * 1000 + Long.parseLong(sec) * 1000 - + Long.parseLong(mil) * 10); + if(Integer.parseInt(mil)< 100){ + lrc.setTime(Long.parseLong(min) * 60 * 1000 + Long.parseLong(sec) * 1000 + + Long.parseLong(mil) * 10);} + else{ + lrc.setTime(Long.parseLong(min) * 60 * 1000 + Long.parseLong(sec) * 1000 + + Long.parseLong(mil) + ); + } lrc.setText(content); lrcs.add(lrc); } @@ -148,4 +154,4 @@ public class LrcHelper { } return time + ""; } -} \ No newline at end of file +} From 045cdf79f95fe60f082ca7c8b06ba3bae21c3f65 Mon Sep 17 00:00:00 2001 From: tva2000hn Date: Tue, 24 Sep 2019 19:58:12 +0700 Subject: [PATCH 02/57] Update LyricsActivity.kt --- .../retromusic/activities/LyricsActivity.kt | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/LyricsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/LyricsActivity.kt index 45b58a8d..8a42d7e2 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/LyricsActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/LyricsActivity.kt @@ -7,6 +7,7 @@ import android.os.Build import android.os.Bundle import android.text.InputType import android.text.TextUtils +import android.util.Log import android.view.* import androidx.annotation.StringRes import androidx.core.content.ContextCompat @@ -151,8 +152,13 @@ class LyricsActivity : AbsMusicServiceActivity(), View.OnClickListener, ViewPage private fun showSyncedLyrics() { var content = "" try { - content = LyricUtil.getStringFromFile(song.title, song.artistName) + content = LyricUtil.getStringFromFile(song.data, song.artistName) } catch (e: Exception) { + try{ + content = LyricUtil.getStringFromFile(song.title, song.artistName) + } catch ( e2 : Exception){ + + } e.printStackTrace() } @@ -162,7 +168,7 @@ class LyricsActivity : AbsMusicServiceActivity(), View.OnClickListener, ViewPage input(hint = getString(R.string.paste_lyrics_here), prefill = content, inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE) { _, input -> - LyricUtil.writeLrcToLoc(song.title, song.artistName, input.toString()) + LyricUtil.writeLrcToLoc(song.data, song.artistName, input.toString()) } positiveButton(android.R.string.ok) { updateSong() @@ -365,8 +371,12 @@ class LyricsActivity : AbsMusicServiceActivity(), View.OnClickListener, ViewPage private fun loadLRCLyrics() { val song = MusicPlayerRemote.currentSong - if (LyricUtil.isLrcFileExist(song.title, song.artistName)) { - showLyricsLocal(LyricUtil.getLocalLyricFile(song.title, song.artistName)) + if (LyricUtil.isLrcFile2Exist(song.data, song.artistName)) { + showLyricsLocal(LyricUtil.getLocalLyricFile(song.data, song.artistName)) + } else { + if (LyricUtil.isLrcFileExist(song.title, song.artistName)) { + showLyricsLocal(LyricUtil.getLocalLyricFile(song.title, song.artistName)) + } } } @@ -376,4 +386,4 @@ class LyricsActivity : AbsMusicServiceActivity(), View.OnClickListener, ViewPage } } } -} \ No newline at end of file +} From 608f5ca35ab485074a12c2e7c719f850de26f2da Mon Sep 17 00:00:00 2001 From: tva2000hn Date: Tue, 24 Sep 2019 20:00:35 +0700 Subject: [PATCH 03/57] Update AbsPlayerFragment.kt --- .../name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt index e78329fe..4a184d27 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt @@ -217,7 +217,7 @@ abstract class AbsPlayerFragment : AbsMusicServiceFragment(), override fun doInBackground(vararg params: Song): Lyrics? { try { - var data: String? = LyricUtil.getStringFromFile(params[0].title, params[0].artistName) + var data: String? = LyricUtil.getStringFromFile(params[0].data, params[0].artistName) return if (TextUtils.isEmpty(data)) { data = MusicUtil.getLyrics(params[0]) return if (TextUtils.isEmpty(data)) { From 8a8c2a8b88afbda7606aaacf1d75d28ac0c947ca Mon Sep 17 00:00:00 2001 From: tva2000hn Date: Tue, 24 Sep 2019 20:02:04 +0700 Subject: [PATCH 04/57] Update LyricUtil.java --- .../monkey/retromusic/util/LyricUtil.java | 61 ++++++++++++++----- 1 file changed, 47 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/util/LyricUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/LyricUtil.java index e5c18c7c..daabcdab 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/LyricUtil.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/LyricUtil.java @@ -15,6 +15,7 @@ package code.name.monkey.retromusic.util; import android.util.Base64; +import android.util.Log; import java.io.BufferedReader; import java.io.File; @@ -40,11 +41,11 @@ public class LyricUtil { public static File writeLrcToLoc(@NonNull String title, @NonNull String artist, @NonNull String lrcContext) { FileWriter writer = null; try { - File file = new File(getLrcPath(title, artist)); - if (!file.getParentFile().exists()) { - file.getParentFile().mkdirs(); + File file = new File(getLrcPath2(title, artist)); + if (!file.exists()) { + file.mkdirs(); } - writer = new FileWriter(getLrcPath(title, artist)); + writer = new FileWriter(getLrcPath2(title, artist)); writer.write(lrcContext); return file; } catch (IOException e) { @@ -70,17 +71,41 @@ public class LyricUtil { return file.exists(); } - @NonNull - public static File getLocalLyricFile(@NonNull String title, @NonNull String artist) { - File file = new File(getLrcPath(title, artist)); - if (file.exists()) { - return file; - } else { - return new File("lyric file not exist"); - } + public static boolean isLrcFile2Exist(@NonNull String title, @NonNull String artist) { + File file = new File(getLrcPath2(title, artist)); + + return file.exists(); } - private static String getLrcPath(String title, String artist) { + @NonNull + public static File getLocalLyricFile(@NonNull String title, @NonNull String artist) { + try{ + File file = new File(getLrcPath(title, artist)); + File file2 = new File(getLrcPath2(title, artist)); + if (file.exists()) { + + return file; + } else if (file2.exists()) { + + return file2; + } + else { + + return new File("lyric file not exist"); + }} catch (Exception dfs){ + dfs.printStackTrace(); + return new File("lyric file not exist"); + + } + } + public static String getLrcPath2(String title, String artist) { + int fileExtPos = title.lastIndexOf("."); + String x2 = title.substring(0, title.length() -4 ) + ".lrc"; + Log.d("damn2",x2); + return x2; + } + + public static String getLrcPath(String title, String artist) { return lrcRootPath + title + " - " + artist + ".lrc"; } @@ -103,10 +128,18 @@ public class LyricUtil { @NonNull public static String getStringFromFile(@NonNull String title, @NonNull String artist) throws Exception { - File file = new File(getLrcPath(title, artist)); + File file; + File file2 = new File(getLrcPath(title, artist)); + File file3 = new File(getLrcPath2(title, artist)); + if(file2.exists()){ + file = file2; + } else { + file = file3; + } FileInputStream fin = new FileInputStream(file); String ret = convertStreamToString(fin); fin.close(); + // Log.d("damn2",ret); return ret; } From a224ec883eac96c192039bb1e0a9d86cef7dc511 Mon Sep 17 00:00:00 2001 From: tva2000hn Date: Tue, 24 Sep 2019 20:21:19 +0700 Subject: [PATCH 05/57] Update LyricUtil.java --- .../code/name/monkey/retromusic/util/LyricUtil.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/util/LyricUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/LyricUtil.java index daabcdab..57d4909a 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/LyricUtil.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/LyricUtil.java @@ -99,9 +99,14 @@ public class LyricUtil { } } public static String getLrcPath2(String title, String artist) { - int fileExtPos = title.lastIndexOf("."); - String x2 = title.substring(0, title.length() -4 ) + ".lrc"; - Log.d("damn2",x2); + String x2; + if(title.endsWith(".flac")||title.endsWith(".mogg")||title.endsWith(".alac")||title.endsWith(".aiff")||title.endsWith(".webv")){ + x2= title.substring(0, title.length() -5 ) + ".lrc"; + } + else{ + x2= title.substring(0, title.length() -4 ) + ".lrc";} + + return x2; } From e710dd22c71d3eb3e7d9e4491ad4630c54f16788 Mon Sep 17 00:00:00 2001 From: hemanthStack Date: Fri, 11 Oct 2019 09:34:55 +0530 Subject: [PATCH 06/57] Added loading artist image again from old method --- .../retromusic/glide/ArtistGlideRequest.java | 119 +++++++++++++++-- .../retromusic/glide/RetroMusicGlideModule.kt | 3 +- .../glide/artistimage/ArtistImageLoader.kt | 124 ++++++++++++++++-- .../retromusic/util/PreferenceUtil.java | 17 ++- 4 files changed, 244 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/glide/ArtistGlideRequest.java b/app/src/main/java/code/name/monkey/retromusic/glide/ArtistGlideRequest.java index 62193569..e339cf1d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/glide/ArtistGlideRequest.java +++ b/app/src/main/java/code/name/monkey/retromusic/glide/ArtistGlideRequest.java @@ -29,24 +29,127 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.resource.drawable.GlideDrawable; import com.bumptech.glide.request.target.Target; -import java.util.ArrayList; -import java.util.List; - import code.name.monkey.retromusic.App; import code.name.monkey.retromusic.R; -import code.name.monkey.retromusic.glide.artistimage.AlbumCover; import code.name.monkey.retromusic.glide.artistimage.ArtistImage; import code.name.monkey.retromusic.glide.palette.BitmapPaletteTranscoder; import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper; -import code.name.monkey.retromusic.model.Album; import code.name.monkey.retromusic.model.Artist; -import code.name.monkey.retromusic.model.Song; import code.name.monkey.retromusic.util.ArtistSignatureUtil; import code.name.monkey.retromusic.util.CustomArtistImageUtil; + +public class ArtistGlideRequest { + + public static final int DEFAULT_ANIMATION = android.R.anim.fade_in; + private static final DiskCacheStrategy DEFAULT_DISK_CACHE_STRATEGY = DiskCacheStrategy.SOURCE; + private static final int DEFAULT_ERROR_IMAGE = R.drawable.default_artist_art; + + public static DrawableTypeRequest createBaseRequest(RequestManager requestManager, Artist artist, boolean noCustomImage, boolean forceDownload) { + boolean hasCustomImage = CustomArtistImageUtil.Companion.getInstance(App.Companion.getContext()).hasCustomArtistImage(artist); + if (noCustomImage || !hasCustomImage) { + return requestManager.load(new ArtistImage(artist.getName(), forceDownload)); + } else { + return requestManager.load(CustomArtistImageUtil.getFile(artist)); + } + } + + public static Key createSignature(Artist artist) { + return ArtistSignatureUtil.getInstance(App.Companion.getContext()).getArtistSignature(artist.getName()); + } + + public static class Builder { + final RequestManager requestManager; + final Artist artist; + boolean noCustomImage; + boolean forceDownload; + + private Builder(@NonNull RequestManager requestManager, Artist artist) { + this.requestManager = requestManager; + this.artist = artist; + } + + public static Builder from(@NonNull RequestManager requestManager, Artist artist) { + return new Builder(requestManager, artist); + } + + public PaletteBuilder generatePalette(Context context) { + return new PaletteBuilder(this, context); + } + + public BitmapBuilder asBitmap() { + return new BitmapBuilder(this); + } + + public Builder noCustomImage(boolean noCustomImage) { + this.noCustomImage = noCustomImage; + return this; + } + + public Builder forceDownload(boolean forceDownload) { + this.forceDownload = forceDownload; + return this; + } + + public DrawableRequestBuilder build() { + //noinspection unchecked + return createBaseRequest(requestManager, artist, noCustomImage, forceDownload) + .diskCacheStrategy(DEFAULT_DISK_CACHE_STRATEGY) + .error(DEFAULT_ERROR_IMAGE) + .animate(DEFAULT_ANIMATION) + .priority(Priority.LOW) + .override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) + .signature(createSignature(artist)); + } + } + + public static class BitmapBuilder { + private final Builder builder; + + public BitmapBuilder(Builder builder) { + this.builder = builder; + } + + public BitmapRequestBuilder build() { + //noinspection unchecked + return createBaseRequest(builder.requestManager, builder.artist, builder.noCustomImage, builder.forceDownload) + .asBitmap() + .diskCacheStrategy(DEFAULT_DISK_CACHE_STRATEGY) + .error(DEFAULT_ERROR_IMAGE) + .animate(DEFAULT_ANIMATION) + .priority(Priority.LOW) + .override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) + .signature(createSignature(builder.artist)); + } + } + + public static class PaletteBuilder { + final Context context; + private final Builder builder; + + public PaletteBuilder(Builder builder, Context context) { + this.builder = builder; + this.context = context; + } + + public BitmapRequestBuilder build() { + //noinspection unchecked + return createBaseRequest(builder.requestManager, builder.artist, builder.noCustomImage, builder.forceDownload) + .asBitmap() + .transcode(new BitmapPaletteTranscoder(context), BitmapPaletteWrapper.class) + .diskCacheStrategy(DEFAULT_DISK_CACHE_STRATEGY) + .error(DEFAULT_ERROR_IMAGE) + .animate(DEFAULT_ANIMATION) + .priority(Priority.LOW) + .override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) + .signature(createSignature(builder.artist)); + } + } +} + /** * @author Karim Abou Zeid (kabouzeid) - */ + *//* public class ArtistGlideRequest { public static final int DEFAULT_ANIMATION = android.R.anim.fade_in; @@ -152,4 +255,4 @@ public class ArtistGlideRequest { .signature(createSignature(builder.artist)); } } -} +}*/ diff --git a/app/src/main/java/code/name/monkey/retromusic/glide/RetroMusicGlideModule.kt b/app/src/main/java/code/name/monkey/retromusic/glide/RetroMusicGlideModule.kt index da9620f9..816a324f 100644 --- a/app/src/main/java/code/name/monkey/retromusic/glide/RetroMusicGlideModule.kt +++ b/app/src/main/java/code/name/monkey/retromusic/glide/RetroMusicGlideModule.kt @@ -17,6 +17,7 @@ package code.name.monkey.retromusic.glide import android.content.Context import code.name.monkey.retromusic.glide.artistimage.ArtistImage import code.name.monkey.retromusic.glide.artistimage.ArtistImageLoader +import code.name.monkey.retromusic.glide.artistimage.Factory import code.name.monkey.retromusic.glide.audiocover.AudioFileCover import code.name.monkey.retromusic.glide.audiocover.AudioFileCoverLoader import com.bumptech.glide.Glide @@ -30,6 +31,6 @@ class RetroMusicGlideModule : GlideModule { override fun registerComponents(context: Context, glide: Glide) { glide.register(AudioFileCover::class.java, InputStream::class.java, AudioFileCoverLoader.Factory()) - glide.register(ArtistImage::class.java, InputStream::class.java, ArtistImageLoader.Factory()) + glide.register(ArtistImage::class.java, InputStream::class.java, Factory(context)) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImageLoader.kt b/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImageLoader.kt index 40e21d8d..270b0466 100644 --- a/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImageLoader.kt +++ b/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImageLoader.kt @@ -15,25 +15,131 @@ package code.name.monkey.retromusic.glide.artistimage import android.content.Context -import android.graphics.Bitmap -import android.graphics.Canvas -import android.media.MediaMetadataRetriever -import code.name.monkey.retromusic.glide.audiocover.AudioFileCoverUtils -import code.name.monkey.retromusic.util.ImageUtil +import code.name.monkey.retromusic.deezer.Data +import code.name.monkey.retromusic.deezer.DeezerApiService +import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.PreferenceUtil import com.bumptech.glide.Priority +import com.bumptech.glide.integration.okhttp3.OkHttpUrlLoader import com.bumptech.glide.load.data.DataFetcher import com.bumptech.glide.load.model.GenericLoaderFactory +import com.bumptech.glide.load.model.GlideUrl import com.bumptech.glide.load.model.ModelLoader import com.bumptech.glide.load.model.ModelLoaderFactory import com.bumptech.glide.load.model.stream.StreamModelLoader -import java.io.ByteArrayInputStream -import java.io.ByteArrayOutputStream +import okhttp3.OkHttpClient import java.io.IOException import java.io.InputStream +import java.util.concurrent.TimeUnit -class AlbumCover( +class ArtistImage(val artistName: String, val skipOkHttpCache: Boolean) + +class ArtistImageFetcher( + private val context: Context, + private val deezerApiService: DeezerApiService, + val model: ArtistImage, + val urlLoader: ModelLoader, + val width: Int, + val height: Int +) : DataFetcher { + + private var urlFetcher: DataFetcher? = null + private var isCancelled: Boolean = false + + override fun cleanup() { + urlFetcher?.cleanup() + } + + override fun getId(): String { + return model.artistName + } + + override fun cancel() { + isCancelled = true + urlFetcher?.cancel() + } + + override fun loadData(priority: Priority?): InputStream? { + if (!MusicUtil.isArtistNameUnknown(model.artistName) && PreferenceUtil.isAllowedToDownloadMetadata(context)) { + val artists = model.artistName.split(",|&") + val response = deezerApiService.getArtistImage(artists[0]).execute() + + if (!response.isSuccessful) { + throw IOException("Request failed with code: " + response.code()); + } + + if (isCancelled) return null + + return try { + val deezerResponse = response.body(); + val imageUrl = deezerResponse?.data?.get(0)?.let { getHighestQuality(it) } + val glideUrl = GlideUrl(imageUrl) + urlFetcher = urlLoader.getResourceFetcher(glideUrl, width, height) + urlFetcher?.loadData(priority) + } catch (e: Exception) { + null + } + } else return null + } + + private fun getHighestQuality(imageUrl: Data): String { + return when { + imageUrl.pictureXl.isNotEmpty() -> imageUrl.pictureXl + imageUrl.pictureBig.isNotEmpty() -> imageUrl.pictureBig + imageUrl.pictureMedium.isNotEmpty() -> imageUrl.pictureMedium + imageUrl.pictureSmall.isNotEmpty() -> imageUrl.pictureSmall + imageUrl.picture.isNotEmpty() -> imageUrl.picture + else -> "" + } + } +} + +class ArtistImageLoader( + val context: Context, + val deezerApiService: DeezerApiService, + val urlLoader: ModelLoader +) : StreamModelLoader { + + override fun getResourceFetcher(model: ArtistImage, width: Int, height: Int): DataFetcher { + return ArtistImageFetcher(context, deezerApiService, model, urlLoader, width, height) + } +} + +class Factory( + val context: Context +) : ModelLoaderFactory { + private var deezerApiService: DeezerApiService + private var okhttpFactory: OkHttpUrlLoader.Factory + + init { + okhttpFactory = OkHttpUrlLoader.Factory(OkHttpClient.Builder() + .connectTimeout(TIMEOUT, TimeUnit.MILLISECONDS) + .readTimeout(TIMEOUT, TimeUnit.MILLISECONDS) + .writeTimeout(TIMEOUT, TimeUnit.MILLISECONDS) + .build()) + deezerApiService = DeezerApiService.invoke(DeezerApiService.createDefaultOkHttpClient(context) + .connectTimeout(TIMEOUT, TimeUnit.MILLISECONDS) + .readTimeout(TIMEOUT, TimeUnit.MILLISECONDS) + .writeTimeout(TIMEOUT, TimeUnit.MILLISECONDS) + .build()) + } + + override fun build(context: Context?, factories: GenericLoaderFactory?): ModelLoader { + return ArtistImageLoader(context!!, deezerApiService, okhttpFactory.build(context, factories)) + } + + override fun teardown() { + okhttpFactory.teardown() + } + + companion object { + // we need these very low values to make sure our artist image loading calls doesn't block the image loading queue + private const val TIMEOUT: Long = 700 + } + +} +/*class AlbumCover( var year: Int, var filePath: String?) @@ -207,7 +313,7 @@ class ArtistImageLoader( } } -} +}*/ /* class ArtistImage(val artistName: String, val skipOkHttpCache: Boolean) diff --git a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.java index c269e42e..5017139f 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.java @@ -19,6 +19,8 @@ import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.content.res.TypedArray; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; import android.net.Uri; import android.preference.PreferenceManager; @@ -142,11 +144,24 @@ public final class PreferenceUtil { private static PreferenceUtil sInstance; private final SharedPreferences mPreferences; - private PreferenceUtil(@NonNull final Context context) { mPreferences = PreferenceManager.getDefaultSharedPreferences(context); } + public static boolean isAllowedToDownloadMetadata(final Context context) { + switch (getInstance(context).autoDownloadImagesPolicy()) { + case "always": + return true; + case "only_wifi": + final ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo netInfo = connectivityManager.getActiveNetworkInfo(); + return netInfo != null && netInfo.getType() == ConnectivityManager.TYPE_WIFI && netInfo.isConnectedOrConnecting(); + case "never": + default: + return false; + } + } + @NonNull public static PreferenceUtil getInstance(Context context) { if (sInstance == null) { From b9e3483a47d07a896f71771e6bbeb859906e00d3 Mon Sep 17 00:00:00 2001 From: h4h13 Date: Sat, 12 Oct 2019 02:31:39 +0530 Subject: [PATCH 07/57] Fix miniplayer showing, cardview,remmeber last selected option, --- .../retromusic/activities/MainActivity.kt | 17 +- .../base/AbsSlidingMusicPanelActivity.kt | 2 +- .../dialogs/OptionsSheetDialogFragment.kt | 4 +- .../glide/RetroMusicColoredTarget.kt | 25 -- .../glide/artistimage/ArtistImageLoader.kt | 312 +----------------- .../name/monkey/retromusic/util/ViewUtil.kt | 18 +- .../retromusic/views/TopCornerCardView.kt | 43 +++ .../main/res/layout-land/activity_album.xml | 5 +- .../layout-land/activity_artist_details.xml | 7 +- .../res/layout-land/fragment_banner_home.xml | 3 +- .../res/layout-xlarge-land/activity_album.xml | 6 +- .../activity_artist_details.xml | 5 +- .../fragment_banner_home.xml | 3 +- .../main/res/layout-xlarge/activity_album.xml | 9 +- .../layout-xlarge/activity_artist_details.xml | 9 +- .../layout-xlarge/fragment_banner_home.xml | 4 +- app/src/main/res/layout/activity_album.xml | 13 +- .../res/layout/activity_artist_details.xml | 10 +- .../main/res/layout/fragment_banner_home.xml | 14 +- app/src/main/res/layout/fragment_folder.xml | 10 +- app/src/main/res/values/styles.xml | 13 + build.gradle | 2 +- 22 files changed, 154 insertions(+), 380 deletions(-) create mode 100644 app/src/main/java/code/name/monkey/retromusic/views/TopCornerCardView.kt diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt index b1c2196b..9aad95d3 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt @@ -64,7 +64,7 @@ class MainActivity : AbsSlidingMusicPanelActivity(), SharedPreferences.OnSharedP } if (savedInstanceState == null) { - selectedFragment(PreferenceUtil.getInstance(this).lastPage) + setMusicChooser(PreferenceUtil.getInstance(this).lastMusicChooser) } else { restoreCurrentFragment() } @@ -222,7 +222,7 @@ class MainActivity : AbsSlidingMusicPanelActivity(), SharedPreferences.OnSharedP override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String) { if (key == PreferenceUtil.GENERAL_THEME || - key==PreferenceUtil.BLACK_THEME|| + key == PreferenceUtil.BLACK_THEME || key == PreferenceUtil.ADAPTIVE_COLOR_APP || key == PreferenceUtil.DOMINANT_COLOR || key == PreferenceUtil.USER_NAME || @@ -264,7 +264,7 @@ class MainActivity : AbsSlidingMusicPanelActivity(), SharedPreferences.OnSharedP }*/ } - fun selectedFragment(itemId: Int) { + private fun selectedFragment(itemId: Int) { when (itemId) { R.id.action_album, R.id.action_artist, @@ -272,16 +272,25 @@ class MainActivity : AbsSlidingMusicPanelActivity(), SharedPreferences.OnSharedP R.id.action_genre, R.id.action_song -> setCurrentFragment(LibraryFragment.newInstance(itemId), itemId.toString()) R.id.action_home -> setCurrentFragment(BannerHomeFragment.newInstance(), BannerHomeFragment.TAG) - R.id.action_folder -> setCurrentFragment(FoldersFragment.newInstance(this), FoldersFragment.TAG) else -> { setCurrentFragment(BannerHomeFragment.newInstance(), BannerHomeFragment.TAG) } } } + fun setMusicChooser(key: Int) { + PreferenceUtil.getInstance(this).lastMusicChooser = key + when (key) { + FOLDER -> setCurrentFragment(FoldersFragment.newInstance(this), FoldersFragment.TAG) + else -> selectedFragment(PreferenceUtil.getInstance(this).lastPage) + } + } + companion object { const val APP_INTRO_REQUEST = 2323 const val HOME = 0 + const val FOLDER = 1 + const val LIBRARY = 2 private const val TAG = "MainActivity" private const val APP_USER_INFO_REQUEST = 9003 private const val REQUEST_CODE_THEME = 9002 diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt index 75f14e00..e11fded1 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt @@ -127,6 +127,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), AbsPlay fun expandPanel() { bottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED + setMiniPlayerAlphaProgress(1f) } private fun setMiniPlayerAlphaProgress(progress: Float) { @@ -175,7 +176,6 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), AbsPlay } when (panelState) { BottomSheetBehavior.STATE_EXPANDED -> { - onPanelExpanded() } BottomSheetBehavior.STATE_COLLAPSED -> onPanelCollapsed() diff --git a/app/src/main/java/code/name/monkey/retromusic/dialogs/OptionsSheetDialogFragment.kt b/app/src/main/java/code/name/monkey/retromusic/dialogs/OptionsSheetDialogFragment.kt index a6da2d35..8beb3f96 100644 --- a/app/src/main/java/code/name/monkey/retromusic/dialogs/OptionsSheetDialogFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/dialogs/OptionsSheetDialogFragment.kt @@ -35,8 +35,8 @@ class OptionsSheetDialogFragment : DialogFragment(), View.OnClickListener { override fun onClick(view: View) { val mainActivity = activity as MainActivity? ?: return when (view.id) { - R.id.actionFolders -> mainActivity.selectedFragment(R.id.action_folder) - R.id.actionLibrary -> mainActivity.selectedFragment(PreferenceUtil.getInstance(requireContext()).lastPage) + R.id.actionFolders -> mainActivity.setMusicChooser(MainActivity.FOLDER) + R.id.actionLibrary -> mainActivity.setMusicChooser(MainActivity.LIBRARY) R.id.actionSettings -> NavigationUtil.goToSettings(mainActivity) R.id.actionRate -> NavigationUtil.goToPlayStore(mainActivity) } diff --git a/app/src/main/java/code/name/monkey/retromusic/glide/RetroMusicColoredTarget.kt b/app/src/main/java/code/name/monkey/retromusic/glide/RetroMusicColoredTarget.kt index e7aa3ed1..6ca232b0 100644 --- a/app/src/main/java/code/name/monkey/retromusic/glide/RetroMusicColoredTarget.kt +++ b/app/src/main/java/code/name/monkey/retromusic/glide/RetroMusicColoredTarget.kt @@ -51,29 +51,4 @@ abstract class RetroMusicColoredTarget(view: ImageView) : BitmapPaletteTarget(vi RetroColorUtil.getColor(it.palette, defaultColor)) } } - - /* protected val defaultFooterColor: Int - get() = ATHUtil.resolveColor(getView().context, R.attr.defaultFooterColor) - - protected val albumArtistFooterColor: Int - get() = ATHUtil.resolveColor(getView().context, R.attr.cardBackgroundColor) - - override fun onLoadFailed(e: Exception, errorDrawable: Drawable?) { - super.onLoadFailed(e, errorDrawable) - onColorReady(defaultFooterColor) - } - - override fun onResourceReady(resource: BitmapPaletteWrapper, - glideAnimation: GlideAnimation?) { - super.onResourceReady(resource, glideAnimation) - - val defaultColor = defaultFooterColor - - onColorReady(if (PreferenceUtil.getInstance(getView().context).isDominantColor) - getDominantColor(resource.bitmap, defaultColor) - else - getColor(resource.palette, defaultColor)) - } - - abstract fun onColorReady(color: Int)*/ } diff --git a/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImageLoader.kt b/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImageLoader.kt index 270b0466..af811112 100644 --- a/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImageLoader.kt +++ b/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImageLoader.kt @@ -62,7 +62,7 @@ class ArtistImageFetcher( override fun loadData(priority: Priority?): InputStream? { if (!MusicUtil.isArtistNameUnknown(model.artistName) && PreferenceUtil.isAllowedToDownloadMetadata(context)) { - val artists = model.artistName.split(",|&") + val artists = model.artistName.split(",") val response = deezerApiService.getArtistImage(artists[0]).execute() if (!response.isSuccessful) { @@ -97,8 +97,8 @@ class ArtistImageFetcher( class ArtistImageLoader( val context: Context, - val deezerApiService: DeezerApiService, - val urlLoader: ModelLoader + private val deezerApiService: DeezerApiService, + private val urlLoader: ModelLoader ) : StreamModelLoader { override fun getResourceFetcher(model: ArtistImage, width: Int, height: Int): DataFetcher { @@ -110,10 +110,10 @@ class Factory( val context: Context ) : ModelLoaderFactory { private var deezerApiService: DeezerApiService - private var okhttpFactory: OkHttpUrlLoader.Factory + private var okHttpFactory: OkHttpUrlLoader.Factory init { - okhttpFactory = OkHttpUrlLoader.Factory(OkHttpClient.Builder() + okHttpFactory = OkHttpUrlLoader.Factory(OkHttpClient.Builder() .connectTimeout(TIMEOUT, TimeUnit.MILLISECONDS) .readTimeout(TIMEOUT, TimeUnit.MILLISECONDS) .writeTimeout(TIMEOUT, TimeUnit.MILLISECONDS) @@ -126,11 +126,11 @@ class Factory( } override fun build(context: Context?, factories: GenericLoaderFactory?): ModelLoader { - return ArtistImageLoader(context!!, deezerApiService, okhttpFactory.build(context, factories)) + return ArtistImageLoader(context!!, deezerApiService, okHttpFactory.build(context, factories)) } override fun teardown() { - okhttpFactory.teardown() + okHttpFactory.teardown() } companion object { @@ -139,301 +139,3 @@ class Factory( } } -/*class AlbumCover( - var year: Int, - var filePath: String?) - -class ArtistImage(val artistName: String, // filePath to get the image of the artist - val albumCovers: List -) { - - fun toIdString(): String { - val id = StringBuilder(artistName) - for (albumCover in albumCovers) { - id.append(albumCover.year).append(albumCover.filePath) - } - return id.toString() - } -} - - -class ArtistImageFetcher( - val artistImage: ArtistImage, - val ignoreMediaStore: Boolean -) : DataFetcher { - private var stream: InputStream? = null - - override fun cleanup() { - if (stream != null) { - try { - stream?.close() - } catch (ignore: IOException) { - // can't do much about it - } - - } - } - - override fun cancel() { - - } - - override fun loadData(priority: Priority?): InputStream { - println("MOSAIC load data for" + artistImage.artistName) - stream = getMosaic(artistImage.albumCovers)?.let { - it - } - return stream as InputStream - } - - private fun getMosaic(albumCovers: List): InputStream? { - val retriever = MediaMetadataRetriever() - val artistBitMapSize = 512 - val images = HashMap() - var result: InputStream? = null - var streams = ArrayList() - try { - for (albumCover in albumCovers) { - var picture: ByteArray? = null - if (!ignoreMediaStore) { - retriever.setDataSource(albumCover.filePath) - picture = retriever.embeddedPicture - } - val stream: InputStream? = if (picture != null) { - ByteArrayInputStream(picture) - } else { - AudioFileCoverUtils.fallback(albumCover.filePath) - } - if (stream != null) { - images[stream] = albumCover.year - } - val nbImages = images.size - if (nbImages > 3) { - streams = ArrayList(images.keys) - - var divisor = 1 - var i = 1 - while (i < nbImages && Math.pow(i.toDouble(), 2.0) <= nbImages) { - divisor = i - ++i - } - divisor += 1 - var nbTiles = Math.pow(divisor.toDouble(), 2.0) - - if (nbImages < nbTiles) { - divisor -= 1; - nbTiles = Math.pow(divisor.toDouble(), 2.0) - } - - val resize = (artistBitMapSize / divisor) + 1 - - val bitmap = Bitmap.createBitmap(artistBitMapSize, artistBitMapSize, Bitmap.Config.RGB_565) - val canvas = Canvas(bitmap) - - var x = 0F - var y = 0F - - var j = 0 - while (j < streams.size && j < nbTiles) { - val tempBitmap = ImageUtil.resize(streams[j], resize, resize) - canvas.drawBitmap(tempBitmap, x, y, null) - x += resize - - if (x >= artistBitMapSize) { - x = 0F - y += resize - } - ++j - } - - val bos = ByteArrayOutputStream() - bitmap.compress(Bitmap.CompressFormat.PNG, 0, bos) - result = ByteArrayInputStream(bos.toByteArray()) - - } else if (nbImages > 0) { - var maxEntryYear: Map.Entry? = null - for (entry in images.entries) { - if (maxEntryYear == null || entry.value - .compareTo(maxEntryYear.value) > 0) { - maxEntryYear = entry - } - - } - result = if (maxEntryYear != null) { - maxEntryYear.key - } else { - images.entries - .iterator() - .next() - .key - } - } - } - } finally { - retriever.release() - try { - for (stream in streams) { - stream.close() - } - } catch (e: IOException) { - e.printStackTrace() - } - - } - return result - - } - - override fun getId(): String { - println("MOSAIC get id for" + artistImage.artistName) - // never return NULL here! - // this id is used to determine whether the image is already cached - // we use the artist name as well as the album years + file paths - return artistImage.toIdString() + "ignoremediastore:" + ignoreMediaStore - } - -} - -class ArtistImageLoader( - private val context: Context -) : StreamModelLoader { - - override fun getResourceFetcher(model: ArtistImage, width: Int, height: Int): DataFetcher { - - return ArtistImageFetcher(model, PreferenceUtil.getInstance(context).ignoreMediaStoreArtwork()) - } - - class Factory : ModelLoaderFactory { - - override fun build(context: Context, factories: GenericLoaderFactory): ModelLoader { - return ArtistImageLoader(context) - } - - override fun teardown() { - - } - } -}*/ -/* - -class ArtistImage(val artistName: String, val skipOkHttpCache: Boolean) - -class ArtistImageFetcher(private val context: Context, - private val deezerApiService: DeezerApiService, - private val okHttp: OkHttpClient, - private val model: ArtistImage) : DataFetcher { - @Volatile - private var isCancelled: Boolean = false - private var call: Call? = null - private var streamFetcher: OkHttpStreamFetcher? = null - - - override fun getDataClass(): Class { - return InputStream::class.java - } - - override fun getDataSource(): DataSource { - return DataSource.LOCAL - } - - override fun loadData(priority: Priority, callback: DataFetcher.DataCallback) { - try { - if (!MusicUtil.isArtistNameUnknown(model.artistName) && RetroUtil.isAllowedToDownloadMetadata(context)) { - val artists = model.artistName.split(",") - call = deezerApiService.getArtistImage(artists[0]) - call?.enqueue(object : Callback { - override fun onFailure(call: Call, t: Throwable) { - callback.onLoadFailed(Exception(t)) - } - - override fun onResponse(call: Call, response: Response) { - if (isCancelled) { - callback.onDataReady(null) - return - } - try { - val deezerResponse: DeezerResponse? = response.body() - val url = deezerResponse?.data?.get(0)?.let { getHighestQuality(it) } - streamFetcher = OkHttpStreamFetcher(okHttp, GlideUrl(url)) - streamFetcher?.loadData(priority, callback) - } catch (e: Exception) { - callback.onLoadFailed(Exception("No artist image url found")) - } - } - - }) - } - } catch (e: Exception) { - callback.onLoadFailed(e) - } - - } - - fun getHighestQuality(imageUrl: Data): String { - return when { - imageUrl.pictureXl.isNotEmpty() -> imageUrl.pictureXl - imageUrl.pictureBig.isNotEmpty() -> imageUrl.pictureBig - imageUrl.pictureMedium.isNotEmpty() -> imageUrl.pictureMedium - imageUrl.pictureSmall.isNotEmpty() -> imageUrl.pictureSmall - imageUrl.picture.isNotEmpty() -> imageUrl.picture - else -> "" - } - } - - override fun cleanup() { - if (streamFetcher != null) { - streamFetcher!!.cleanup() - } - } - - override fun cancel() { - isCancelled = true - call?.cancel() - if (streamFetcher != null) { - streamFetcher!!.cancel() - } - } - - companion object { - val TAG: String = ArtistImageFetcher::class.java.simpleName - } -} - -class ArtistImageLoader(private val context: Context, - private val deezerApiService: DeezerApiService, - private val okhttp: OkHttpClient) : ModelLoader { - - override fun buildLoadData(model: ArtistImage, width: Int, height: Int, options: Options): ModelLoader.LoadData? { - return ModelLoader.LoadData(ObjectKey(model.artistName), ArtistImageFetcher(context, deezerApiService, okhttp, model)) - } - - override fun handles(model: ArtistImage): Boolean { - return true - } - - class Factory(private val context: Context) : ModelLoaderFactory { - private val deezerApiService: DeezerApiService = - DeezerApiService.invoke(DeezerApiService.createDefaultOkHttpClient(context) - .connectTimeout(TIMEOUT.toLong(), TimeUnit.MILLISECONDS) - .readTimeout(TIMEOUT.toLong(), TimeUnit.MILLISECONDS) - .writeTimeout(TIMEOUT.toLong(), TimeUnit.MILLISECONDS) - .build()) - private val okHttp: OkHttpClient = OkHttpClient.Builder() - .connectTimeout(TIMEOUT.toLong(), TimeUnit.MILLISECONDS) - .readTimeout(TIMEOUT.toLong(), TimeUnit.MILLISECONDS) - .writeTimeout(TIMEOUT.toLong(), TimeUnit.MILLISECONDS) - .build() - - - override fun build(multiFactory: MultiModelLoaderFactory): ModelLoader { - return ArtistImageLoader(context, deezerApiService, okHttp) - } - - override fun teardown() {} - } - - companion object { - // we need these very low values to make sure our artist image loading calls doesn't block the image loading queue - private const val TIMEOUT = 700 - } -}*/ diff --git a/app/src/main/java/code/name/monkey/retromusic/util/ViewUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/ViewUtil.kt index fb2edc4b..b31a3884 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/ViewUtil.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/ViewUtil.kt @@ -35,12 +35,26 @@ import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.retromusic.R +import com.google.android.material.card.MaterialCardView +import com.google.android.material.shape.CornerFamily +import com.google.android.material.shape.MaterialShapeDrawable import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView object ViewUtil { const val RETRO_MUSIC_ANIM_TIME = 1000 + fun cardViewTopCorners(cardView: MaterialCardView) { + + val radius = PreferenceUtil.getInstance(cardView.context).dialogCorner + (cardView.background as? MaterialShapeDrawable).let { + it?.shapeAppearanceModel?.apply { + toBuilder() + .setTopLeftCorner(CornerFamily.CUT, 10f) + .build() + } + } + } fun createTextColorTransition(v: TextView, @ColorInt startColor: Int, @ColorInt endColor: Int): Animator { return createColorAnimator(v, "textColor", startColor, endColor) @@ -66,7 +80,7 @@ object ViewUtil { progress.setColorFilter(newColor, PorterDuff.Mode.SRC_IN) val background = ld.findDrawableByLayerId(android.R.id.background) - val primaryColor = ATHUtil.resolveColor(progressSlider.context, R.attr.colorPrimary); + val primaryColor = ATHUtil.resolveColor(progressSlider.context, R.attr.colorPrimary) background.setColorFilter(MaterialValueHelper.getPrimaryDisabledTextColor(progressSlider.context, ColorUtil.isColorLight(primaryColor)), PorterDuff.Mode.SRC_IN) val secondaryProgress = ld.findDrawableByLayerId(android.R.id.secondaryProgress) @@ -121,7 +135,7 @@ object ViewUtil { recyclerView.setPopupTextColor(MaterialValueHelper.getPrimaryTextColor(context, ColorUtil.isColorLight(accentColor))) recyclerView.setThumbColor(accentColor) recyclerView.setTrackColor(Color.TRANSPARENT) - recyclerView.setTrackColor(ColorUtil.withAlpha(ATHUtil.resolveColor(context, R.attr.colorControlNormal), 0.12f)); + recyclerView.setTrackColor(ColorUtil.withAlpha(ATHUtil.resolveColor(context, R.attr.colorControlNormal), 0.12f)) } diff --git a/app/src/main/java/code/name/monkey/retromusic/views/TopCornerCardView.kt b/app/src/main/java/code/name/monkey/retromusic/views/TopCornerCardView.kt new file mode 100644 index 00000000..8b261d23 --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/views/TopCornerCardView.kt @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2019 Hemanth Savarala. + * + * Licensed under the GNU General Public License v3 + * + * This 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 software 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. + */ + +package code.name.monkey.retromusic.views + +import android.content.Context +import android.util.AttributeSet +import code.name.monkey.retromusic.util.PreferenceUtil +import com.google.android.material.card.MaterialCardView +import com.google.android.material.shape.CornerFamily +import com.google.android.material.shape.MaterialShapeDrawable + +/** + * Created by hemanths on 2019-10-11. + */ +class TopCornerCardView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 +) : MaterialCardView(context, attrs, defStyleAttr) { + private val shapeDrawable = MaterialShapeDrawable() + + init { + val cornerSize= PreferenceUtil.getInstance(context).dialogCorner + val shapeModel = shapeDrawable.shapeAppearanceModel + background = shapeDrawable + shapeDrawable.shapeAppearanceModel = shapeModel.toBuilder() + .setTopLeftCorner(CornerFamily.ROUNDED, cornerSize) + .setBottomLeftCorner(CornerFamily.ROUNDED, cornerSize) + .setBottomRightCorner(CornerFamily.ROUNDED, cornerSize) + .setTopRightCorner(CornerFamily.ROUNDED, cornerSize) + .build() + } +} diff --git a/app/src/main/res/layout-land/activity_album.xml b/app/src/main/res/layout-land/activity_album.xml index ae4c5017..c9e3fb11 100644 --- a/app/src/main/res/layout-land/activity_album.xml +++ b/app/src/main/res/layout-land/activity_album.xml @@ -41,8 +41,9 @@ android:id="@+id/contentContainer" android:layout_width="match_parent" android:layout_height="wrap_content" - app:cardCornerRadius="16dp" - app:cardElevation="0dp"> + android:layout_marginTop="6dp" + app:cardElevation="8dp" + app:shapeAppearanceOverlay="@style/TopCornerCardView"> + app:cardElevation="8dp" + android:layout_marginTop="6dp" + app:shapeAppearanceOverlay="@style/TopCornerCardView"> diff --git a/app/src/main/res/layout-land/fragment_banner_home.xml b/app/src/main/res/layout-land/fragment_banner_home.xml index 71d97ae7..dad7c6ba 100644 --- a/app/src/main/res/layout-land/fragment_banner_home.xml +++ b/app/src/main/res/layout-land/fragment_banner_home.xml @@ -114,7 +114,8 @@ + app:cardElevation="8dp" + app:shapeAppearanceOverlay="@style/TopCornerCardView"> diff --git a/app/src/main/res/layout-xlarge-land/activity_album.xml b/app/src/main/res/layout-xlarge-land/activity_album.xml index 9652184c..3f14506e 100644 --- a/app/src/main/res/layout-xlarge-land/activity_album.xml +++ b/app/src/main/res/layout-xlarge-land/activity_album.xml @@ -57,9 +57,9 @@ android:id="@+id/contentContainer" android:layout_width="match_parent" android:layout_height="wrap_content" - app:cardCornerRadius="16dp" - app:cardElevation="0dp" - app:cardPreventCornerOverlap="true"> + android:layout_marginTop="6dp" + app:cardElevation="8dp" + app:shapeAppearanceOverlay="@style/TopCornerCardView"> + app:cardElevation="8dp" + android:layout_marginTop="6dp" + app:shapeAppearanceOverlay="@style/TopCornerCardView"> + app:cardElevation="8dp" + app:shapeAppearanceOverlay="@style/TopCornerCardView"> diff --git a/app/src/main/res/layout-xlarge/activity_album.xml b/app/src/main/res/layout-xlarge/activity_album.xml index f06b8496..c95bc60d 100644 --- a/app/src/main/res/layout-xlarge/activity_album.xml +++ b/app/src/main/res/layout-xlarge/activity_album.xml @@ -19,7 +19,9 @@ android:id="@+id/appBarLayout" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@android:color/transparent"> + android:background="@android:color/transparent" + android:elevation="0dp" + app:elevation="0dp"> + android:layout_marginTop="6dp" + app:cardElevation="8dp" + app:shapeAppearanceOverlay="@style/TopCornerCardView"> + android:background="@android:color/transparent" + android:elevation="0dp" + app:elevation="0dp"> + app:cardElevation="8dp" + android:layout_marginTop="6dp" + app:shapeAppearanceOverlay="@style/TopCornerCardView"> + app:cardElevation="8dp" + app:shapeAppearanceOverlay="@style/TopCornerCardView"> diff --git a/app/src/main/res/layout/activity_album.xml b/app/src/main/res/layout/activity_album.xml index 82bf29cd..d9d1f209 100755 --- a/app/src/main/res/layout/activity_album.xml +++ b/app/src/main/res/layout/activity_album.xml @@ -9,7 +9,9 @@ android:id="@+id/appBarLayout" android:layout_width="match_parent" android:layout_height="wrap_content" - app:liftOnScroll="true"> + android:background="@android:color/transparent" + android:elevation="0dp" + app:elevation="0dp"> + android:layout_marginTop="6dp" + app:cardElevation="8dp" + app:shapeAppearanceOverlay="@style/TopCornerCardView"> diff --git a/app/src/main/res/layout/activity_artist_details.xml b/app/src/main/res/layout/activity_artist_details.xml index bc290293..6bec3cfd 100755 --- a/app/src/main/res/layout/activity_artist_details.xml +++ b/app/src/main/res/layout/activity_artist_details.xml @@ -9,7 +9,10 @@ + android:layout_height="wrap_content" + android:background="@android:color/transparent" + android:elevation="0dp" + app:elevation="0dp"> + android:layout_marginTop="6dp" + app:cardElevation="8dp" + app:shapeAppearanceOverlay="@style/TopCornerCardView"> + android:layout_height="match_parent"> - + app:layout_scrollFlags="scroll|enterAlways" + app:shapeAppearance="@style/ToolbarCornerCardView"> - + @@ -104,7 +103,8 @@ + app:cardElevation="8dp" + app:shapeAppearanceOverlay="@style/TopCornerCardView"> diff --git a/app/src/main/res/layout/fragment_folder.xml b/app/src/main/res/layout/fragment_folder.xml index c05717d3..e31cd0df 100644 --- a/app/src/main/res/layout/fragment_folder.xml +++ b/app/src/main/res/layout/fragment_folder.xml @@ -25,7 +25,8 @@ android:id="@+id/appBarLayout" android:layout_width="match_parent" android:layout_height="wrap_content" - app:liftOnScroll="true"> + android:elevation="0dp" + app:elevation="0dp"> + app:layout_scrollFlags="scroll|enterAlways"> + android:paddingEnd="8dp" + app:layout_collapseMode="pin" /> - - @font/circular + + + + + diff --git a/build.gradle b/build.gradle index 420527be..c6b783ca 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.5.0' + classpath 'com.android.tools.build:gradle:3.5.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.android.tools.build:bundletool:0.9.0' } From b73fb9dbc363c283808d8672e4fa5113910d007e Mon Sep 17 00:00:00 2001 From: h4h13 Date: Sat, 12 Oct 2019 11:09:36 +0530 Subject: [PATCH 08/57] fix home card color in dark --- app/build.gradle | 4 ++-- app/src/main/res/layout-land/fragment_banner_home.xml | 1 + app/src/main/res/layout-xlarge-land/fragment_banner_home.xml | 1 + app/src/main/res/layout-xlarge/fragment_banner_home.xml | 1 + app/src/main/res/layout/fragment_banner_home.xml | 1 + app/src/main/res/layout/home_content.xml | 1 - 6 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 74796219..143dd68d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,8 +13,8 @@ android { vectorDrawables.useSupportLibrary = true applicationId "code.name.monkey.retromusic" - versionCode 379 - versionName '3.4.400-beta05' + versionCode 380 + versionName '3.4.400-beta06' multiDexEnabled true diff --git a/app/src/main/res/layout-land/fragment_banner_home.xml b/app/src/main/res/layout-land/fragment_banner_home.xml index dad7c6ba..8eadef8d 100644 --- a/app/src/main/res/layout-land/fragment_banner_home.xml +++ b/app/src/main/res/layout-land/fragment_banner_home.xml @@ -115,6 +115,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" app:cardElevation="8dp" + app:cardBackgroundColor="?colorPrimary" app:shapeAppearanceOverlay="@style/TopCornerCardView"> diff --git a/app/src/main/res/layout-xlarge-land/fragment_banner_home.xml b/app/src/main/res/layout-xlarge-land/fragment_banner_home.xml index fb5c53ad..d283285d 100644 --- a/app/src/main/res/layout-xlarge-land/fragment_banner_home.xml +++ b/app/src/main/res/layout-xlarge-land/fragment_banner_home.xml @@ -111,6 +111,7 @@ android:layout_height="wrap_content" android:layout_marginStart="@dimen/toolbar_margin_horizontal" android:layout_marginEnd="@dimen/toolbar_margin_horizontal" + app:cardBackgroundColor="?colorPrimary" app:cardElevation="8dp" app:shapeAppearanceOverlay="@style/TopCornerCardView"> diff --git a/app/src/main/res/layout-xlarge/fragment_banner_home.xml b/app/src/main/res/layout-xlarge/fragment_banner_home.xml index f858195c..7b125b7a 100644 --- a/app/src/main/res/layout-xlarge/fragment_banner_home.xml +++ b/app/src/main/res/layout-xlarge/fragment_banner_home.xml @@ -112,6 +112,7 @@ android:layout_marginStart="@dimen/toolbar_margin_horizontal" android:layout_marginEnd="@dimen/toolbar_margin_horizontal" app:cardElevation="8dp" + app:cardBackgroundColor="?colorPrimary" app:shapeAppearanceOverlay="@style/TopCornerCardView"> diff --git a/app/src/main/res/layout/fragment_banner_home.xml b/app/src/main/res/layout/fragment_banner_home.xml index 4048fec3..f66cf72a 100644 --- a/app/src/main/res/layout/fragment_banner_home.xml +++ b/app/src/main/res/layout/fragment_banner_home.xml @@ -104,6 +104,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:cardElevation="8dp" + app:cardBackgroundColor="?colorPrimary" app:shapeAppearanceOverlay="@style/TopCornerCardView"> diff --git a/app/src/main/res/layout/home_content.xml b/app/src/main/res/layout/home_content.xml index c2ecf56a..852ef0c4 100644 --- a/app/src/main/res/layout/home_content.xml +++ b/app/src/main/res/layout/home_content.xml @@ -20,7 +20,6 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="?colorPrimary" android:descendantFocusability="blocksDescendants" android:focusable="true" android:focusableInTouchMode="true" From df8a9c447ebb4b4c54dd568d40ce11beea05f14d Mon Sep 17 00:00:00 2001 From: h4h13 Date: Sat, 12 Oct 2019 12:11:48 +0530 Subject: [PATCH 09/57] Added desatuated color --- .../name/monkey/retromusic/activities/MainActivity.kt | 1 + .../activities/SupportDevelopmentActivity.kt | 9 ++++++--- .../fragments/settings/ThemeSettingsFragment.kt | 10 ++++++++++ .../name/monkey/retromusic/util/PreferenceUtil.java | 11 +++++++++++ .../monkey/retromusic/views/ColorIconsImageView.kt | 4 ++-- app/src/main/res/xml/pref_general.xml | 8 ++++++++ .../code/name/monkey/appthemehelper/ThemeStore.kt | 3 ++- 7 files changed, 40 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt index 9aad95d3..eb740960 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt @@ -244,6 +244,7 @@ class MainActivity : AbsSlidingMusicPanelActivity(), SharedPreferences.OnSharedP key == PreferenceUtil.ALBUM_COVER_STYLE || key == PreferenceUtil.HOME_ARTIST_GRID_STYLE || key == PreferenceUtil.ALBUM_COVER_TRANSFORM || + key == PreferenceUtil.DESATURATED_COLOR || key == PreferenceUtil.TAB_TEXT_MODE || key == PreferenceUtil.LIBRARY_CATEGORIES) postRecreate() diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/SupportDevelopmentActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/SupportDevelopmentActivity.kt index 0692f740..902ad982 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/SupportDevelopmentActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/SupportDevelopmentActivity.kt @@ -12,6 +12,7 @@ import android.view.ViewGroup import android.widget.TextView import android.widget.Toast import androidx.annotation.LayoutRes +import androidx.appcompat.widget.AppCompatImageView import androidx.recyclerview.widget.DefaultItemAnimator import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView @@ -22,7 +23,6 @@ import code.name.monkey.retromusic.BuildConfig import code.name.monkey.retromusic.R import code.name.monkey.retromusic.activities.base.AbsBaseActivity import code.name.monkey.retromusic.extensions.applyToolbar -import code.name.monkey.retromusic.views.IconImageView import com.anjlab.android.iab.v3.BillingProcessor import com.anjlab.android.iab.v3.SkuDetails import com.anjlab.android.iab.v3.TransactionDetails @@ -161,7 +161,10 @@ private class SkuDetailsLoadAsyncTask internal constructor(supportDevelopmentAct } } -class SkuDetailsAdapter(private var donationsDialog: SupportDevelopmentActivity, objects: List) : RecyclerView.Adapter() { +class SkuDetailsAdapter( + private var donationsDialog: SupportDevelopmentActivity, + objects: List +) : RecyclerView.Adapter() { private var skuDetailsList: List = ArrayList() init { @@ -218,7 +221,7 @@ class SkuDetailsAdapter(private var donationsDialog: SupportDevelopmentActivity, var title: TextView = view.findViewById(R.id.itemTitle) var text: TextView = view.findViewById(R.id.itemText) var price: TextView = view.findViewById(R.id.itemPrice) - var image: IconImageView = view.findViewById(R.id.itemImage) + var image: AppCompatImageView = view.findViewById(R.id.itemImage) } companion object { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/ThemeSettingsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/ThemeSettingsFragment.kt index 4adff377..67185f8c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/ThemeSettingsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/ThemeSettingsFragment.kt @@ -86,6 +86,16 @@ class ThemeSettingsFragment : AbsSettingsFragment() { true } + val desaturatedColor: ATESwitchPreference? = findPreference(PreferenceUtil.DESATURATED_COLOR) + desaturatedColor?.setOnPreferenceChangeListener { _, value -> + val desaturated = value as Boolean + ThemeStore.prefs(requireContext()).edit().putBoolean("desaturated_color", desaturated).apply() + PreferenceUtil.getInstance(requireContext()).setDesaturatedColor(desaturated) + requireActivity().recreate() + true + } + + val colorAppShortcuts: TwoStatePreference = findPreference("should_color_app_shortcuts")!! if (!VersionUtils.hasNougatMR()) { colorAppShortcuts.isVisible = false diff --git a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.java index 5017139f..49ad9f1e 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.java @@ -59,6 +59,7 @@ import code.name.monkey.retromusic.transform.VerticalStackTransformer; public final class PreferenceUtil { public static final String LIBRARY_CATEGORIES = "library_categories"; + public static final String DESATURATED_COLOR = "desaturated_color"; public static final String BLACK_THEME = "black_theme"; public static final String DIALOG_CORNER = "dialog_corner"; public static final String KEEP_SCREEN_ON = "keep_screen_on"; @@ -181,6 +182,16 @@ public final class PreferenceUtil { } } + public boolean desaturatedColor() { + return mPreferences.getBoolean(DESATURATED_COLOR, false); + } + + public void setDesaturatedColor(boolean value) { + final SharedPreferences.Editor editor = mPreferences.edit(); + editor.putBoolean(DESATURATED_COLOR, value); + editor.apply(); + } + public boolean getSleepTimerFinishMusic() { return mPreferences.getBoolean(SLEEP_TIMER_FINISH_SONG, false); } diff --git a/app/src/main/java/code/name/monkey/retromusic/views/ColorIconsImageView.kt b/app/src/main/java/code/name/monkey/retromusic/views/ColorIconsImageView.kt index 7f16a611..8663e3ba 100644 --- a/app/src/main/java/code/name/monkey/retromusic/views/ColorIconsImageView.kt +++ b/app/src/main/java/code/name/monkey/retromusic/views/ColorIconsImageView.kt @@ -22,6 +22,7 @@ import androidx.appcompat.widget.AppCompatImageView import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.RetroColorUtil @@ -49,7 +50,7 @@ class ColorIconsImageView : AppCompatImageView { private fun setIconBackgroundColor(color: Int) { setBackgroundResource(R.drawable.color_circle_gradient) - if (ATHUtil.isWindowBackgroundDark(context)) { + if (ATHUtil.isWindowBackgroundDark(context) && PreferenceUtil.getInstance(context).desaturatedColor()) { val desaturatedColor = RetroColorUtil.desaturateColor(color, 0.4f) backgroundTintList = ColorStateList.valueOf(desaturatedColor) imageTintList = ColorStateList.valueOf(ATHUtil.resolveColor(context, R.attr.colorPrimary)) @@ -61,5 +62,4 @@ class ColorIconsImageView : AppCompatImageView { invalidate() } - } diff --git a/app/src/main/res/xml/pref_general.xml b/app/src/main/res/xml/pref_general.xml index 4a498530..6da39af5 100755 --- a/app/src/main/res/xml/pref_general.xml +++ b/app/src/main/res/xml/pref_general.xml @@ -23,6 +23,7 @@ android:key="category_color" android:layout="@layout/preference_category_title" android:title="@string/colors"> + + + Date: Sat, 12 Oct 2019 13:43:33 +0530 Subject: [PATCH 10/57] Fix home crashing --- .../monkey/retromusic/adapter/HomeAdapter.kt | 92 +++++++++++-------- .../mainactivity/home/BannerHomeFragment.kt | 14 +-- .../main/res/layout/section_recycler_view.xml | 1 - 3 files changed, 55 insertions(+), 52 deletions(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/HomeAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/HomeAdapter.kt index 89661111..390a2d0a 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/HomeAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/HomeAdapter.kt @@ -15,20 +15,27 @@ import code.name.monkey.retromusic.adapter.song.SongAdapter import code.name.monkey.retromusic.loaders.PlaylistSongsLoader import code.name.monkey.retromusic.model.Album import code.name.monkey.retromusic.model.Artist -import code.name.monkey.retromusic.model.Home import code.name.monkey.retromusic.model.Playlist +import code.name.monkey.retromusic.providers.interfaces.Repository import code.name.monkey.retromusic.util.PreferenceUtil import com.google.android.material.textview.MaterialTextView class HomeAdapter( private val activity: AppCompatActivity, - private var homes: List, - private val displayMetrics: DisplayMetrics + private val displayMetrics: DisplayMetrics, + private val repository: Repository ) : RecyclerView.Adapter() { override fun getItemViewType(position: Int): Int { - return homes[position].homeSection + return when (position) { + 0 -> TOP_ARTISTS + 1 -> TOP_ALBUMS + 2 -> RECENT_ARTISTS + 3 -> RECENT_ALBUMS + 4 -> PLAYLISTS + else -> -1 + } } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { @@ -43,87 +50,92 @@ class HomeAdapter( } override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { - val home = homes[position] + println(getItemViewType(position)) when (getItemViewType(position)) { - - RECENT_ALBUMS, TOP_ALBUMS -> { + RECENT_ALBUMS -> { val viewHolder = holder as AlbumViewHolder - viewHolder.bindView(home) + viewHolder.bindView(repository.recentAlbums(), R.string.recent_albums, R.string.recent_added_albums) } - RECENT_ARTISTS, TOP_ARTISTS -> { + TOP_ALBUMS -> { + val viewHolder = holder as AlbumViewHolder + + viewHolder.bindView(repository.topAlbums(), R.string.top_albums, R.string.most_played_albums) + } + RECENT_ARTISTS -> { val viewHolder = holder as ArtistViewHolder - viewHolder.bindView(home) + viewHolder.bindView(repository.recentArtists(), R.string.recent_artists, R.string.recent_added_artists) + } + TOP_ARTISTS -> { + val viewHolder = holder as ArtistViewHolder + + viewHolder.bindView(repository.recentArtists(), R.string.top_artists, R.string.most_played_artists) } PLAYLISTS -> { val viewHolder = holder as PlaylistViewHolder - viewHolder.bindView(home) + viewHolder.bindView(repository.favoritePlaylist, R.string.favorites, R.string.favorites_songs) } } } override fun getItemCount(): Int { - return homes.size - } - - fun swapData(finalList: List) { - homes = finalList - notifyDataSetChanged() + return 5 } companion object { - @IntDef(RECENT_ALBUMS, TOP_ALBUMS, RECENT_ARTISTS, TOP_ARTISTS, GENRES, PLAYLISTS) + @IntDef(RECENT_ALBUMS, TOP_ALBUMS, RECENT_ARTISTS, TOP_ARTISTS, PLAYLISTS) @Retention(AnnotationRetention.SOURCE) annotation class HomeSection - const val RECENT_ALBUMS = 0 + const val RECENT_ALBUMS = 3 const val TOP_ALBUMS = 1 const val RECENT_ARTISTS = 2 - const val TOP_ARTISTS = 3 - const val GENRES = 4 - const val PLAYLISTS = 5 + const val TOP_ARTISTS = 0 + const val PLAYLISTS = 4 } private inner class AlbumViewHolder(view: View) : AbsHomeViewItem(view) { - fun bindView(home: Home) { + fun bindView(list: ArrayList, titleRes: Int, subtitleRes: Int) { recyclerView.apply { - adapter = AlbumFullWidthAdapter(activity, home.arrayList as ArrayList, displayMetrics) + adapter = AlbumFullWidthAdapter(activity, list, displayMetrics) } - title.text = activity.getString(home.title) - text.text = activity.getString(home.subTitle) + title.text = activity.getString(titleRes) + text.text = activity.getString(subtitleRes) } } - private inner class ArtistViewHolder(view: View) : AbsHomeViewItem(view) { - fun bindView(home: Home) { + inner class ArtistViewHolder(view: View) : AbsHomeViewItem(view) { + fun bindView(list: ArrayList, titleRes: Int, subtitleRes: Int) { recyclerView.apply { layoutManager = GridLayoutManager(activity, 1, GridLayoutManager.HORIZONTAL, false) - val artistAdapter = ArtistAdapter(activity, home.arrayList as ArrayList, + val artistAdapter = ArtistAdapter(activity, list, PreferenceUtil.getInstance(activity).getHomeGridStyle(activity), false, null) adapter = artistAdapter } - title.text = activity.getString(home.title) - text.text = activity.getString(home.subTitle) + title.text = activity.getString(titleRes) + text.text = activity.getString(subtitleRes) } } private inner class PlaylistViewHolder(view: View) : AbsHomeViewItem(view) { - fun bindView(home: Home) { - val songs = PlaylistSongsLoader.getPlaylistSongList(activity, home.arrayList[0] as Playlist) - recyclerView.apply { - val songAdapter = SongAdapter(activity, songs, R.layout.item_album_card, false, null) - layoutManager = GridLayoutManager(activity, 1, GridLayoutManager.HORIZONTAL, false) - adapter = songAdapter + fun bindView(arrayList: ArrayList, titleRes: Int, subtitleRes: Int) { + if (arrayList.isNotEmpty()) { + val songs = PlaylistSongsLoader.getPlaylistSongList(activity, arrayList[0]) + recyclerView.apply { + val songAdapter = SongAdapter(activity, songs, R.layout.item_album_card, false, null) + layoutManager = GridLayoutManager(activity, 1, GridLayoutManager.HORIZONTAL, false) + adapter = songAdapter + } + title.text = activity.getString(titleRes) + text.text = activity.getString(subtitleRes) } - title.text = activity.getString(home.title) - text.text = activity.getString(home.subTitle) } } - private open inner class AbsHomeViewItem(itemView: View) : RecyclerView.ViewHolder(itemView) { + open inner class AbsHomeViewItem(itemView: View) : RecyclerView.ViewHolder(itemView) { val recyclerView: RecyclerView = itemView.findViewById(R.id.recyclerView) val title: MaterialTextView = itemView.findViewById(R.id.title) val text: MaterialTextView = itemView.findViewById(R.id.text) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/home/BannerHomeFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/home/BannerHomeFragment.kt index 433282e6..667d5646 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/home/BannerHomeFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/home/BannerHomeFragment.kt @@ -28,8 +28,8 @@ import code.name.monkey.retromusic.model.Home import code.name.monkey.retromusic.model.smartplaylist.HistoryPlaylist import code.name.monkey.retromusic.model.smartplaylist.LastAddedPlaylist import code.name.monkey.retromusic.model.smartplaylist.MyTopTracksPlaylist -import code.name.monkey.retromusic.mvp.presenter.HomePresenter import code.name.monkey.retromusic.mvp.presenter.HomeView +import code.name.monkey.retromusic.providers.interfaces.Repository import code.name.monkey.retromusic.util.Compressor import code.name.monkey.retromusic.util.NavigationUtil import code.name.monkey.retromusic.util.PreferenceUtil @@ -48,17 +48,14 @@ import javax.inject.Inject class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallbacks, HomeView { private lateinit var homeAdapter: HomeAdapter - @Inject - lateinit var homePresenter: HomePresenter + lateinit var repository: Repository private var disposable: CompositeDisposable = CompositeDisposable() private lateinit var toolbar: Toolbar override fun sections(sections: ArrayList) { val finalList = sections.sortedWith(compareBy { it.priority }) - homeAdapter.swapData(finalList) - if (sections.isEmpty()) { showEmptyView() @@ -67,7 +64,6 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba } } - override fun onCreateView(inflater: LayoutInflater, viewGroup: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(if (PreferenceUtil.getInstance(requireContext()).isHomeBanner) R.layout.fragment_banner_home else R.layout.fragment_home, viewGroup, false) } @@ -137,10 +133,7 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba titleWelcome.text = String.format("%s", PreferenceUtil.getInstance(requireContext()).userName) App.musicComponent.inject(this) - homePresenter.attachView(this) - homePresenter.loadSections() - - homeAdapter = HomeAdapter(mainActivity, ArrayList(), displayMetrics) + homeAdapter = HomeAdapter(mainActivity, displayMetrics, repository) recyclerView.apply { layoutManager = LinearLayoutManager(mainActivity) @@ -183,7 +176,6 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba override fun onDestroyView() { super.onDestroyView() disposable.dispose() - homePresenter.detachView() } override fun showEmptyView() { diff --git a/app/src/main/res/layout/section_recycler_view.xml b/app/src/main/res/layout/section_recycler_view.xml index c71446a4..f68e7dda 100644 --- a/app/src/main/res/layout/section_recycler_view.xml +++ b/app/src/main/res/layout/section_recycler_view.xml @@ -60,7 +60,6 @@ android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="16dp" android:nestedScrollingEnabled="false" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" From 54c50b1a982fb9527c0958d3563850b1ea571994 Mon Sep 17 00:00:00 2001 From: h4h13 Date: Sat, 12 Oct 2019 14:59:52 +0530 Subject: [PATCH 11/57] Back button will be dark --- app/build.gradle | 4 +- app/src/main/assets/retro-changelog.html | 2 +- .../retromusic/activities/AboutActivity.kt | 3 +- .../activities/LicenseActivity.java | 3 +- .../retromusic/activities/SettingsActivity.kt | 2 +- .../activities/WhatsNewActivity.java | 3 +- .../activities/bugreport/BugReportActivity.kt | 101 +++++++++--------- .../retromusic/extensions/ActivityEx.kt | 3 +- .../mainactivity/LibraryFragment.java | 2 +- .../main/res/layout/activity_bug_report.xml | 1 + .../res/layout/fragment_main_settings.xml | 1 + app/src/main/res/values/colors.xml | 1 + app/src/main/res/values/styles.xml | 6 +- app/src/main/res/values/styles_parents.xml | 2 +- .../util/ToolbarContentTintHelper.java | 5 +- 15 files changed, 68 insertions(+), 71 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 143dd68d..ccf7efa2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,8 +13,8 @@ android { vectorDrawables.useSupportLibrary = true applicationId "code.name.monkey.retromusic" - versionCode 380 - versionName '3.4.400-beta06' + versionCode 381 + versionName '3.4.400-beta07' multiDexEnabled true diff --git a/app/src/main/assets/retro-changelog.html b/app/src/main/assets/retro-changelog.html index 1651aa45..22111448 100644 --- a/app/src/main/assets/retro-changelog.html +++ b/app/src/main/assets/retro-changelog.html @@ -1 +1 @@ -

v3.4.400

  • Added app rating dialog
  • Fix remaining time in playing queue
  • Fix font not applied for some components
  • Fix crashing on album details sorting
  • Fixed lot of internal bugs
  • Fix dialog expand
  • Fix list card color
  • Removed SlidingUpPanel to replace with BottomSheet
  • Removed color theme as per material design guidelines
  • Removed classic theme(We're bringing back)
  • Removed artist loading from Deezer because it's not official to use(will come back with official)
  • Replace line switch to Material Switch in settings
  • Performance improved
  • Updated internal libraries
  • Updated translation
  • Limiting the use of Theme engine for making use of system colors
  • Change home icon from the user icon
  • Corrected all toolbar with elevation when scrolling

v3.3.200

  • Fix fullscreen bottom tabs icons squash
  • Improved tiny theme colors
  • Android auto support
  • New notification icon
  • Favorite icon in mini player

v.3.3.100

  • Improved Now playing controls alignment
  • Lot internal changes to improve performance
  • Fix playlist adding crash
  • Fix color corrections
  • Fix file editing crash

v3.3.000

  • SD card support for deleting and editing

v3.2.240

  • Improved options dialog with selected color and title icon
  • Fix dialog color on dark theme

v3.2.220

  • Fix Notification SeekBar position (Need Android Q test)
  • Rolled back settings tint icons
  • Changed preference category title style according Android Q
  • Fix tabs options not working

v3.2.203

  • Carousel effect improved
  • Settings icons are now tint accent color
  • Settings title, back arrow and icons are now tint accent color
  • Equalizer is removed
  • Fix keyboard not popping on Search
  • Curated the main options
  • Folder toolbar outlined, folder icon background fix and separate line removed
  • Edit text input handles are colored

v3.2.135

  • Fix crashing on sharing song

v3.2.125

  • Fix crashing on selecting profile picture
  • Semi transparent color fix(s) on now playing themes

v3.2.120

  • Fix crashing on choosing a theme
  • Fix color theme selection without pro enabled
  • Fix icon tint some places

v3.2.105

  • Fix color notifications

v3.2.100

  • Fix crashing on Sleep timer
  • Toolbar elevation removed added stroke instead
  • Show empty indication for home

v3.2.000

  • Implemented Artist image loading all thanks to VinylMusicPlayer
  • Fixed buttons in Genre details
  • Fixed color buttons in Album and Artist details screen

v3.1.900

  • Added Play and Shuffle buttons on Songs list, Album Details, Artist Details, Playlist Details etc.
  • Home toolbar is semi transparent in Banner mode
  • Added new Buy Retro Music pro in settings
  • Improved dark color in Dark theme

v3.1.850

  • Toolbar will be clickable for Search

v3.1.800

  • Search bar CardView background
  • Improve volume zero
  • Now playing and Album theme picker rollback to dialog
  • Fix sharing app link
  • Fix scanning dialog
  • Added settings icons for options

v3.1.700

  • Cleaned internal code
  • Removed full screen option
  • Added Toolbar elevation
  • To access menu either tap on Toolbar or Hamburger icon
  • Fix back button not working on playing queue
  • Fix crashing on What's New screen
  • Fix lyrics dialog
  • Changed toggles to line icons
  • Fix crashing on artist list for number format error
  • Fix blacklist dialog crashing
  • Rearranged icons and main menu access
  • Fix some crashes when device is locked or background
  • Folder screen have main options access
  • Dialogs are now using Material Dialogs v3(BottomSheet)
  • Fix Shuffle icon for Artist, Album, Genre and Playlist details

v3.1.400

  • Removed sync lyrics for Android 5
  • Fix Seek-bar color in settings
  • Added keyboard to popup on search
  • Added keyboard to popup on search
  • Improved lock-screen behavior and UI
  • Improved text appearance
  • Fix bio text not showing in settings
  • Fix not showing slider(blur, filter song) amount in settings
  • Fix setting ringtone
  • Fix file sharing crash
  • Fix some crashes
  • Fix playlist icon on small devices
  • Fix empty lyrics text color
  • Fix album cover background purple color in color theme

v3.1.300

  • Fix rename playlist text color
  • Fix same album showing in details page
  • Fix lyrics text alignment on sync and lyrics reading improved
  • Improved home sections loading
  • Removed library options which are duplicated (it's available from profile menu)
  • Replaced collapsing Fab with Android Floating Extended Fab
  • Replaced home with for you
  • Fixed profile image not loading in about
  • Improved selecting user profile image
  • Added bio to enter custom message
  • Improved some UI screens

If you see entire app white or dark or black select same theme in settings to fix

FAQ's

*If you face any UI related issues you clear app data and cache, if its not working try to uninstall and install again.

\ No newline at end of file +

v3.4.400

  • Added app rating dialog
  • Added desaturated color option for dark mode
  • Fix home crashing when switching between two tabs
  • Fix remaining time in playing queue
  • Fix font not applied for some components
  • Fix crashing on album details sorting
  • Fixed lot of internal bugs
  • Fix dialog expand
  • Fix list card color
  • Removed SlidingUpPanel to replace with BottomSheet
  • Removed color theme as per material design guidelines
  • Removed classic theme(We're bringing back)
  • Removed artist loading from Deezer because it's not official to use(will come back with official)
  • Replace line switch to Material Switch in settings
  • Performance improved
  • Updated internal libraries
  • Updated translation
  • Limiting the use of Theme engine for making use of system colors
  • Change home icon from the user icon
  • Corrected all toolbar with elevation when scrolling

v3.3.200

  • Fix fullscreen bottom tabs icons squash
  • Improved tiny theme colors
  • Android auto support
  • New notification icon
  • Favorite icon in mini player

v.3.3.100

  • Improved Now playing controls alignment
  • Lot internal changes to improve performance
  • Fix playlist adding crash
  • Fix color corrections
  • Fix file editing crash

v3.3.000

  • SD card support for deleting and editing

v3.2.240

  • Improved options dialog with selected color and title icon
  • Fix dialog color on dark theme

v3.2.220

  • Fix Notification SeekBar position (Need Android Q test)
  • Rolled back settings tint icons
  • Changed preference category title style according Android Q
  • Fix tabs options not working

v3.2.203

  • Carousel effect improved
  • Settings icons are now tint accent color
  • Settings title, back arrow and icons are now tint accent color
  • Equalizer is removed
  • Fix keyboard not popping on Search
  • Curated the main options
  • Folder toolbar outlined, folder icon background fix and separate line removed
  • Edit text input handles are colored

v3.2.135

  • Fix crashing on sharing song

v3.2.125

  • Fix crashing on selecting profile picture
  • Semi transparent color fix(s) on now playing themes

v3.2.120

  • Fix crashing on choosing a theme
  • Fix color theme selection without pro enabled
  • Fix icon tint some places

v3.2.105

  • Fix color notifications

v3.2.100

  • Fix crashing on Sleep timer
  • Toolbar elevation removed added stroke instead
  • Show empty indication for home

v3.2.000

  • Implemented Artist image loading all thanks to VinylMusicPlayer
  • Fixed buttons in Genre details
  • Fixed color buttons in Album and Artist details screen

v3.1.900

  • Added Play and Shuffle buttons on Songs list, Album Details, Artist Details, Playlist Details etc.
  • Home toolbar is semi transparent in Banner mode
  • Added new Buy Retro Music pro in settings
  • Improved dark color in Dark theme

v3.1.850

  • Toolbar will be clickable for Search

v3.1.800

  • Search bar CardView background
  • Improve volume zero
  • Now playing and Album theme picker rollback to dialog
  • Fix sharing app link
  • Fix scanning dialog
  • Added settings icons for options

v3.1.700

  • Cleaned internal code
  • Removed full screen option
  • Added Toolbar elevation
  • To access menu either tap on Toolbar or Hamburger icon
  • Fix back button not working on playing queue
  • Fix crashing on What's New screen
  • Fix lyrics dialog
  • Changed toggles to line icons
  • Fix crashing on artist list for number format error
  • Fix blacklist dialog crashing
  • Rearranged icons and main menu access
  • Fix some crashes when device is locked or background
  • Folder screen have main options access
  • Dialogs are now using Material Dialogs v3(BottomSheet)
  • Fix Shuffle icon for Artist, Album, Genre and Playlist details

v3.1.400

  • Removed sync lyrics for Android 5
  • Fix Seek-bar color in settings
  • Added keyboard to popup on search
  • Added keyboard to popup on search
  • Improved lock-screen behavior and UI
  • Improved text appearance
  • Fix bio text not showing in settings
  • Fix not showing slider(blur, filter song) amount in settings
  • Fix setting ringtone
  • Fix file sharing crash
  • Fix some crashes
  • Fix playlist icon on small devices
  • Fix empty lyrics text color
  • Fix album cover background purple color in color theme

v3.1.300

  • Fix rename playlist text color
  • Fix same album showing in details page
  • Fix lyrics text alignment on sync and lyrics reading improved
  • Improved home sections loading
  • Removed library options which are duplicated (it's available from profile menu)
  • Replaced collapsing Fab with Android Floating Extended Fab
  • Replaced home with for you
  • Fixed profile image not loading in about
  • Improved selecting user profile image
  • Added bio to enter custom message
  • Improved some UI screens

If you see entire app white or dark or black select same theme in settings to fix

FAQ's

*If you face any UI related issues you clear app data and cache, if its not working try to uninstall and install again.

\ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/AboutActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/AboutActivity.kt index bd63a616..d89a0938 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/AboutActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/AboutActivity.kt @@ -9,7 +9,6 @@ import android.view.View import androidx.core.app.ShareCompat import androidx.recyclerview.widget.DefaultItemAnimator import androidx.recyclerview.widget.LinearLayoutManager -import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper import code.name.monkey.retromusic.Constants.APP_INSTAGRAM_LINK import code.name.monkey.retromusic.Constants.APP_TELEGRAM_LINK @@ -69,7 +68,7 @@ class AboutActivity : AbsBaseActivity(), View.OnClickListener { loadContributors() setSupportActionBar(toolbar) - ToolbarContentTintHelper.colorBackButton(toolbar, ATHUtil.resolveColor(this, R.attr.colorOnSurface)) + ToolbarContentTintHelper.colorBackButton(toolbar ) appVersion.text = getAppVersion() setUpView() } diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/LicenseActivity.java b/app/src/main/java/code/name/monkey/retromusic/activities/LicenseActivity.java index 022d88b3..6b947083 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/LicenseActivity.java +++ b/app/src/main/java/code/name/monkey/retromusic/activities/LicenseActivity.java @@ -30,7 +30,6 @@ import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import code.name.monkey.appthemehelper.ThemeStore; -import code.name.monkey.appthemehelper.util.ATHUtil; import code.name.monkey.appthemehelper.util.ColorUtil; import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper; import code.name.monkey.retromusic.R; @@ -66,7 +65,7 @@ public class LicenseActivity extends AbsBaseActivity { setLightNavigationBar(true); Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); - ToolbarContentTintHelper.colorBackButton(toolbar, ATHUtil.INSTANCE.resolveColor(this, R.attr.colorOnSurface)); + ToolbarContentTintHelper.colorBackButton(toolbar ); WebView webView = findViewById(R.id.license); try { StringBuilder buf = new StringBuilder(); diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/SettingsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/SettingsActivity.kt index 272e8533..96b570f6 100755 --- a/app/src/main/java/code/name/monkey/retromusic/activities/SettingsActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/SettingsActivity.kt @@ -39,7 +39,7 @@ class SettingsActivity : AbsBaseActivity() { setTitleTextColor(ATHUtil.resolveColor(this@SettingsActivity, R.attr.colorOnPrimary)) setBackgroundColor(ATHUtil.resolveColor(this@SettingsActivity, R.attr.colorPrimary)) setNavigationOnClickListener { onBackPressed() } - ToolbarContentTintHelper.colorBackButton(toolbar, ATHUtil.resolveColor(this@SettingsActivity, R.attr.colorOnSecondary)) + ToolbarContentTintHelper.colorBackButton(toolbar) } appBarLayout.setBackgroundColor(ATHUtil.resolveColor(this@SettingsActivity, R.attr.colorPrimary)) diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/WhatsNewActivity.java b/app/src/main/java/code/name/monkey/retromusic/activities/WhatsNewActivity.java index 4a5be75b..a9db522a 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/WhatsNewActivity.java +++ b/app/src/main/java/code/name/monkey/retromusic/activities/WhatsNewActivity.java @@ -19,7 +19,6 @@ import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import code.name.monkey.appthemehelper.ThemeStore; -import code.name.monkey.appthemehelper.util.ATHUtil; import code.name.monkey.appthemehelper.util.ColorUtil; import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper; import code.name.monkey.retromusic.R; @@ -67,7 +66,7 @@ public class WhatsNewActivity extends AbsBaseActivity { //setSupportActionBar(toolbar); toolbar.setNavigationOnClickListener(v -> onBackPressed()); - ToolbarContentTintHelper.colorBackButton(toolbar, ATHUtil.INSTANCE.resolveColor(this, R.attr.colorOnSecondary)); + ToolbarContentTintHelper.colorBackButton(toolbar); try { StringBuilder buf = new StringBuilder(); diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/bugreport/BugReportActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/bugreport/BugReportActivity.kt index aeb482ad..b72882ec 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/bugreport/BugReportActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/bugreport/BugReportActivity.kt @@ -19,6 +19,7 @@ import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.MaterialUtil import code.name.monkey.appthemehelper.util.TintHelper +import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper import code.name.monkey.retromusic.R import code.name.monkey.retromusic.activities.base.AbsThemeActivity import code.name.monkey.retromusic.activities.bugreport.model.DeviceInfo @@ -58,7 +59,6 @@ open class BugReportActivity : AbsThemeActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_bug_report) - setStatusbarColorAuto() setNavigationbarColorAuto() setTaskDescriptionColorAuto() @@ -68,53 +68,51 @@ open class BugReportActivity : AbsThemeActivity() { if (TextUtils.isEmpty(title)) setTitle(R.string.report_an_issue) - deviceInfo = DeviceInfo(this) - airTextDeviceInfo!!.text = deviceInfo!!.toString() + airTextDeviceInfo.text = deviceInfo.toString() } private fun initViews() { val accentColor = ThemeStore.accentColor(this) val primaryColor = ATHUtil.resolveColor(this, R.attr.colorPrimary) - toolbar!!.setBackgroundColor(primaryColor) + toolbar.setBackgroundColor(primaryColor) setSupportActionBar(toolbar) + ToolbarContentTintHelper.colorBackButton(toolbar) + supportActionBar?.setDisplayHomeAsUpEnabled(true) + TintHelper.setTintAuto(optionUseAccount, accentColor, false) + optionUseAccount?.setOnClickListener { + inputTitle.isEnabled = true + inputDescription.isEnabled = true + inputUsername.isEnabled = true + inputPassword.isEnabled = true - supportActionBar!!.setDisplayHomeAsUpEnabled(true) - - TintHelper.setTintAuto(optionUseAccount!!, accentColor, false) - optionUseAccount!!.setOnClickListener { - inputTitle!!.isEnabled = true - inputDescription!!.isEnabled = true - inputUsername!!.isEnabled = true - inputPassword!!.isEnabled = true - - optionAnonymous!!.isChecked = false - sendFab!!.hide(object : FloatingActionButton.OnVisibilityChangedListener() { + optionAnonymous.isChecked = false + sendFab.hide(object : FloatingActionButton.OnVisibilityChangedListener() { override fun onHidden(fab: FloatingActionButton?) { super.onHidden(fab) - sendFab!!.setImageResource(R.drawable.ic_send_white_24dp) - sendFab!!.show() + sendFab.setImageResource(R.drawable.ic_send_white_24dp) + sendFab.show() } }) } - TintHelper.setTintAuto(optionAnonymous!!, accentColor, false) - optionAnonymous!!.setOnClickListener { - inputTitle!!.isEnabled = false - inputDescription!!.isEnabled = false - inputUsername!!.isEnabled = false - inputPassword!!.isEnabled = false + TintHelper.setTintAuto(optionAnonymous, accentColor, false) + optionAnonymous.setOnClickListener { + inputTitle.isEnabled = false + inputDescription.isEnabled = false + inputUsername.isEnabled = false + inputPassword.isEnabled = false - optionUseAccount!!.isChecked = false - sendFab!!.hide(object : FloatingActionButton.OnVisibilityChangedListener() { + optionUseAccount.isChecked = false + sendFab.hide(object : FloatingActionButton.OnVisibilityChangedListener() { override fun onHidden(fab: FloatingActionButton?) { super.onHidden(fab) - sendFab!!.setImageResource(R.drawable.ic_open_in_browser_white_24dp) - sendFab!!.show() + sendFab.setImageResource(R.drawable.ic_open_in_browser_white_24dp) + sendFab.show() } }) } - inputPassword!!.setOnEditorActionListener { _, actionId, _ -> + inputPassword.setOnEditorActionListener { _, actionId, _ -> if (actionId == EditorInfo.IME_ACTION_SEND) { reportIssue() return@setOnEditorActionListener true @@ -122,10 +120,10 @@ open class BugReportActivity : AbsThemeActivity() { false } - airTextDeviceInfo!!.setOnClickListener { copyDeviceInfoToClipBoard() } + airTextDeviceInfo.setOnClickListener { copyDeviceInfoToClipBoard() } - TintHelper.setTintAuto(sendFab!!, accentColor, true) - sendFab!!.setOnClickListener { reportIssue() } + TintHelper.setTintAuto(sendFab, accentColor, true) + sendFab.setOnClickListener { reportIssue() } MaterialUtil.setTint(inputLayoutTitle, false) MaterialUtil.setTint(inputLayoutDescription, false) @@ -134,10 +132,10 @@ open class BugReportActivity : AbsThemeActivity() { } private fun reportIssue() { - if (optionUseAccount!!.isChecked) { + if (optionUseAccount.isChecked) { if (!validateInput()) return - val username = inputUsername!!.text!!.toString() - val password = inputPassword!!.text!!.toString() + val username = inputUsername.text.toString() + val password = inputPassword.text.toString() sendBugReport(GithubLogin(username, password)) } else { copyDeviceInfoToClipBoard() @@ -151,43 +149,42 @@ open class BugReportActivity : AbsThemeActivity() { private fun copyDeviceInfoToClipBoard() { val clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager - val clip = ClipData.newPlainText(getString(R.string.device_info), deviceInfo!!.toMarkdown()) - clipboard.setPrimaryClip(clip) - + val clip = ClipData.newPlainText(getString(R.string.device_info), deviceInfo?.toMarkdown()) + clipboard.primaryClip = clip Toast.makeText(this@BugReportActivity, R.string.copied_device_info_to_clipboard, Toast.LENGTH_LONG).show() } private fun validateInput(): Boolean { var hasErrors = false - if (optionUseAccount!!.isChecked) { - if (TextUtils.isEmpty(inputUsername!!.text)) { - setError(inputLayoutUsername!!, R.string.bug_report_no_username) + if (optionUseAccount.isChecked) { + if (TextUtils.isEmpty(inputUsername.text)) { + setError(inputLayoutUsername, R.string.bug_report_no_username) hasErrors = true } else { - removeError(inputLayoutUsername!!) + removeError(inputLayoutUsername) } - if (TextUtils.isEmpty(inputPassword!!.text)) { - setError(inputLayoutPassword!!, R.string.bug_report_no_password) + if (TextUtils.isEmpty(inputPassword.text)) { + setError(inputLayoutPassword, R.string.bug_report_no_password) hasErrors = true } else { - removeError(inputLayoutPassword!!) + removeError(inputLayoutPassword) } } - if (TextUtils.isEmpty(inputTitle!!.text)) { - setError(inputLayoutTitle!!, R.string.bug_report_no_title) + if (TextUtils.isEmpty(inputTitle.text)) { + setError(inputLayoutTitle, R.string.bug_report_no_title) hasErrors = true } else { - removeError(inputLayoutTitle!!) + removeError(inputLayoutTitle) } - if (TextUtils.isEmpty(inputDescription!!.text)) { - setError(inputLayoutDescription!!, R.string.bug_report_no_description) + if (TextUtils.isEmpty(inputDescription.text)) { + setError(inputLayoutDescription, R.string.bug_report_no_description) hasErrors = true } else { - removeError(inputLayoutDescription!!) + removeError(inputLayoutDescription) } return !hasErrors @@ -204,8 +201,8 @@ open class BugReportActivity : AbsThemeActivity() { private fun sendBugReport(login: GithubLogin) { if (!validateInput()) return - val bugTitle = inputTitle!!.text!!.toString() - val bugDescription = inputDescription!!.text!!.toString() + val bugTitle = inputTitle.text.toString() + val bugDescription = inputDescription.text.toString() val extraInfo = ExtraInfo() onSaveExtraInfo() diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityEx.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityEx.kt index 764a5908..fc286a48 100644 --- a/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityEx.kt +++ b/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityEx.kt @@ -16,7 +16,6 @@ package code.name.monkey.retromusic.extensions import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.widget.Toolbar -import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper import code.name.monkey.retromusic.R @@ -25,7 +24,7 @@ fun AppCompatActivity.applyToolbar(toolbar: Toolbar) { toolbar.apply { setNavigationOnClickListener { onBackPressed() } setNavigationIcon(R.drawable.ic_keyboard_backspace_black_24dp) - ToolbarContentTintHelper.colorBackButton(toolbar, ThemeStore.textColorSecondary(this@applyToolbar)) + ToolbarContentTintHelper.colorBackButton(toolbar ) setBackgroundColor(ATHUtil.resolveColor(this@applyToolbar, R.attr.colorPrimary)) } setSupportActionBar(toolbar) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/LibraryFragment.java b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/LibraryFragment.java index bdce1b0a..5789a8cd 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/LibraryFragment.java +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/LibraryFragment.java @@ -151,7 +151,7 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde }); getMainActivity().setSupportActionBar(toolbar); toolbar.setNavigationOnClickListener(v -> showMainMenu(OptionsSheetDialogFragment.LIBRARY)); - ToolbarContentTintHelper.colorBackButton(toolbar, ATHUtil.INSTANCE.resolveColor(requireContext(), R.attr.colorOnSurface)); + ToolbarContentTintHelper.colorBackButton(toolbar ); toolbar.setTitleTextColor(ATHUtil.INSTANCE.resolveColor(requireContext(), R.attr.colorOnSecondary)); } diff --git a/app/src/main/res/layout/activity_bug_report.xml b/app/src/main/res/layout/activity_bug_report.xml index 05eb8406..5f56db18 100644 --- a/app/src/main/res/layout/activity_bug_report.xml +++ b/app/src/main/res/layout/activity_bug_report.xml @@ -16,6 +16,7 @@ android:id="@+id/toolbar" style="@style/Toolbar" app:layout_collapseMode="pin" + app:navigationIcon="@drawable/ic_keyboard_backspace_black_24dp" app:title="@string/report_bug" app:titleTextAppearance="@style/ToolbarTextAppearanceNormal" /> diff --git a/app/src/main/res/layout/fragment_main_settings.xml b/app/src/main/res/layout/fragment_main_settings.xml index 37fc8ecc..fc8682b2 100644 --- a/app/src/main/res/layout/fragment_main_settings.xml +++ b/app/src/main/res/layout/fragment_main_settings.xml @@ -130,6 +130,7 @@ android:fadingEdge="horizontal" android:singleLine="true" android:text="@string/general_settings_title" + android:textColor="?colorOnPrimary" android:textAppearance="@style/TextViewSubtitle1" android:textStyle="bold" /> diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index fdea77d7..fda58cdb 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -13,6 +13,7 @@ #000000 #FFFFFF + #202020 #FEFEFE #FFFFFF #FEFEFE diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index ebfea12c..5ba325cd 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -42,10 +42,10 @@

v3.4.400

  • Added app rating dialog
  • Added desaturated color option for dark mode
  • Fix home crashing when switching between two tabs
  • Fix remaining time in playing queue
  • Fix font not applied for some components
  • Fix crashing on album details sorting
  • Fixed lot of internal bugs
  • Fix dialog expand
  • Fix list card color
  • Removed SlidingUpPanel to replace with BottomSheet
  • Removed color theme as per material design guidelines
  • Removed classic theme(We're bringing back)
  • Removed artist loading from Deezer because it's not official to use(will come back with official)
  • Replace line switch to Material Switch in settings
  • Performance improved
  • Updated internal libraries
  • Updated translation
  • Limiting the use of Theme engine for making use of system colors
  • Change home icon from the user icon
  • Corrected all toolbar with elevation when scrolling

v3.3.200

  • Fix fullscreen bottom tabs icons squash
  • Improved tiny theme colors
  • Android auto support
  • New notification icon
  • Favorite icon in mini player

v.3.3.100

  • Improved Now playing controls alignment
  • Lot internal changes to improve performance
  • Fix playlist adding crash
  • Fix color corrections
  • Fix file editing crash

v3.3.000

  • SD card support for deleting and editing

v3.2.240

  • Improved options dialog with selected color and title icon
  • Fix dialog color on dark theme

v3.2.220

  • Fix Notification SeekBar position (Need Android Q test)
  • Rolled back settings tint icons
  • Changed preference category title style according Android Q
  • Fix tabs options not working

v3.2.203

  • Carousel effect improved
  • Settings icons are now tint accent color
  • Settings title, back arrow and icons are now tint accent color
  • Equalizer is removed
  • Fix keyboard not popping on Search
  • Curated the main options
  • Folder toolbar outlined, folder icon background fix and separate line removed
  • Edit text input handles are colored

v3.2.135

  • Fix crashing on sharing song

v3.2.125

  • Fix crashing on selecting profile picture
  • Semi transparent color fix(s) on now playing themes

v3.2.120

  • Fix crashing on choosing a theme
  • Fix color theme selection without pro enabled
  • Fix icon tint some places

v3.2.105

  • Fix color notifications

v3.2.100

  • Fix crashing on Sleep timer
  • Toolbar elevation removed added stroke instead
  • Show empty indication for home

v3.2.000

  • Implemented Artist image loading all thanks to VinylMusicPlayer
  • Fixed buttons in Genre details
  • Fixed color buttons in Album and Artist details screen

v3.1.900

  • Added Play and Shuffle buttons on Songs list, Album Details, Artist Details, Playlist Details etc.
  • Home toolbar is semi transparent in Banner mode
  • Added new Buy Retro Music pro in settings
  • Improved dark color in Dark theme

v3.1.850

  • Toolbar will be clickable for Search

v3.1.800

  • Search bar CardView background
  • Improve volume zero
  • Now playing and Album theme picker rollback to dialog
  • Fix sharing app link
  • Fix scanning dialog
  • Added settings icons for options

v3.1.700

  • Cleaned internal code
  • Removed full screen option
  • Added Toolbar elevation
  • To access menu either tap on Toolbar or Hamburger icon
  • Fix back button not working on playing queue
  • Fix crashing on What's New screen
  • Fix lyrics dialog
  • Changed toggles to line icons
  • Fix crashing on artist list for number format error
  • Fix blacklist dialog crashing
  • Rearranged icons and main menu access
  • Fix some crashes when device is locked or background
  • Folder screen have main options access
  • Dialogs are now using Material Dialogs v3(BottomSheet)
  • Fix Shuffle icon for Artist, Album, Genre and Playlist details

v3.1.400

  • Removed sync lyrics for Android 5
  • Fix Seek-bar color in settings
  • Added keyboard to popup on search
  • Added keyboard to popup on search
  • Improved lock-screen behavior and UI
  • Improved text appearance
  • Fix bio text not showing in settings
  • Fix not showing slider(blur, filter song) amount in settings
  • Fix setting ringtone
  • Fix file sharing crash
  • Fix some crashes
  • Fix playlist icon on small devices
  • Fix empty lyrics text color
  • Fix album cover background purple color in color theme

v3.1.300

  • Fix rename playlist text color
  • Fix same album showing in details page
  • Fix lyrics text alignment on sync and lyrics reading improved
  • Improved home sections loading
  • Removed library options which are duplicated (it's available from profile menu)
  • Replaced collapsing Fab with Android Floating Extended Fab
  • Replaced home with for you
  • Fixed profile image not loading in about
  • Improved selecting user profile image
  • Added bio to enter custom message
  • Improved some UI screens

If you see entire app white or dark or black select same theme in settings to fix

FAQ's

*If you face any UI related issues you clear app data and cache, if its not working try to uninstall and install again.

\ No newline at end of file +

v3.4.400

  • Added peak theme
  • Added app rating dialog
  • Added desaturated color option for dark mode
  • Fix slow search loading
  • Fix last added slow loading
  • Fix home banner toolbar corner
  • Fix home crashing when switching between two tabs
  • Fix remaining time in playing queue
  • Fix font not applied for some components
  • Fix crashing on album details sorting
  • Fixed lot of internal bugs
  • Fix dialog expand
  • Fix list card color
  • Removed SlidingUpPanel to replace with BottomSheet
  • Removed color theme as per material design guidelines
  • Removed classic theme(We're bringing back)
  • Removed artist loading from Deezer because it's not official to use(will come back with official)
  • Replace line switch to Material Switch in settings
  • Performance improved
  • Updated internal libraries
  • Updated translation
  • Limiting the use of Theme engine for making use of system colors
  • Change home icon from the user icon
  • Corrected all toolbar with elevation when scrolling

v3.3.200

  • Fix fullscreen bottom tabs icons squash
  • Improved tiny theme colors
  • Android auto support
  • New notification icon
  • Favorite icon in mini player

v.3.3.100

  • Improved Now playing controls alignment
  • Lot internal changes to improve performance
  • Fix playlist adding crash
  • Fix color corrections
  • Fix file editing crash

v3.3.000

  • SD card support for deleting and editing

v3.2.240

  • Improved options dialog with selected color and title icon
  • Fix dialog color on dark theme

v3.2.220

  • Fix Notification SeekBar position (Need Android Q test)
  • Rolled back settings tint icons
  • Changed preference category title style according Android Q
  • Fix tabs options not working

v3.2.203

  • Carousel effect improved
  • Settings icons are now tint accent color
  • Settings title, back arrow and icons are now tint accent color
  • Equalizer is removed
  • Fix keyboard not popping on Search
  • Curated the main options
  • Folder toolbar outlined, folder icon background fix and separate line removed
  • Edit text input handles are colored

v3.2.135

  • Fix crashing on sharing song

v3.2.125

  • Fix crashing on selecting profile picture
  • Semi transparent color fix(s) on now playing themes

v3.2.120

  • Fix crashing on choosing a theme
  • Fix color theme selection without pro enabled
  • Fix icon tint some places

v3.2.105

  • Fix color notifications

v3.2.100

  • Fix crashing on Sleep timer
  • Toolbar elevation removed added stroke instead
  • Show empty indication for home

v3.2.000

  • Implemented Artist image loading all thanks to VinylMusicPlayer
  • Fixed buttons in Genre details
  • Fixed color buttons in Album and Artist details screen

v3.1.900

  • Added Play and Shuffle buttons on Songs list, Album Details, Artist Details, Playlist Details etc.
  • Home toolbar is semi transparent in Banner mode
  • Added new Buy Retro Music pro in settings
  • Improved dark color in Dark theme

v3.1.850

  • Toolbar will be clickable for Search

v3.1.800

  • Search bar CardView background
  • Improve volume zero
  • Now playing and Album theme picker rollback to dialog
  • Fix sharing app link
  • Fix scanning dialog
  • Added settings icons for options

v3.1.700

  • Cleaned internal code
  • Removed full screen option
  • Added Toolbar elevation
  • To access menu either tap on Toolbar or Hamburger icon
  • Fix back button not working on playing queue
  • Fix crashing on What's New screen
  • Fix lyrics dialog
  • Changed toggles to line icons
  • Fix crashing on artist list for number format error
  • Fix blacklist dialog crashing
  • Rearranged icons and main menu access
  • Fix some crashes when device is locked or background
  • Folder screen have main options access
  • Dialogs are now using Material Dialogs v3(BottomSheet)
  • Fix Shuffle icon for Artist, Album, Genre and Playlist details

v3.1.400

  • Removed sync lyrics for Android 5
  • Fix Seek-bar color in settings
  • Added keyboard to popup on search
  • Added keyboard to popup on search
  • Improved lock-screen behavior and UI
  • Improved text appearance
  • Fix bio text not showing in settings
  • Fix not showing slider(blur, filter song) amount in settings
  • Fix setting ringtone
  • Fix file sharing crash
  • Fix some crashes
  • Fix playlist icon on small devices
  • Fix empty lyrics text color
  • Fix album cover background purple color in color theme

v3.1.300

  • Fix rename playlist text color
  • Fix same album showing in details page
  • Fix lyrics text alignment on sync and lyrics reading improved
  • Improved home sections loading
  • Removed library options which are duplicated (it's available from profile menu)
  • Replaced collapsing Fab with Android Floating Extended Fab
  • Replaced home with for you
  • Fixed profile image not loading in about
  • Improved selecting user profile image
  • Added bio to enter custom message
  • Improved some UI screens

If you see entire app white or dark or black select same theme in settings to fix

FAQ's

*If you face any UI related issues you clear app data and cache, if its not working try to uninstall and install again.

\ No newline at end of file From 914b2316c3429561f1692f8f684393a4652957b2 Mon Sep 17 00:00:00 2001 From: h4h13 Date: Sat, 26 Oct 2019 19:16:01 +0530 Subject: [PATCH 22/57] Removed unwanted resources --- .../retromusic/activities/MainActivity.kt | 2 +- .../{transform => util}/AppRater.kt | 5 +- .../retromusic/views/IconImageView.java | 49 ------------------- .../monkey/retromusic/views/ListItemView.kt | 2 +- .../name/monkey/retromusic/views/RetroChip.kt | 37 -------------- .../retromusic/views/TopCornerCardView.kt | 43 ---------------- .../res/layout-xlarge/activity_user_info.xml | 3 +- app/src/main/res/layout/home_content.xml | 3 +- app/src/main/res/values/styles.xml | 7 --- 9 files changed, 8 insertions(+), 143 deletions(-) rename app/src/main/java/code/name/monkey/retromusic/{transform => util}/AppRater.kt (96%) delete mode 100644 app/src/main/java/code/name/monkey/retromusic/views/IconImageView.java delete mode 100644 app/src/main/java/code/name/monkey/retromusic/views/RetroChip.kt delete mode 100644 app/src/main/java/code/name/monkey/retromusic/views/TopCornerCardView.kt diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt index e21e597c..dc3bebd2 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt @@ -19,7 +19,7 @@ import code.name.monkey.retromusic.loaders.AlbumLoader import code.name.monkey.retromusic.loaders.ArtistLoader import code.name.monkey.retromusic.loaders.PlaylistSongsLoader import code.name.monkey.retromusic.service.MusicService -import code.name.monkey.retromusic.transform.AppRater +import code.name.monkey.retromusic.util.AppRater import code.name.monkey.retromusic.util.PreferenceUtil import io.reactivex.disposables.CompositeDisposable import java.util.* diff --git a/app/src/main/java/code/name/monkey/retromusic/transform/AppRater.kt b/app/src/main/java/code/name/monkey/retromusic/util/AppRater.kt similarity index 96% rename from app/src/main/java/code/name/monkey/retromusic/transform/AppRater.kt rename to app/src/main/java/code/name/monkey/retromusic/util/AppRater.kt index e100a093..99903810 100644 --- a/app/src/main/java/code/name/monkey/retromusic/transform/AppRater.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/AppRater.kt @@ -12,7 +12,7 @@ * See the GNU General Public License for more details. */ -package code.name.monkey.retromusic.transform +package code.name.monkey.retromusic.util import android.content.Context import android.content.Intent @@ -20,7 +20,6 @@ import android.content.SharedPreferences import android.graphics.Color import android.net.Uri import code.name.monkey.retromusic.R -import code.name.monkey.retromusic.util.PreferenceUtil import com.afollestad.materialdialogs.LayoutMode import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.WhichButton @@ -58,7 +57,7 @@ object AppRater { // Wait at least n days before opening if (launchCount >= LAUNCHES_UNTIL_PROMPT) { if (System.currentTimeMillis() >= dateFirstLaunch + DAYS_UNTIL_PROMPT * 24 * 60 * 60 * 1000) { - showRateDialog(context, editor) + showRateDialog(context, editor) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/views/IconImageView.java b/app/src/main/java/code/name/monkey/retromusic/views/IconImageView.java deleted file mode 100644 index 290c6055..00000000 --- a/app/src/main/java/code/name/monkey/retromusic/views/IconImageView.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2019 Hemanth Savarala. - * - * Licensed under the GNU General Public License v3 - * - * This 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 software 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. - */ - -package code.name.monkey.retromusic.views; - -import android.content.Context; -import android.content.res.ColorStateList; -import android.graphics.PorterDuff; -import android.util.AttributeSet; - -import androidx.appcompat.widget.AppCompatImageView; - -import code.name.monkey.appthemehelper.util.ATHUtil; -import code.name.monkey.retromusic.R; - - -public class IconImageView extends AppCompatImageView { - public IconImageView(Context context) { - super(context); - init(context); - } - - public IconImageView(Context context, AttributeSet attrs) { - super(context, attrs); - init(context); - } - - public IconImageView(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - init(context); - } - - private void init(Context context) { - if (context == null) return; - setImageTintList(ColorStateList.valueOf(ATHUtil.INSTANCE.resolveColor(context, R.attr.iconColor))); - //setColorFilter(ATHUtil.INSTANCE.resolveColor(context, R.attr.iconColor), PorterDuff.Mode.SRC_IN); - } -} diff --git a/app/src/main/java/code/name/monkey/retromusic/views/ListItemView.kt b/app/src/main/java/code/name/monkey/retromusic/views/ListItemView.kt index 19f97ae1..fdf5dc66 100644 --- a/app/src/main/java/code/name/monkey/retromusic/views/ListItemView.kt +++ b/app/src/main/java/code/name/monkey/retromusic/views/ListItemView.kt @@ -51,4 +51,4 @@ class ListItemView : FrameLayout { } typedArray.recycle() } -} +} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/views/RetroChip.kt b/app/src/main/java/code/name/monkey/retromusic/views/RetroChip.kt deleted file mode 100644 index c9229e03..00000000 --- a/app/src/main/java/code/name/monkey/retromusic/views/RetroChip.kt +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2019 Hemanth Savarala. - * - * Licensed under the GNU General Public License v3 - * - * This 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 software 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. - */ - -package code.name.monkey.retromusic.views - -import android.content.Context -import android.content.res.ColorStateList -import android.util.AttributeSet -import code.name.monkey.appthemehelper.ThemeStore -import code.name.monkey.appthemehelper.util.ATHUtil -import code.name.monkey.retromusic.R -import com.google.android.material.chip.Chip - -class RetroChip @JvmOverloads constructor( - context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : - Chip(context, attrs, defStyleAttr) { - init { - chipBackgroundColor = ColorStateList.valueOf(ThemeStore.primaryColor(context)) - val iconColor = ATHUtil.resolveColor(context, R.attr.iconColor) - val dividerColor = ATHUtil.resolveColor(context, R.attr.dividerColor) - chipIcon?.setTintList(ColorStateList.valueOf(iconColor)) - setTextColor(iconColor) - chipStrokeColor = ColorStateList.valueOf(dividerColor) - - } -} diff --git a/app/src/main/java/code/name/monkey/retromusic/views/TopCornerCardView.kt b/app/src/main/java/code/name/monkey/retromusic/views/TopCornerCardView.kt deleted file mode 100644 index 8b261d23..00000000 --- a/app/src/main/java/code/name/monkey/retromusic/views/TopCornerCardView.kt +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2019 Hemanth Savarala. - * - * Licensed under the GNU General Public License v3 - * - * This 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 software 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. - */ - -package code.name.monkey.retromusic.views - -import android.content.Context -import android.util.AttributeSet -import code.name.monkey.retromusic.util.PreferenceUtil -import com.google.android.material.card.MaterialCardView -import com.google.android.material.shape.CornerFamily -import com.google.android.material.shape.MaterialShapeDrawable - -/** - * Created by hemanths on 2019-10-11. - */ -class TopCornerCardView @JvmOverloads constructor( - context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 -) : MaterialCardView(context, attrs, defStyleAttr) { - private val shapeDrawable = MaterialShapeDrawable() - - init { - val cornerSize= PreferenceUtil.getInstance(context).dialogCorner - val shapeModel = shapeDrawable.shapeAppearanceModel - background = shapeDrawable - shapeDrawable.shapeAppearanceModel = shapeModel.toBuilder() - .setTopLeftCorner(CornerFamily.ROUNDED, cornerSize) - .setBottomLeftCorner(CornerFamily.ROUNDED, cornerSize) - .setBottomRightCorner(CornerFamily.ROUNDED, cornerSize) - .setTopRightCorner(CornerFamily.ROUNDED, cornerSize) - .build() - } -} diff --git a/app/src/main/res/layout-xlarge/activity_user_info.xml b/app/src/main/res/layout-xlarge/activity_user_info.xml index 3b0593cc..53eae780 100644 --- a/app/src/main/res/layout-xlarge/activity_user_info.xml +++ b/app/src/main/res/layout-xlarge/activity_user_info.xml @@ -58,12 +58,13 @@ android:layout_height="228dp" android:background="@color/twenty_percent_black_overlay" /> - - diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 5ba325cd..166d986f 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -218,13 +218,6 @@ @font/circular - - + +

v3.4.400

  • Added peak theme
  • Added app rating dialog
  • Added desaturated color option for dark mode
  • Fix slow search loading
  • Fix last added slow loading
  • Fix home banner toolbar corner
  • Fix home crashing when switching between two tabs
  • Fix remaining time in playing queue
  • Fix font not applied for some components
  • Fix crashing on album details sorting
  • Fixed lot of internal bugs
  • Fix dialog expand
  • Fix list card color
  • Removed SlidingUpPanel to replace with BottomSheet
  • Removed color theme as per material design guidelines
  • Removed classic theme(We're bringing back)
  • Removed artist loading from Deezer because it's not official to use(will come back with official)
  • Replace line switch to Material Switch in settings
  • Performance improved
  • Updated internal libraries
  • Updated translation
  • Limiting the use of Theme engine for making use of system colors
  • Change home icon from the user icon
  • Corrected all toolbar with elevation when scrolling

v3.3.200

  • Fix fullscreen bottom tabs icons squash
  • Improved tiny theme colors
  • Android auto support
  • New notification icon
  • Favorite icon in mini player

v.3.3.100

  • Improved Now playing controls alignment
  • Lot internal changes to improve performance
  • Fix playlist adding crash
  • Fix color corrections
  • Fix file editing crash

v3.3.000

  • SD card support for deleting and editing

v3.2.240

  • Improved options dialog with selected color and title icon
  • Fix dialog color on dark theme

v3.2.220

  • Fix Notification SeekBar position (Need Android Q test)
  • Rolled back settings tint icons
  • Changed preference category title style according Android Q
  • Fix tabs options not working

v3.2.203

  • Carousel effect improved
  • Settings icons are now tint accent color
  • Settings title, back arrow and icons are now tint accent color
  • Equalizer is removed
  • Fix keyboard not popping on Search
  • Curated the main options
  • Folder toolbar outlined, folder icon background fix and separate line removed
  • Edit text input handles are colored

v3.2.135

  • Fix crashing on sharing song

v3.2.125

  • Fix crashing on selecting profile picture
  • Semi transparent color fix(s) on now playing themes

v3.2.120

  • Fix crashing on choosing a theme
  • Fix color theme selection without pro enabled
  • Fix icon tint some places

v3.2.105

  • Fix color notifications

v3.2.100

  • Fix crashing on Sleep timer
  • Toolbar elevation removed added stroke instead
  • Show empty indication for home

v3.2.000

  • Implemented Artist image loading all thanks to VinylMusicPlayer
  • Fixed buttons in Genre details
  • Fixed color buttons in Album and Artist details screen

v3.1.900

  • Added Play and Shuffle buttons on Songs list, Album Details, Artist Details, Playlist Details etc.
  • Home toolbar is semi transparent in Banner mode
  • Added new Buy Retro Music pro in settings
  • Improved dark color in Dark theme

v3.1.850

  • Toolbar will be clickable for Search

v3.1.800

  • Search bar CardView background
  • Improve volume zero
  • Now playing and Album theme picker rollback to dialog
  • Fix sharing app link
  • Fix scanning dialog
  • Added settings icons for options

v3.1.700

  • Cleaned internal code
  • Removed full screen option
  • Added Toolbar elevation
  • To access menu either tap on Toolbar or Hamburger icon
  • Fix back button not working on playing queue
  • Fix crashing on What's New screen
  • Fix lyrics dialog
  • Changed toggles to line icons
  • Fix crashing on artist list for number format error
  • Fix blacklist dialog crashing
  • Rearranged icons and main menu access
  • Fix some crashes when device is locked or background
  • Folder screen have main options access
  • Dialogs are now using Material Dialogs v3(BottomSheet)
  • Fix Shuffle icon for Artist, Album, Genre and Playlist details

v3.1.400

  • Removed sync lyrics for Android 5
  • Fix Seek-bar color in settings
  • Added keyboard to popup on search
  • Added keyboard to popup on search
  • Improved lock-screen behavior and UI
  • Improved text appearance
  • Fix bio text not showing in settings
  • Fix not showing slider(blur, filter song) amount in settings
  • Fix setting ringtone
  • Fix file sharing crash
  • Fix some crashes
  • Fix playlist icon on small devices
  • Fix empty lyrics text color
  • Fix album cover background purple color in color theme

v3.1.300

  • Fix rename playlist text color
  • Fix same album showing in details page
  • Fix lyrics text alignment on sync and lyrics reading improved
  • Improved home sections loading
  • Removed library options which are duplicated (it's available from profile menu)
  • Replaced collapsing Fab with Android Floating Extended Fab
  • Replaced home with for you
  • Fixed profile image not loading in about
  • Improved selecting user profile image
  • Added bio to enter custom message
  • Improved some UI screens

If you see entire app white or dark or black select same theme in settings to fix

FAQ's

*If you face any UI related issues you clear app data and cache, if its not working try to uninstall and install again.

\ No newline at end of file +

v3.4.500

  • Added peak theme
  • Added app rating dialog
  • Added desaturated color option for dark mode
  • Fix slow search loading
  • Fix last added slow loading
  • Fix home banner toolbar corner
  • Fix home crashing when switching between two tabs
  • Fix remaining time in playing queue
  • Fix font not applied for some components
  • Fix crashing on album details sorting
  • Fixed lot of internal bugs
  • Fix dialog expand
  • Fix list card color
  • Removed SlidingUpPanel to replace with BottomSheet
  • Removed color theme as per material design guidelines
  • Removed classic theme(We're bringing back)
  • Removed artist loading from Deezer because it's not official to use(will come back with official)
  • Replace line switch to Material Switch in settings
  • Performance improved
  • Updated internal libraries
  • Updated translation
  • Limiting the use of Theme engine for making use of system colors
  • Change home icon from the user icon
  • Corrected all toolbar with elevation when scrolling

v3.3.200

  • Fix fullscreen bottom tabs icons squash
  • Improved tiny theme colors
  • Android auto support
  • New notification icon
  • Favorite icon in mini player

v.3.3.100

  • Improved Now playing controls alignment
  • Lot internal changes to improve performance
  • Fix playlist adding crash
  • Fix color corrections
  • Fix file editing crash

v3.3.000

  • SD card support for deleting and editing

v3.2.240

  • Improved options dialog with selected color and title icon
  • Fix dialog color on dark theme

v3.2.220

  • Fix Notification SeekBar position (Need Android Q test)
  • Rolled back settings tint icons
  • Changed preference category title style according Android Q
  • Fix tabs options not working

v3.2.203

  • Carousel effect improved
  • Settings icons are now tint accent color
  • Settings title, back arrow and icons are now tint accent color
  • Equalizer is removed
  • Fix keyboard not popping on Search
  • Curated the main options
  • Folder toolbar outlined, folder icon background fix and separate line removed
  • Edit text input handles are colored

v3.2.135

  • Fix crashing on sharing song

v3.2.125

  • Fix crashing on selecting profile picture
  • Semi transparent color fix(s) on now playing themes

v3.2.120

  • Fix crashing on choosing a theme
  • Fix color theme selection without pro enabled
  • Fix icon tint some places

v3.2.105

  • Fix color notifications

v3.2.100

  • Fix crashing on Sleep timer
  • Toolbar elevation removed added stroke instead
  • Show empty indication for home

v3.2.000

  • Implemented Artist image loading all thanks to VinylMusicPlayer
  • Fixed buttons in Genre details
  • Fixed color buttons in Album and Artist details screen

v3.1.900

  • Added Play and Shuffle buttons on Songs list, Album Details, Artist Details, Playlist Details etc.
  • Home toolbar is semi transparent in Banner mode
  • Added new Buy Retro Music pro in settings
  • Improved dark color in Dark theme

v3.1.850

  • Toolbar will be clickable for Search

v3.1.800

  • Search bar CardView background
  • Improve volume zero
  • Now playing and Album theme picker rollback to dialog
  • Fix sharing app link
  • Fix scanning dialog
  • Added settings icons for options

v3.1.700

  • Cleaned internal code
  • Removed full screen option
  • Added Toolbar elevation
  • To access menu either tap on Toolbar or Hamburger icon
  • Fix back button not working on playing queue
  • Fix crashing on What's New screen
  • Fix lyrics dialog
  • Changed toggles to line icons
  • Fix crashing on artist list for number format error
  • Fix blacklist dialog crashing
  • Rearranged icons and main menu access
  • Fix some crashes when device is locked or background
  • Folder screen have main options access
  • Dialogs are now using Material Dialogs v3(BottomSheet)
  • Fix Shuffle icon for Artist, Album, Genre and Playlist details

v3.1.400

  • Removed sync lyrics for Android 5
  • Fix Seek-bar color in settings
  • Added keyboard to popup on search
  • Added keyboard to popup on search
  • Improved lock-screen behavior and UI
  • Improved text appearance
  • Fix bio text not showing in settings
  • Fix not showing slider(blur, filter song) amount in settings
  • Fix setting ringtone
  • Fix file sharing crash
  • Fix some crashes
  • Fix playlist icon on small devices
  • Fix empty lyrics text color
  • Fix album cover background purple color in color theme

v3.1.300

  • Fix rename playlist text color
  • Fix same album showing in details page
  • Fix lyrics text alignment on sync and lyrics reading improved
  • Improved home sections loading
  • Removed library options which are duplicated (it's available from profile menu)
  • Replaced collapsing Fab with Android Floating Extended Fab
  • Replaced home with for you
  • Fixed profile image not loading in about
  • Improved selecting user profile image
  • Added bio to enter custom message
  • Improved some UI screens

If you see entire app white or dark or black select same theme in settings to fix

FAQ's

*If you face any UI related issues you clear app data and cache, if its not working try to uninstall and install again.

\ No newline at end of file diff --git a/appthemehelper/build.gradle b/appthemehelper/build.gradle index 82756378..0b5cf00b 100644 --- a/appthemehelper/build.gradle +++ b/appthemehelper/build.gradle @@ -27,7 +27,7 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'androidx.appcompat:appcompat:1.1.0' - implementation 'com.google.android.material:material:1.1.0-beta01' + implementation 'com.google.android.material:material:1.2.0-alpha01' implementation 'androidx.preference:preference:1.1.0' implementation 'androidx.cardview:cardview:1.0.0' // Used for the list preference classes From e31a1a6e2f14d8092fe09a87a9c5f922ae23ea04 Mon Sep 17 00:00:00 2001 From: h4h13 Date: Sun, 27 Oct 2019 12:01:24 +0530 Subject: [PATCH 25/57] Fix code --- .../retromusic/adapter/SongFileAdapter.kt | 6 +- .../retromusic/adapter/album/AlbumAdapter.kt | 14 +--- .../adapter/album/AlbumFullWidthAdapter.kt | 14 +--- .../adapter/playlist/AddToPlaylist.kt | 44 ----------- .../adapter/playlist/PlaylistAdapter.kt | 26 ++----- .../song/OrderablePlaylistSongAdapter.kt | 4 +- .../adapter/song/PlayingQueueAdapter.kt | 76 ++++++------------- 7 files changed, 40 insertions(+), 144 deletions(-) delete mode 100644 app/src/main/java/code/name/monkey/retromusic/adapter/playlist/AddToPlaylist.kt diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/SongFileAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/SongFileAdapter.kt index f76c5d28..cc169e2d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/SongFileAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/SongFileAdapter.kt @@ -55,12 +55,8 @@ class SongFileAdapter( override fun onBindViewHolder(holder: ViewHolder, index: Int) { val file = dataSet!![index] - holder.itemView.isActivated = isChecked(file) - - if (holder.title != null) { - holder.title!!.text = getFileTitle(file) - } + holder.title?.text = getFileTitle(file) if (holder.text != null) { if (holder.itemViewType == FILE) { holder.text!!.text = getFileText(file) diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt index 40b79f5a..0ffe9a5f 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt @@ -80,19 +80,11 @@ open class AlbumAdapter(protected val activity: AppCompatActivity, override fun onBindViewHolder(holder: ViewHolder, position: Int) { val album = dataSet[position] - val isChecked = isChecked(album) holder.itemView.isActivated = isChecked - - if (holder.title != null) { - holder.title!!.text = getAlbumTitle(album) - } - if (holder.text != null) { - holder.text!!.text = getAlbumText(album) - } - if (holder.playSongs != null) { - holder.playSongs!!.setOnClickListener { MusicPlayerRemote.openQueue(album.songs!!, 0, true) } - } + holder.title?.text = getAlbumTitle(album) + holder.text?.text = getAlbumText(album) + holder.playSongs?.setOnClickListener { album.songs?.let { songs -> MusicPlayerRemote.openQueue(songs, 0, true) } } loadAlbumCover(album, holder) } diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumFullWidthAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumFullWidthAdapter.kt index 5cf7c8fe..84d30fac 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumFullWidthAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumFullWidthAdapter.kt @@ -40,18 +40,10 @@ class AlbumFullWidthAdapter(private val activity: Activity, private val dataSet: override fun onBindViewHolder(holder: FullMetalViewHolder, position: Int) { // don't forget about calling supper.onBindViewHolder! super.onBindViewHolder(holder, position) - val album = dataSet[position] - - if (holder.title != null) { - holder.title!!.text = getAlbumTitle(album) - } - if (holder.text != null) { - holder.text!!.text = getAlbumText(album) - } - if (holder.playSongs != null) { - holder.playSongs!!.setOnClickListener { MusicPlayerRemote.openQueue(album.songs!!, 0, true) } - } + holder.title?.text = getAlbumTitle(album) + holder.text?.text = getAlbumText(album) + holder.playSongs?.setOnClickListener { album.songs?.let { songs -> MusicPlayerRemote.openQueue(songs, 0, true) } } loadAlbumCover(album, holder) } diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/playlist/AddToPlaylist.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/playlist/AddToPlaylist.kt deleted file mode 100644 index 684270ba..00000000 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/playlist/AddToPlaylist.kt +++ /dev/null @@ -1,44 +0,0 @@ -package code.name.monkey.retromusic.adapter.playlist - -import android.app.Activity -import android.app.Dialog -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup - -import java.util.ArrayList -import androidx.recyclerview.widget.RecyclerView -import code.name.monkey.retromusic.model.Playlist -import code.name.monkey.retromusic.model.Song -import code.name.monkey.retromusic.adapter.base.MediaEntryViewHolder -import code.name.monkey.retromusic.adapter.playlist.AddToPlaylist.ViewHolder -import code.name.monkey.retromusic.util.PlaylistsUtil - -class AddToPlaylist(private val activity: Activity, - private val playlists: ArrayList, private val itemLayoutRes: Int, - private val songs: ArrayList, private val dialog: Dialog) : RecyclerView.Adapter() { - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder(LayoutInflater.from(activity).inflate(itemLayoutRes, parent, false)) - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val playlist = playlists[position] - if (holder.title != null) { - holder.title!!.text = playlist.name - } - } - - override fun getItemCount(): Int { - return playlists.size - } - - inner class ViewHolder(itemView: View) : MediaEntryViewHolder(itemView) { - - override fun onClick(v: View?) { - super.onClick(v) - PlaylistsUtil.addToPlaylist(activity, songs, playlists[adapterPosition].id, true) - dialog.dismiss() - } - } -} diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/playlist/PlaylistAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/playlist/PlaylistAdapter.kt index 17d4f738..8d040588 100755 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/playlist/PlaylistAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/playlist/PlaylistAdapter.kt @@ -5,7 +5,6 @@ import android.view.LayoutInflater import android.view.MenuItem import android.view.View import android.view.ViewGroup -import androidx.annotation.LayoutRes import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.widget.PopupMenu import code.name.monkey.appthemehelper.ThemeStore @@ -30,15 +29,15 @@ import code.name.monkey.retromusic.util.NavigationUtil import java.util.* -class PlaylistAdapter(protected val activity: AppCompatActivity, dataSet: ArrayList, - @param:LayoutRes protected var itemLayoutRes: Int, cabHolder: CabHolder?) : AbsMultiSelectAdapter(activity, cabHolder, R.menu.menu_playlists_selection) { - var dataSet: ArrayList - protected set +class PlaylistAdapter(private val activity: AppCompatActivity, + var dataSet: ArrayList, + private var itemLayoutRes: Int, + cabHolder: CabHolder?) : AbsMultiSelectAdapter(activity, cabHolder, R.menu.menu_playlists_selection) { + var songs = ArrayList() init { - this.dataSet = dataSet setHasStableIds(true) } @@ -70,20 +69,11 @@ class PlaylistAdapter(protected val activity: AppCompatActivity, dataSet: ArrayL } override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val playlist = dataSet[position] - val songs = getSongs(playlist) holder.itemView.isActivated = isChecked(playlist) - - if (holder.title != null) { - holder.title!!.text = getPlaylistTitle(playlist) - } - if (holder.text != null) { - holder.text!!.text = getPlaylistText(playlist) - } - if (holder.image != null) { - holder.image!!.setImageDrawable(getIconRes(playlist)) - } + holder.title?.text = getPlaylistTitle(playlist) + holder.text?.text = getPlaylistText(playlist) + holder.image?.setImageDrawable(getIconRes(playlist)) } private fun getIconRes(playlist: Playlist): Drawable { diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/song/OrderablePlaylistSongAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/song/OrderablePlaylistSongAdapter.kt index 88f78b8b..2753c13c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/song/OrderablePlaylistSongAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/song/OrderablePlaylistSongAdapter.kt @@ -100,9 +100,9 @@ class OrderablePlaylistSongAdapter(activity: AppCompatActivity, init { if (dragView != null) { if (onMoveItemListener != null) { - dragView!!.visibility = View.VISIBLE + dragView?.visibility = View.VISIBLE } else { - dragView!!.visibility = View.GONE + dragView?.visibility = View.GONE } } } diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/song/PlayingQueueAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/song/PlayingQueueAdapter.kt index eaaf686e..1f388554 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/song/PlayingQueueAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/song/PlayingQueueAdapter.kt @@ -5,8 +5,6 @@ import android.graphics.PorterDuff import android.view.MenuItem import android.view.View import android.widget.ImageView -import androidx.annotation.ColorInt -import androidx.annotation.LayoutRes import androidx.appcompat.app.AppCompatActivity import code.name.monkey.retromusic.R import code.name.monkey.retromusic.helper.MusicPlayerRemote @@ -20,36 +18,27 @@ import com.h6ah4i.android.widget.advrecyclerview.draggable.annotation.DraggableI import java.util.* -class PlayingQueueAdapter : SongAdapter, DraggableItemAdapter { +class PlayingQueueAdapter(activity: AppCompatActivity, + dataSet: ArrayList, + private var current: Int, + itemLayoutRes: Int) : SongAdapter( + activity, + dataSet, + itemLayoutRes, + false, + null +), DraggableItemAdapter { - private var current: Int = 0 private var color = -1 - constructor(activity: AppCompatActivity, dataSet: ArrayList, current: Int, - @LayoutRes itemLayoutRes: Int) : super(activity, dataSet, itemLayoutRes, false, null) { - this.current = current - } - - constructor(activity: AppCompatActivity, - dataSet: ArrayList, current: Int, - @LayoutRes itemLayoutRes: Int, - @ColorInt color: Int) : super(activity, dataSet, itemLayoutRes, false, null) { - this.current = current - this.color = color - } - override fun createViewHolder(view: View): SongAdapter.ViewHolder { return ViewHolder(view) } override fun onBindViewHolder(holder: SongAdapter.ViewHolder, position: Int) { super.onBindViewHolder(holder, position) - if (holder.imageText != null) { - holder.imageText!!.text = (position - current).toString() - } - if (holder.time != null) { - holder.time!!.text = MusicUtil.getReadableDurationString(dataSet[position].duration) - } + holder.imageText?.text = (position - current).toString() + holder.time?.text = MusicUtil.getReadableDurationString(dataSet[position].duration) if (holder.itemViewType == HISTORY || holder.itemViewType == CURRENT) { setAlpha(holder, 0.5f) } @@ -66,15 +55,10 @@ class PlayingQueueAdapter : SongAdapter, DraggableItemAdapter Date: Mon, 28 Oct 2019 22:19:35 +0530 Subject: [PATCH 26/57] Fix title for now playing theme dialog --- .../name/monkey/retromusic/dialogs/AddToPlaylistDialog.kt | 7 +++---- .../preferences/NowPlayingScreenPreferenceDialog.kt | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/dialogs/AddToPlaylistDialog.kt b/app/src/main/java/code/name/monkey/retromusic/dialogs/AddToPlaylistDialog.kt index 3a7e26f6..0cf5f072 100644 --- a/app/src/main/java/code/name/monkey/retromusic/dialogs/AddToPlaylistDialog.kt +++ b/app/src/main/java/code/name/monkey/retromusic/dialogs/AddToPlaylistDialog.kt @@ -33,10 +33,9 @@ class AddToPlaylistDialog : DialogFragment() { override fun onCreateDialog( savedInstanceState: Bundle? ): Dialog { - val cntx = requireContext() - val playlists = PlaylistLoader.getAllPlaylists(cntx) + val playlists = PlaylistLoader.getAllPlaylists(requireContext()) val playlistNames: MutableList = mutableListOf() - playlistNames.add(cntx.resources.getString(R.string.action_new_playlist)) + playlistNames.add(requireContext().resources.getString(R.string.action_new_playlist)) for (p in playlists) { playlistNames.add(p.name) } @@ -51,7 +50,7 @@ class AddToPlaylistDialog : DialogFragment() { activity?.supportFragmentManager?.let { CreatePlaylistDialog.create(songs).show(it, "ADD_TO_PLAYLIST") } } else { dialog.dismiss() - PlaylistsUtil.addToPlaylist(cntx, songs, playlists[index - 1].id, true) + PlaylistsUtil.addToPlaylist(requireContext(), songs, playlists[index - 1].id, true) } } } diff --git a/app/src/main/java/code/name/monkey/retromusic/preferences/NowPlayingScreenPreferenceDialog.kt b/app/src/main/java/code/name/monkey/retromusic/preferences/NowPlayingScreenPreferenceDialog.kt index e174471a..364f60d3 100644 --- a/app/src/main/java/code/name/monkey/retromusic/preferences/NowPlayingScreenPreferenceDialog.kt +++ b/app/src/main/java/code/name/monkey/retromusic/preferences/NowPlayingScreenPreferenceDialog.kt @@ -92,7 +92,7 @@ class NowPlayingScreenPreferenceDialog : PreferenceDialogFragmentCompat(), ViewP return MaterialDialog(requireContext()).show { - title(R.string.pref_title_album_cover_style) + title(R.string.pref_title_now_playing_screen_appearance) positiveButton(R.string.set) { val nowPlayingScreen = NowPlayingScreen.values()[viewPagerPosition] if (isNowPlayingThemes(nowPlayingScreen)) { From 6d0b511c52419cc457af1916a855480a85ca1bf6 Mon Sep 17 00:00:00 2001 From: h4h13 Date: Mon, 28 Oct 2019 22:38:09 +0530 Subject: [PATCH 27/57] Removed animation --- .../retromusic/adapter/album/AlbumCoverPagerAdapter.kt | 5 ++--- .../monkey/retromusic/fragments/base/AbsPlayerFragment.kt | 2 +- .../retromusic/fragments/player/peak/PeakPlayerFragment.kt | 4 +--- .../code/name/monkey/retromusic/util/NavigationUtil.java | 6 ++---- 4 files changed, 6 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt index 761a56e1..0063c06b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt @@ -1,6 +1,5 @@ package code.name.monkey.retromusic.adapter.album -import android.app.ActivityOptions import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -96,8 +95,8 @@ class AlbumCoverPagerAdapter(fm: FragmentManager, private val dataSet: ArrayList val view = inflater.inflate(finalLayout, container, false) albumCover = view.findViewById(R.id.player_image) albumCover.setOnClickListener { - val options = ActivityOptions.makeSceneTransitionAnimation(requireActivity(), it, getString(R.string.transition_lyrics)) - NavigationUtil.goToLyrics(requireActivity(), options) + + NavigationUtil.goToLyrics(requireActivity()) } return view } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt index 74352780..1189df52 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt @@ -109,7 +109,7 @@ abstract class AbsPlayerFragment : AbsMusicServiceFragment(), return true } R.id.action_show_lyrics -> { - NavigationUtil.goToLyrics(requireActivity(), null) + NavigationUtil.goToLyrics(requireActivity()) return true } R.id.action_equalizer -> { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerFragment.kt index 88314457..c7d20815 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerFragment.kt @@ -14,7 +14,6 @@ package code.name.monkey.retromusic.fragments.player.peak -import android.app.ActivityOptions import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -50,8 +49,7 @@ class PeakPlayerFragment : AbsPlayerFragment() { setUpSubFragments() title.isSelected = true playerImage.setOnClickListener { - val options = ActivityOptions.makeSceneTransitionAnimation(requireActivity(), it, getString(R.string.transition_lyrics)) - NavigationUtil.goToLyrics(requireActivity(), options) + NavigationUtil.goToLyrics(requireActivity()) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.java index 1c16240d..3de177e5 100755 --- a/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.java @@ -23,7 +23,6 @@ import android.media.audiofx.AudioEffect; import android.widget.Toast; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; @@ -117,10 +116,9 @@ public class NavigationUtil { ActivityCompat.startActivity(activity, intent, null); } - public static void goToLyrics(@NonNull Activity activity, - @Nullable ActivityOptions activityOptions) { + public static void goToLyrics(@NonNull Activity activity) { Intent intent = new Intent(activity, LyricsActivity.class); - ActivityCompat.startActivity(activity, intent, activityOptions != null ? activityOptions.toBundle() : null); + ActivityCompat.startActivity(activity, intent, null); } public static void goToGenre(@NonNull Activity activity, @NonNull Genre genre) { From f9536e985ee919f62d937aa5dd7d389b717b5618 Mon Sep 17 00:00:00 2001 From: h4h13 Date: Tue, 29 Oct 2019 11:36:08 +0530 Subject: [PATCH 28/57] Fix marquee text --- .../full/FullPlaybackControlsFragment.kt | 4 +- .../normal/PlayerPlaybackControlsFragment.kt | 3 +- ...fragment_blur_player_playback_controls.xml | 46 +++-- ...ragment_color_player_playback_controls.xml | 46 +++-- ...fragment_flat_player_playback_controls.xml | 52 ++--- .../layout/fragment_full_player_controls.xml | 2 +- .../fragment_material_playback_controls.xml | 45 +++-- .../main/res/layout/fragment_mini_player.xml | 2 +- .../main/res/layout/fragment_peak_player.xml | 37 ++-- .../fragment_player_playback_controls.xml | 48 +++-- .../fragment_simple_controls_fragment.xml | 50 +++-- .../main/res/layout/fragment_tiny_player.xml | 190 +++++++++--------- 12 files changed, 282 insertions(+), 243 deletions(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt index 5492f4b5..0aae7ae7 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt @@ -22,13 +22,13 @@ import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.retromusic.R import code.name.monkey.retromusic.extensions.ripAlpha +import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.service.MusicService -import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.ViewUtil @@ -281,7 +281,7 @@ class FullPlaybackControlsFragment : AbsPlayerControlsFragment(), PopupMenu.OnMe override fun doInBackground(vararg params: Song): Boolean? { val activity = activity return if (activity != null) { - MusicUtil.isFavorite(getActivity()!!, params[0]) + MusicUtil.isFavorite(requireActivity(), params[0]) } else { cancel(false) null diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerPlaybackControlsFragment.kt index 90c48f19..ba458c90 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerPlaybackControlsFragment.kt @@ -48,8 +48,6 @@ class PlayerPlaybackControlsFragment : AbsPlayerControlsFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setUpMusicControllers() - title.isSelected = true - text.isSelected = true playPauseButton.setOnClickListener { if (MusicPlayerRemote.isPlaying) { MusicPlayerRemote.pauseSong() @@ -58,6 +56,7 @@ class PlayerPlaybackControlsFragment : AbsPlayerControlsFragment() { } showBonceAnimation(playPauseButton) } + title.isSelected = true } override fun setDark(color: Int) { diff --git a/app/src/main/res/layout/fragment_blur_player_playback_controls.xml b/app/src/main/res/layout/fragment_blur_player_playback_controls.xml index 984cc048..27e20704 100644 --- a/app/src/main/res/layout/fragment_blur_player_playback_controls.xml +++ b/app/src/main/res/layout/fragment_blur_player_playback_controls.xml @@ -75,29 +75,37 @@ tools:text="00:22" /> - + app:layout_constraintTop_toBottomOf="@+id/progressContainer"> + + +
+ - + app:layout_constraintTop_toBottomOf="@+id/progressContainer"> + + +
+ diff --git a/app/src/main/res/layout/fragment_flat_player_playback_controls.xml b/app/src/main/res/layout/fragment_flat_player_playback_controls.xml index 8cd38017..a15012d8 100644 --- a/app/src/main/res/layout/fragment_flat_player_playback_controls.xml +++ b/app/src/main/res/layout/fragment_flat_player_playback_controls.xml @@ -74,40 +74,46 @@ android:textSize="12sp" android:textStyle="bold" app:layout_constrainedWidth="true" - app:layout_constraintBottom_toTopOf="@+id/title" + app:layout_constraintBottom_toTopOf="@+id/titleContainer" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/progressContainer" tools:text="@tools:sample/lorem/random" /> - + app:layout_constraintTop_toBottomOf="@+id/text"> + + +
diff --git a/app/src/main/res/layout/fragment_full_player_controls.xml b/app/src/main/res/layout/fragment_full_player_controls.xml index e8c2d194..090b4c88 100644 --- a/app/src/main/res/layout/fragment_full_player_controls.xml +++ b/app/src/main/res/layout/fragment_full_player_controls.xml @@ -39,7 +39,7 @@ app:layout_constraintEnd_toStartOf="@+id/songFavourite" app:layout_constraintStart_toEndOf="@+id/playerMenu" app:layout_constraintTop_toTopOf="parent" - tools:text="@string/for_you" /> + tools:text="@tools:sample/lorem/random" /> - + app:layout_constraintTop_toBottomOf="@+id/progressContainer"> + + +
+ tools:text="@tools:sample/lorem/random" /> - + app:layout_constraintTop_toBottomOf="@+id/toolbarContainer"> + + +
- - + app:layout_constraintTop_toBottomOf="@+id/progressContainer"> + + +
+ diff --git a/app/src/main/res/layout/fragment_simple_controls_fragment.xml b/app/src/main/res/layout/fragment_simple_controls_fragment.xml index fa21e4d0..9ed6694a 100644 --- a/app/src/main/res/layout/fragment_simple_controls_fragment.xml +++ b/app/src/main/res/layout/fragment_simple_controls_fragment.xml @@ -6,29 +6,35 @@ android:layout_height="match_parent" android:orientation="vertical"> - - + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + +
+ diff --git a/app/src/main/res/layout/fragment_tiny_player.xml b/app/src/main/res/layout/fragment_tiny_player.xml index a4b8ddba..17a60e26 100644 --- a/app/src/main/res/layout/fragment_tiny_player.xml +++ b/app/src/main/res/layout/fragment_tiny_player.xml @@ -1,5 +1,5 @@ - + + + + + + + + + + + + + android:id="@+id/playbackControlsFragmentContainer" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="bottom" + android:orientation="vertical" + app:layout_constraintBottom_toTopOf="@id/toolbarContainer" + app:layout_constraintEnd_toEndOf="parent"> - + android:layout_height="wrap_content" + tools:layout="@layout/fragment_tiny_controls_fragment" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + \ No newline at end of file From b490311cbf9d59fd60a6e30302dd20b36e965714 Mon Sep 17 00:00:00 2001 From: h4h13 Date: Tue, 29 Oct 2019 17:48:43 +0530 Subject: [PATCH 29/57] Update tag --- .github/stale.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/stale.yml b/.github/stale.yml index 3603948a..ad3996c5 100644 --- a/.github/stale.yml +++ b/.github/stale.yml @@ -26,7 +26,7 @@ exemptMilestones: false exemptAssignees: false # Label to use when marking as stale -staleLabel: wontfix +staleLabel: stale # Comment to post when marking as stale. Set to `false` to disable markComment: > From 8ef8a3955fa68905dd1c25607425594d4227e1b9 Mon Sep 17 00:00:00 2001 From: h4h13 Date: Tue, 29 Oct 2019 20:19:28 +0530 Subject: [PATCH 30/57] Fix classic notification size --- .../fragments/player/normal/PlayerFragment.kt | 14 +- .../retromusic/service/MusicService.java | 5 - .../name/monkey/retromusic/util/AttrsUtil.kt | 30 -- .../monkey/retromusic/util/DensityUtil.java | 31 -- .../monkey/retromusic/util/MusicUtil.java | 67 ---- .../retromusic/util/PackageValidator.kt | 347 ------------------ .../monkey/retromusic/util/RetroUtil.java | 129 ------- .../retromusic/util/SwipeAndDragHelper.java | 4 +- .../name/monkey/retromusic/util/ViewUtil.kt | 38 -- .../util/color/ImageGradientColorizer.java | 91 ----- .../color/MediaNotificationProcessor.java | 232 +----------- .../schedulers/BaseSchedulerProvider.java | 33 -- .../util/schedulers/SchedulerProvider.java | 58 --- .../main/res/drawable/background_image.xml | 15 +- .../layout_notification_collapsed.xml | 288 +++++++-------- .../layout_notification_expanded.xml | 207 +++++------ .../layout/layout_notification_collapsed.xml | 53 +-- .../layout/layout_notification_expanded.xml | 243 ++++++------ app/src/main/res/values/dimens.xml | 2 +- 19 files changed, 403 insertions(+), 1484 deletions(-) delete mode 100644 app/src/main/java/code/name/monkey/retromusic/util/AttrsUtil.kt delete mode 100644 app/src/main/java/code/name/monkey/retromusic/util/PackageValidator.kt delete mode 100644 app/src/main/java/code/name/monkey/retromusic/util/color/ImageGradientColorizer.java delete mode 100644 app/src/main/java/code/name/monkey/retromusic/util/schedulers/BaseSchedulerProvider.java delete mode 100644 app/src/main/java/code/name/monkey/retromusic/util/schedulers/SchedulerProvider.java diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerFragment.kt index 4bac8e84..017bbf4e 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerFragment.kt @@ -12,10 +12,10 @@ import androidx.appcompat.widget.Toolbar import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper import code.name.monkey.retromusic.R -import code.name.monkey.retromusic.helper.MusicPlayerRemote -import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment +import code.name.monkey.retromusic.helper.MusicPlayerRemote +import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.ViewUtil import code.name.monkey.retromusic.views.DrawableGradient @@ -100,16 +100,6 @@ class PlayerFragment : AbsPlayerFragment() { super.onViewCreated(view, savedInstanceState) setUpSubFragments() setUpPlayerToolbar() - - - //val display = activity?.windowManager?.defaultDisplay - //val outMetrics = DisplayMetrics() - //display?.getMetrics(outMetrics) - - //val density = resources.displayMetrics.density - //val dpWidth = outMetrics.widthPixels / density - - //playerAlbumCoverContainer?.layoutParams?.height = RetroUtil.convertDpToPixel((dpWidth - getCutOff()), context!!).toInt() } diff --git a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.java b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.java index 5078b3a8..42553bcd 100644 --- a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.java +++ b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.java @@ -77,7 +77,6 @@ import code.name.monkey.retromusic.service.notification.PlayingNotificationImpl2 import code.name.monkey.retromusic.service.notification.PlayingNotificationOreo; import code.name.monkey.retromusic.service.playback.Playback; import code.name.monkey.retromusic.util.MusicUtil; -import code.name.monkey.retromusic.util.PackageValidator; import code.name.monkey.retromusic.util.PreferenceUtil; import code.name.monkey.retromusic.util.RetroUtil; @@ -275,7 +274,6 @@ public class MusicService extends Service implements } } }; - private PackageValidator mPackageValidator; private static String getTrackUri(@NonNull Song song) { return MusicUtil.getSongFileUri(song.getId()).toString(); @@ -341,9 +339,6 @@ public class MusicService extends Service implements restoreState(); - mPackageValidator = new PackageValidator(this, R.xml.allowed_media_browser_callers); - - sendBroadcast(new Intent("code.name.monkey.retromusic.RETRO_MUSIC_SERVICE_CREATED")); registerHeadsetEvents(); diff --git a/app/src/main/java/code/name/monkey/retromusic/util/AttrsUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/AttrsUtil.kt deleted file mode 100644 index 93da81ea..00000000 --- a/app/src/main/java/code/name/monkey/retromusic/util/AttrsUtil.kt +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2019 Hemanth Savarala. - * - * Licensed under the GNU General Public License v3 - * - * This 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 software 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. - */ - -package code.name.monkey.retromusic.util - -import android.content.Context -import androidx.annotation.AttrRes - -object AttrsUtil { - @JvmOverloads - fun resolveColor(context: Context, @AttrRes attr: Int, fallback: Int = 0): Int { - val a = context.theme.obtainStyledAttributes(intArrayOf(attr)) - try { - return a.getColor(0, fallback) - } finally { - a.recycle() - } - } -} diff --git a/app/src/main/java/code/name/monkey/retromusic/util/DensityUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/DensityUtil.java index b0bf619b..6c5c650c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/DensityUtil.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/DensityUtil.java @@ -16,9 +16,7 @@ package code.name.monkey.retromusic.util; import android.app.Activity; import android.content.Context; -import android.content.res.Resources; import android.util.DisplayMetrics; -import android.util.TypedValue; import androidx.annotation.NonNull; @@ -33,38 +31,9 @@ public class DensityUtil { return displayMetrics.heightPixels; } - public static int getScreenWidth(@NonNull Context context) { - DisplayMetrics displayMetrics = new DisplayMetrics(); - ((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); - return displayMetrics.widthPixels; - } - public static int dip2px(@NonNull Context context, float dpVale) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpVale * scale + 0.5f); } - public static int getStatusBarHeight(@NonNull Context context) { - Resources resources = context.getResources(); - int resourcesId = resources.getIdentifier("status_bar_height", "dimen", "android"); - int height = resources.getDimensionPixelSize(resourcesId); - return height; - } - - /** - * Converts sp to px - * - * @param context Context - * @param sp the value in sp - * @return int - */ - public static int dip2sp(@NonNull Context context, float sp) { - return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp, context.getResources().getDisplayMetrics()); - } - - public static int px2dip(@NonNull Context context, float pxValue) { - final float scale = context.getResources().getDisplayMetrics().density; - return (int) (pxValue / scale + 0.5f); - } - } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.java index 5c9337d3..eca52b84 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.java @@ -47,7 +47,6 @@ import code.name.monkey.retromusic.helper.MusicPlayerRemote; import code.name.monkey.retromusic.loaders.PlaylistLoader; import code.name.monkey.retromusic.loaders.SongLoader; import code.name.monkey.retromusic.model.Artist; -import code.name.monkey.retromusic.model.Genre; import code.name.monkey.retromusic.model.Playlist; import code.name.monkey.retromusic.model.Song; import code.name.monkey.retromusic.model.lyrics.AbsSynchronizedLyrics; @@ -72,17 +71,6 @@ public class MusicUtil { @NonNull public static Intent createShareSongFileIntent(@NonNull final Song song, @NonNull Context context) { - /*Uri file = FileProvider.getUriForFile(context, context.getPackageName() + ".provider", new File(song.getData())); - try { - return new Intent().setAction(Intent.ACTION_SEND).putExtra(Intent.EXTRA_STREAM, file) - .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) - .setType("audio/*"); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - Toast.makeText(context, "Could not share this file, I'm aware of the issue.", Toast.LENGTH_SHORT).show(); - return new Intent(); - }*/ - try { return new Intent() .setAction(Intent.ACTION_SEND) @@ -123,36 +111,6 @@ public class MusicUtil { return albumCount + " " + albumString + " • " + songCount + " " + songString; } - @NonNull - public static String getArtistInfoStringSmall(@NonNull final Context context, - @NonNull final Artist artist) { - int songCount = artist.getSongCount(); - String songString = songCount == 1 ? context.getResources().getString(R.string.song) - : context.getResources().getString(R.string.songs); - return songCount + " " + songString; - } - - /*@NonNull - public static String getPlaylistInfoString(@NonNull final Context context, - @NonNull List songs) { - final int songCount = songs.size(); - final String songString = songCount == 1 ? context.getResources().getString(R.string.song) - : context.getResources().getString(R.string.songs); - - long duration = 0; - for (int i = 0; i < songs.size(); i++) { - duration += songs.get(i).getDuration(); - } - - return songCount + " " + songString + " • " + MusicUtil.getReadableDurationString(duration); - }*/ - - @NonNull - public static String getGenreInfoString(@NonNull final Context context, @NonNull final Genre genre) { - int songCount = genre.getSongCount(); - return MusicUtil.getSongCountString(context, songCount); - } - @NonNull public static String getPlaylistInfoString(@NonNull final Context context, @NonNull List songs) { final long duration = getTotalDuration(context, songs); @@ -185,31 +143,6 @@ public class MusicUtil { return string1 + " • " + string2; } - /** - * Build a concatenated string from the provided arguments - * The intended purpose is to show extra annotations - * to a music library item. - * Ex: for a given album --> buildInfoString(album.artist, album.songCount) - */ - @NonNull - public static String buildInfoString(@Nullable final String string1, @Nullable final String string2, @NonNull final String string3) { - // Skip empty strings - if (TextUtils.isEmpty(string1)) { - //noinspection ConstantConditions - return TextUtils.isEmpty(string2) ? "" : string2; - } - if (TextUtils.isEmpty(string2)) { - //noinspection ConstantConditions - return TextUtils.isEmpty(string1) ? "" : string1; - } - if (TextUtils.isEmpty(string3)) { - //noinspection ConstantConditions - return TextUtils.isEmpty(string1) ? "" : string3; - } - - return string1 + " • " + string2 + " • " + string3; - } - public static String getReadableDurationString(long songDurationMillis) { long minutes = (songDurationMillis / 1000) / 60; long seconds = (songDurationMillis / 1000) % 60; diff --git a/app/src/main/java/code/name/monkey/retromusic/util/PackageValidator.kt b/app/src/main/java/code/name/monkey/retromusic/util/PackageValidator.kt deleted file mode 100644 index d75bd28b..00000000 --- a/app/src/main/java/code/name/monkey/retromusic/util/PackageValidator.kt +++ /dev/null @@ -1,347 +0,0 @@ -/* - * Copyright (c) 2019 Hemanth Savarala. - * - * Licensed under the GNU General Public License v3 - * - * This 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 software 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. - */ - -package code.name.monkey.retromusic.util - - -import android.Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE -import android.Manifest.permission.MEDIA_CONTENT_CONTROL -import android.annotation.SuppressLint -import android.content.Context -import android.content.pm.PackageInfo -import android.content.pm.PackageInfo.REQUESTED_PERMISSION_GRANTED -import android.content.pm.PackageManager -import android.content.res.XmlResourceParser -import android.os.Process -import android.support.v4.media.session.MediaSessionCompat -import android.util.Base64 -import android.util.Log -import androidx.annotation.XmlRes -import androidx.media.MediaBrowserServiceCompat -import code.name.monkey.retromusic.BuildConfig -import org.xmlpull.v1.XmlPullParserException -import java.io.IOException -import java.security.MessageDigest -import java.security.NoSuchAlgorithmException - -/** - * Validates that the calling package is authorized to browse a [MediaBrowserServiceCompat]. - * - * The list of allowed signing certificates and their corresponding package names is defined in - * res/xml/allowed_media_browser_callers.xml. - * - * If you want to add a new caller to allowed_media_browser_callers.xml and you don't know - * its signature, this class will print to logcat (INFO level) a message with the proper - * xml tags to add to allow the caller. - * - * For more information, see res/xml/allowed_media_browser_callers.xml. - */ -class PackageValidator( - context: Context, - @XmlRes xmlResId: Int -) { - private val context: Context - private val packageManager: PackageManager - - private val certificateWhitelist: Map - private val platformSignature: String - - private val callerChecked = mutableMapOf>() - - init { - val parser = context.resources.getXml(xmlResId) - this.context = context.applicationContext - this.packageManager = this.context.packageManager - - certificateWhitelist = buildCertificateWhitelist(parser) - platformSignature = getSystemSignature() - } - - /** - * Checks whether the caller attempting to connect to a [MediaBrowserServiceCompat] is known. - * See [MusicService.onGetRoot] for where this is utilized. - * - * @param callingPackage The package name of the caller. - * @param callingUid The user id of the caller. - * @return `true` if the caller is known, `false` otherwise. - */ - fun isKnownCaller(callingPackage: String, callingUid: Int): Boolean { - // If the caller has already been checked, return the previous result here. - val (checkedUid, checkResult) = callerChecked[callingPackage] ?: Pair(0, false) - if (checkedUid == callingUid) { - return checkResult - } - - /** - * Because some of these checks can be slow, we save the results in [callerChecked] after - * this code is run. - * - * In particular, there's little reason to recompute the calling package's certificate - * signature (SHA-256) each call. - * - * This is safe to do as we know the UID matches the package's UID (from the check above), - * and app UIDs are set at install time. Additionally, a package name + UID is guaranteed to - * be constant until a reboot. (After a reboot then a previously assigned UID could be - * reassigned.) - */ - - // Build the caller info for the rest of the checks here. - val callerPackageInfo = buildCallerInfo(callingPackage) - ?: throw IllegalStateException("Caller wasn't found in the system?") - - // Verify that things aren't ... broken. (This test should always pass.) - if (callerPackageInfo.uid != callingUid) { - throw IllegalStateException("Caller's package UID doesn't match caller's actual UID?") - } - - val callerSignature = callerPackageInfo.signature - val isPackageInWhitelist = certificateWhitelist[callingPackage]?.signatures?.first { - it.signature == callerSignature - } != null - - val isCallerKnown = when { - // If it's our own app making the call, allow it. - callingUid == Process.myUid() -> true - // If it's one of the apps on the whitelist, allow it. - isPackageInWhitelist -> true - // If the system is making the call, allow it. - callingUid == Process.SYSTEM_UID -> true - // If the app was signed by the same certificate as the platform itself, also allow it. - callerSignature == platformSignature -> true - /** - * [MEDIA_CONTENT_CONTROL] permission is only available to system applications, and - * while it isn't required to allow these apps to connect to a - * [MediaBrowserServiceCompat], allowing this ensures optimal compatability with apps - * such as Android TV and the Google Assistant. - */ - callerPackageInfo.permissions.contains(MEDIA_CONTENT_CONTROL) -> true - /** - * This last permission can be specifically granted to apps, and, in addition to - * allowing them to retrieve notifications, it also allows them to connect to an - * active [MediaSessionCompat]. - * As with the above, it's not required to allow apps holding this permission to - * connect to your [MediaBrowserServiceCompat], but it does allow easy comparability - * with apps such as Wear OS. - */ - callerPackageInfo.permissions.contains(BIND_NOTIFICATION_LISTENER_SERVICE) -> true - // If none of the pervious checks succeeded, then the caller is unrecognized. - else -> false - } - - if (!isCallerKnown) { - logUnknownCaller(callerPackageInfo) - } - - // Save our work for next time. - callerChecked[callingPackage] = Pair(callingUid, isCallerKnown) - return isCallerKnown - } - - /** - * Logs an info level message with details of how to add a caller to the allowed callers list - * when the app is debuggable. - */ - private fun logUnknownCaller(callerPackageInfo: CallerPackageInfo) { - if (BuildConfig.DEBUG && callerPackageInfo.signature != null) { - Log.i(TAG, "PackageValidator call" + callerPackageInfo.name + callerPackageInfo.packageName + callerPackageInfo.signature) - } - } - - /** - * Builds a [CallerPackageInfo] for a given package that can be used for all the - * various checks that are performed before allowing an app to connect to a - * [MediaBrowserServiceCompat]. - */ - private fun buildCallerInfo(callingPackage: String): CallerPackageInfo? { - val packageInfo = getPackageInfo(callingPackage) ?: return null - - val appName = packageInfo.applicationInfo.loadLabel(packageManager).toString() - val uid = packageInfo.applicationInfo.uid - val signature = getSignature(packageInfo) - - val requestedPermissions = packageInfo.requestedPermissions - val permissionFlags = packageInfo.requestedPermissionsFlags - val activePermissions = mutableSetOf() - requestedPermissions?.forEachIndexed { index, permission -> - if (permissionFlags[index] and REQUESTED_PERMISSION_GRANTED != 0) { - activePermissions += permission - } - } - - return CallerPackageInfo(appName, callingPackage, uid, signature, activePermissions.toSet()) - } - - /** - * Looks up the [PackageInfo] for a package name. - * This requests both the signatures (for checking if an app is on the whitelist) and - * the app's permissions, which allow for more flexibility in the whitelist. - * - * @return [PackageInfo] for the package name or null if it's not found. - */ - @SuppressLint("PackageManagerGetSignatures") - private fun getPackageInfo(callingPackage: String): PackageInfo? = - packageManager.getPackageInfo(callingPackage, - PackageManager.GET_SIGNATURES or PackageManager.GET_PERMISSIONS) - - /** - * Gets the signature of a given package's [PackageInfo]. - * - * The "signature" is a SHA-256 hash of the public key of the signing certificate used by - * the app. - * - * If the app is not found, or if the app does not have exactly one signature, this method - * returns `null` as the signature. - */ - private fun getSignature(packageInfo: PackageInfo): String? { - // Security best practices dictate that an app should be signed with exactly one (1) - // signature. Because of this, if there are multiple signatures, reject it. - if (packageInfo.signatures == null || packageInfo.signatures.size != 1) { - return null - } else { - val certificate = packageInfo.signatures[0].toByteArray() - return getSignatureSha256(certificate) - } - } - - private fun buildCertificateWhitelist(parser: XmlResourceParser): Map { - - val certificateWhitelist = LinkedHashMap() - try { - var eventType = parser.next() - while (eventType != XmlResourceParser.END_DOCUMENT) { - if (eventType == XmlResourceParser.START_TAG) { - val callerInfo = when (parser.name) { - "signing_certificate" -> parseV1Tag(parser) - "signature" -> parseV2Tag(parser) - else -> null - } - - callerInfo?.let { info -> - val packageName = info.packageName - val existingCallerInfo = certificateWhitelist[packageName] - if (existingCallerInfo != null) { - existingCallerInfo.signatures += callerInfo.signatures - } else { - certificateWhitelist[packageName] = callerInfo - } - } - } - - eventType = parser.next() - } - } catch (xmlException: XmlPullParserException) { - Log.e(TAG, "Could not read allowed callers from XML.", xmlException) - } catch (ioException: IOException) { - Log.e(TAG, "Could not read allowed callers from XML.", ioException) - } - - return certificateWhitelist - } - - /** - * Parses a v1 format tag. See allowed_media_browser_callers.xml for more details. - */ - private fun parseV1Tag(parser: XmlResourceParser): KnownCallerInfo { - val name = parser.getAttributeValue(null, "name") - val packageName = parser.getAttributeValue(null, "package") - val isRelease = parser.getAttributeBooleanValue(null, "release", false) - val certificate = parser.nextText().replace(WHITESPACE_REGEX, "") - val signature = getSignatureSha256(certificate) - - val callerSignature = KnownSignature(signature, isRelease) - return KnownCallerInfo(name, packageName, mutableSetOf(callerSignature)) - } - - /** - * Parses a v2 format tag. See allowed_media_browser_callers.xml for more details. - */ - private fun parseV2Tag(parser: XmlResourceParser): KnownCallerInfo { - val name = parser.getAttributeValue(null, "name") - val packageName = parser.getAttributeValue(null, "package") - - val callerSignatures = mutableSetOf() - var eventType = parser.next() - while (eventType != XmlResourceParser.END_TAG) { - val isRelease = parser.getAttributeBooleanValue(null, "release", false) - val signature = parser.nextText().replace(WHITESPACE_REGEX, "").toLowerCase() - callerSignatures += KnownSignature(signature, isRelease) - - eventType = parser.next() - } - - return KnownCallerInfo(name, packageName, callerSignatures) - } - - /** - * Finds the Android platform signing key signature. This key is never null. - */ - private fun getSystemSignature(): String = - getPackageInfo(ANDROID_PLATFORM)?.let { platformInfo -> - getSignature(platformInfo) - } ?: throw IllegalStateException("Platform signature not found") - - /** - * Creates a SHA-256 signature given a Base64 encoded certificate. - */ - private fun getSignatureSha256(certificate: String): String { - return getSignatureSha256(Base64.decode(certificate, Base64.DEFAULT)) - } - - /** - * Creates a SHA-256 signature given a certificate byte array. - */ - private fun getSignatureSha256(certificate: ByteArray): String { - val md: MessageDigest - try { - md = MessageDigest.getInstance("SHA256") - } catch (noSuchAlgorithmException: NoSuchAlgorithmException) { - Log.e(TAG, "No such algorithm: $noSuchAlgorithmException") - throw RuntimeException("Could not find SHA256 hash algorithm", noSuchAlgorithmException) - } - md.update(certificate) - - // This code takes the byte array generated by `md.digest()` and joins each of the bytes - // to a string, applying the string format `%02x` on each digit before it's appended, with - // a colon (':') between each of the items. - // For example: input=[0,2,4,6,8,10,12], output="00:02:04:06:08:0a:0c" - return md.digest().joinToString(":") { String.format("%02x", it) } - } - - private data class KnownCallerInfo( - internal val name: String, - internal val packageName: String, - internal val signatures: MutableSet - ) - - private data class KnownSignature( - internal val signature: String, - internal val release: Boolean - ) - - /** - * Convenience class to hold all of the information about an app that's being checked - * to see if it's a known caller. - */ - private data class CallerPackageInfo( - internal val name: String, - internal val packageName: String, - internal val uid: Int, - internal val signature: String?, - internal val permissions: Set - ) -} - -private const val TAG = "PackageValidator" -private const val ANDROID_PLATFORM = "android" -private val WHITESPACE_REGEX = "\\s|\\n".toRegex() diff --git a/app/src/main/java/code/name/monkey/retromusic/util/RetroUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/RetroUtil.java index 9efea8f5..601d1770 100755 --- a/app/src/main/java/code/name/monkey/retromusic/util/RetroUtil.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/RetroUtil.java @@ -21,7 +21,6 @@ import android.content.Context; import android.content.Intent; import android.content.res.Configuration; import android.content.res.Resources; -import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; @@ -31,9 +30,6 @@ import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.Uri; import android.os.Build; -import android.os.ResultReceiver; -import android.provider.BaseColumns; -import android.provider.MediaStore; import android.util.DisplayMetrics; import android.view.Display; import android.view.View; @@ -45,16 +41,8 @@ import androidx.annotation.ColorInt; import androidx.annotation.DrawableRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat; -import java.lang.reflect.Method; -import java.net.InetAddress; -import java.net.NetworkInterface; -import java.util.Collections; -import java.util.List; - -import code.name.monkey.appthemehelper.ThemeStore; import code.name.monkey.appthemehelper.util.TintHelper; import code.name.monkey.retromusic.App; @@ -88,40 +76,6 @@ public class RetroUtil { return config.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL; } - @TargetApi(19) - public static void setStatusBarTranslucent(@NonNull Window window) { - window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, - WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); - } - - public static boolean isMarshMellow() { - return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M; - } - - public static boolean isNougat() { - return Build.VERSION.SDK_INT >= Build.VERSION_CODES.N; - } - - public static boolean isOreo() { - return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O; - } - - public static float getDistance(float x1, float y1, float x2, float y2) { - return (float) Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); - } - - public static float convertDpToPixel(float dp, @NonNull Context context) { - Resources resources = context.getResources(); - DisplayMetrics metrics = resources.getDisplayMetrics(); - return dp * ((float) metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT); - } - - public static float convertPixelsToDp(float px, @NonNull Context context) { - Resources resources = context.getResources(); - DisplayMetrics metrics = resources.getDisplayMetrics(); - return px / ((float) metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT); - } - public static void openUrl(@NonNull Activity context, @NonNull String str) { Intent intent = new Intent("android.intent.action.VIEW"); intent.setData(Uri.parse(str)); @@ -154,20 +108,6 @@ public class RetroUtil { } } - public static void showIme(@NonNull View view) { - InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService - (Context.INPUT_METHOD_SERVICE); - // the public methods don't seem to work for me, so… reflection. - try { - Method showSoftInputUnchecked = InputMethodManager.class.getMethod( - "showSoftInputUnchecked", int.class, ResultReceiver.class); - showSoftInputUnchecked.setAccessible(true); - showSoftInputUnchecked.invoke(imm, 0, null); - } catch (Exception e) { - // ho hum - } - } - @Nullable public static Drawable getVectorDrawable(@NonNull Resources res, @DrawableRes int resId, @Nullable Resources.Theme theme) { @@ -184,17 +124,6 @@ public class RetroUtil { getVectorDrawable(context.getResources(), id, context.getTheme()), color); } - public static Drawable getTintedDrawable(@NonNull Context context, @DrawableRes int id, - @ColorInt int color) { - return TintHelper.createTintedDrawable(ContextCompat.getDrawable(context, id), color); - } - - public static Drawable getTintedDrawable(@DrawableRes int id) { - return TintHelper - .createTintedDrawable(ContextCompat.getDrawable(App.Companion.getContext(), id), - ThemeStore.Companion.accentColor(App.Companion.getContext())); - } - @NonNull public static Bitmap createBitmap(@NonNull Drawable drawable, float sizeMultiplier) { Bitmap bitmap = Bitmap.createBitmap((int) (drawable.getIntrinsicWidth() * sizeMultiplier), @@ -227,64 +156,6 @@ public class RetroUtil { } } - public static String getIPAddress(boolean useIPv4) { - try { - List interfaces = Collections.list(NetworkInterface.getNetworkInterfaces()); - for (NetworkInterface intf : interfaces) { - List addrs = Collections.list(intf.getInetAddresses()); - for (InetAddress addr : addrs) { - if (!addr.isLoopbackAddress()) { - String sAddr = addr.getHostAddress(); - //boolean isIPv4 = InetAddressUtils.isIPv4Address(sAddr); - boolean isIPv4 = sAddr.indexOf(':') < 0; - - if (useIPv4) { - if (isIPv4) - return sAddr; - } else { - if (!isIPv4) { - int delim = sAddr.indexOf('%'); // drop ip6 zone suffix - return delim < 0 ? sAddr.toUpperCase() : sAddr.substring(0, delim).toUpperCase(); - } - } - } - } - } - } catch (Exception ex) { - } - return ""; - } - - public static Uri getSongUri(Context context, long id) { - final String[] projection = new String[]{ - BaseColumns._ID, MediaStore.MediaColumns.DATA, MediaStore.Audio.AudioColumns.ALBUM_ID - }; - final StringBuilder selection = new StringBuilder(); - selection.append(BaseColumns._ID + " IN ("); - selection.append(id); - selection.append(")"); - final Cursor c = context.getContentResolver().query( - MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, selection.toString(), - null, null); - - if (c == null) { - return null; - } - c.moveToFirst(); - - - try { - - Uri uri = Uri.parse(c.getString(1)); - c.close(); - - return uri; - } catch (Exception e) { - e.printStackTrace(); - return null; - } - } - public static int getStatusBarHeight() { int result = 0; int resourceId = App.Companion.getContext().getResources().getIdentifier("status_bar_height", "dimen", "android"); diff --git a/app/src/main/java/code/name/monkey/retromusic/util/SwipeAndDragHelper.java b/app/src/main/java/code/name/monkey/retromusic/util/SwipeAndDragHelper.java index 1e2c82ba..f8fa85da 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/SwipeAndDragHelper.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/SwipeAndDragHelper.java @@ -15,6 +15,8 @@ package code.name.monkey.retromusic.util; import android.graphics.Canvas; + +import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.ItemTouchHelper; @@ -22,7 +24,7 @@ public class SwipeAndDragHelper extends ItemTouchHelper.Callback { private ActionCompletionContract contract; - public SwipeAndDragHelper(ActionCompletionContract contract) { + public SwipeAndDragHelper(@NonNull ActionCompletionContract contract) { this.contract = contract; } diff --git a/app/src/main/java/code/name/monkey/retromusic/util/ViewUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/ViewUtil.kt index b31a3884..65c03c5a 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/ViewUtil.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/ViewUtil.kt @@ -28,41 +28,18 @@ import android.view.View import android.view.animation.PathInterpolator import android.widget.ProgressBar import android.widget.SeekBar -import android.widget.TextView import androidx.annotation.ColorInt import androidx.core.view.ViewCompat import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.retromusic.R -import com.google.android.material.card.MaterialCardView -import com.google.android.material.shape.CornerFamily -import com.google.android.material.shape.MaterialShapeDrawable import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView object ViewUtil { const val RETRO_MUSIC_ANIM_TIME = 1000 - fun cardViewTopCorners(cardView: MaterialCardView) { - - val radius = PreferenceUtil.getInstance(cardView.context).dialogCorner - (cardView.background as? MaterialShapeDrawable).let { - it?.shapeAppearanceModel?.apply { - toBuilder() - .setTopLeftCorner(CornerFamily.CUT, 10f) - .build() - } - } - } - - fun createTextColorTransition(v: TextView, @ColorInt startColor: Int, @ColorInt endColor: Int): Animator { - return createColorAnimator(v, "textColor", startColor, endColor) - } - - fun createBackgroundColorTransition(v: View, @ColorInt startColor: Int, @ColorInt endColor: Int): Animator { - return createColorAnimator(v, "backgroundColor", startColor, endColor) - } fun setProgressDrawable(progressSlider: SeekBar, newColor: Int, thumbTint: Boolean = false) { @@ -103,21 +80,6 @@ object ViewUtil { return animator } - fun setStatusBarHeight(context: Context, statusBar: View) { - val lp = statusBar.layoutParams - lp.height = getStatusBarHeight(context) - statusBar.requestLayout() - } - - fun getStatusBarHeight(context: Context): Int { - var result = 0 - val resourceId = context.resources.getIdentifier("status_bar_height", "dimen", "android") - if (resourceId > 0) { - result = context.resources.getDimensionPixelSize(resourceId) - } - return result - } - fun hitTest(v: View, x: Int, y: Int): Boolean { val tx = (ViewCompat.getTranslationX(v) + 0.5f).toInt() val ty = (ViewCompat.getTranslationY(v) + 0.5f).toInt() diff --git a/app/src/main/java/code/name/monkey/retromusic/util/color/ImageGradientColorizer.java b/app/src/main/java/code/name/monkey/retromusic/util/color/ImageGradientColorizer.java deleted file mode 100644 index 7963e563..00000000 --- a/app/src/main/java/code/name/monkey/retromusic/util/color/ImageGradientColorizer.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (c) 2019 Hemanth Savarala. - * - * Licensed under the GNU General Public License v3 - * - * This 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 software 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. - */ -package code.name.monkey.retromusic.util.color; - -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.ColorMatrix; -import android.graphics.ColorMatrixColorFilter; -import android.graphics.LinearGradient; -import android.graphics.Paint; -import android.graphics.PorterDuff; -import android.graphics.PorterDuffXfermode; -import android.graphics.Shader; -import android.graphics.drawable.Drawable; - -/** - * A utility class to colorize bitmaps with a color gradient and a special blending mode - */ -public class ImageGradientColorizer { - - public Bitmap colorize(Drawable drawable, int backgroundColor, boolean isRtl) { - int width = drawable.getIntrinsicWidth(); - int height = drawable.getIntrinsicHeight(); - int size = Math.min(width, height); - int widthInset = (width - size) / 2; - int heightInset = (height - size) / 2; - drawable = drawable.mutate(); - drawable.setBounds(-widthInset, -heightInset, width - widthInset, height - heightInset); - Bitmap newBitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas(newBitmap); - // Values to calculate the luminance of a color - float lr = 0.2126f; - float lg = 0.7152f; - float lb = 0.0722f; - // Extract the red, green, blue components of the color extraction color in - // float and int form - int tri = Color.red(backgroundColor); - int tgi = Color.green(backgroundColor); - int tbi = Color.blue(backgroundColor); - float tr = tri / 255f; - float tg = tgi / 255f; - float tb = tbi / 255f; - // Calculate the luminance of the color extraction color - float cLum = (tr * lr + tg * lg + tb * lb) * 255; - ColorMatrix m = new ColorMatrix(new float[]{ - lr, lg, lb, 0, tri - cLum, - lr, lg, lb, 0, tgi - cLum, - lr, lg, lb, 0, tbi - cLum, - 0, 0, 0, 1, 0, - }); - Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); - LinearGradient linearGradient = new LinearGradient(0, 0, size, 0, - new int[]{0, Color.argb(0.5f, 1, 1, 1), Color.BLACK}, - new float[]{0.0f, 0.4f, 1.0f}, Shader.TileMode.CLAMP); - paint.setShader(linearGradient); - Bitmap fadeIn = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); - Canvas fadeInCanvas = new Canvas(fadeIn); - drawable.clearColorFilter(); - drawable.draw(fadeInCanvas); - if (isRtl) { - // Let's flip the gradient - fadeInCanvas.translate(size, 0); - fadeInCanvas.scale(-1, 1); - } - paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN)); - fadeInCanvas.drawPaint(paint); - Paint coloredPaint = new Paint(Paint.ANTI_ALIAS_FLAG); - coloredPaint.setColorFilter(new ColorMatrixColorFilter(m)); - coloredPaint.setAlpha((int) (0.5f * 255)); - canvas.drawBitmap(fadeIn, 0, 0, coloredPaint); - linearGradient = new LinearGradient(0, 0, size, 0, - new int[]{0, Color.argb(0.5f, 1, 1, 1), Color.BLACK}, - new float[]{0.0f, 0.6f, 1.0f}, Shader.TileMode.CLAMP); - paint.setShader(linearGradient); - fadeInCanvas.drawPaint(paint); - canvas.drawBitmap(fadeIn, 0, 0, null); - return newBitmap; - } -} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/util/color/MediaNotificationProcessor.java b/app/src/main/java/code/name/monkey/retromusic/util/color/MediaNotificationProcessor.java index 1e87ea02..16804d8a 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/color/MediaNotificationProcessor.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/color/MediaNotificationProcessor.java @@ -20,6 +20,7 @@ import android.graphics.Canvas; import android.graphics.Color; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; + import androidx.annotation.VisibleForTesting; import androidx.palette.graphics.Palette; @@ -57,7 +58,6 @@ public class MediaNotificationProcessor { private static final float BLACK_MAX_LIGHTNESS = 0.08f; private static final float WHITE_MIN_LIGHTNESS = 0.90f; private static final int RESIZE_BITMAP_AREA = 150 * 150; - private final ImageGradientColorizer mColorizer; private final Context mContext; /** * The context of the notification. This is the app context of the package posting the @@ -70,16 +70,14 @@ public class MediaNotificationProcessor { private onColorThing onColorThing; public MediaNotificationProcessor(Context context, Context packageContext, onColorThing thing) { - this(context, packageContext, new ImageGradientColorizer()); + this(context, packageContext); onColorThing = thing; } @VisibleForTesting - MediaNotificationProcessor(Context context, Context packageContext, - ImageGradientColorizer colorizer) { + MediaNotificationProcessor(Context context, Context packageContext) { mContext = context; mPackageContext = packageContext; - mColorizer = colorizer; } /** @@ -292,228 +290,4 @@ public class MediaNotificationProcessor { public interface onColorThing { void bothColor(int i, int i2); } - - /** - * The fraction below which we select the vibrant instead of the light/dark vibrant color - *//* - private static final float POPULATION_FRACTION_FOR_MORE_VIBRANT = 1.0f; - *//** - * Minimum saturation that a muted color must have if there exists if deciding between two colors - *//* - private static final float MIN_SATURATION_WHEN_DECIDING = 0.19f; - *//** - * Minimum fraction that any color must have to be picked up as a text color - *//* - private static final double MINIMUM_IMAGE_FRACTION = 0.002; - *//** - * The population fraction to select the dominant color as the text color over a the colored - * ones. - *//* - private static final float POPULATION_FRACTION_FOR_DOMINANT = 0.01f; - *//** - * The population fraction to select a white or black color as the background over a color. - *//* - private static final float POPULATION_FRACTION_FOR_WHITE_OR_BLACK = 2.5f; - - private static final float BLACK_MAX_LIGHTNESS = 0.08f; - private static final float WHITE_MIN_LIGHTNESS = 0.90f; - private static final int RESIZE_BITMAP_AREA = 150 * 150; - private static float[] mFilteredBackgroundHsl = null; - private final ImageGradientColorizer mColorizer; - private final Context mContext; - *//** - * The context of the notification. This is the app context of the package posting the - * notification. - *//* - private final Context mPackageContext; - private static Palette.Filter mBlackWhiteFilter = (rgb, hsl) -> !isWhiteOrBlack(hsl); - private boolean mIsLowPriority; - - public MediaNotificationProcessor(Context context, Context packageContext) { - this(context, packageContext, new ImageGradientColorizer()); - } - - @VisibleForTesting - MediaNotificationProcessor(Context context, Context packageContext, - ImageGradientColorizer colorizer) { - mContext = context; - mPackageContext = packageContext; - mColorizer = colorizer; - } - - @Nullable - public static Palette.Builder generatePalette(Bitmap bitmap) { - return bitmap == null ? null : Palette.from(bitmap).clearFilters().resizeBitmapArea(RESIZE_BITMAP_AREA); - } - - public static int getBackgroundColor(Palette.Builder builder) { - return findBackgroundColorAndFilter(builder.generate()); - } - - public static int getTextColor(Palette.Builder builder) { - int backgroundColor = 0; - if (mFilteredBackgroundHsl != null) { - builder.addFilter((rgb, hsl) -> { - // at least 10 degrees hue difference - float diff = Math.abs(hsl[0] - mFilteredBackgroundHsl[0]); - return diff > 10 && diff < 350; - }); - } - builder.addFilter(mBlackWhiteFilter); - Palette palette = builder.generate(); - return selectForegroundColor(backgroundColor, palette); - } - - private static int selectForegroundColor(int backgroundColor, Palette palette) { - if (ColorUtil.isColorLight(backgroundColor)) { - return selectForegroundColorForSwatches(palette.getDarkVibrantSwatch(), - palette.getVibrantSwatch(), - palette.getDarkMutedSwatch(), - palette.getMutedSwatch(), - palette.getDominantSwatch(), - Color.BLACK); - } else { - return selectForegroundColorForSwatches(palette.getLightVibrantSwatch(), - palette.getVibrantSwatch(), - palette.getLightMutedSwatch(), - palette.getMutedSwatch(), - palette.getDominantSwatch(), - Color.WHITE); - } - } - - private static int selectForegroundColorForSwatches(Palette.Swatch moreVibrant, - Palette.Swatch vibrant, Palette.Swatch moreMutedSwatch, Palette.Swatch mutedSwatch, - Palette.Swatch dominantSwatch, int fallbackColor) { - Palette.Swatch coloredCandidate = selectVibrantCandidate(moreVibrant, vibrant); - if (coloredCandidate == null) { - coloredCandidate = selectMutedCandidate(mutedSwatch, moreMutedSwatch); - } - if (coloredCandidate != null) { - if (dominantSwatch == coloredCandidate) { - return coloredCandidate.getRgb(); - } else if ((float) coloredCandidate.getPopulation() / dominantSwatch.getPopulation() - < POPULATION_FRACTION_FOR_DOMINANT - && dominantSwatch.getHsl()[1] > MIN_SATURATION_WHEN_DECIDING) { - return dominantSwatch.getRgb(); - } else { - return coloredCandidate.getRgb(); - } - } else if (hasEnoughPopulation(dominantSwatch)) { - return dominantSwatch.getRgb(); - } else { - return fallbackColor; - } - } - - private static Palette.Swatch selectMutedCandidate(Palette.Swatch first, - Palette.Swatch second) { - boolean firstValid = hasEnoughPopulation(first); - boolean secondValid = hasEnoughPopulation(second); - if (firstValid && secondValid) { - float firstSaturation = first.getHsl()[1]; - float secondSaturation = second.getHsl()[1]; - float populationFraction = first.getPopulation() / (float) second.getPopulation(); - if (firstSaturation * populationFraction > secondSaturation) { - return first; - } else { - return second; - } - } else if (firstValid) { - return first; - } else if (secondValid) { - return second; - } - return null; - } - - private static Palette.Swatch selectVibrantCandidate(Palette.Swatch first, - Palette.Swatch second) { - boolean firstValid = hasEnoughPopulation(first); - boolean secondValid = hasEnoughPopulation(second); - if (firstValid && secondValid) { - int firstPopulation = first.getPopulation(); - int secondPopulation = second.getPopulation(); - if (firstPopulation / (float) secondPopulation - < POPULATION_FRACTION_FOR_MORE_VIBRANT) { - return second; - } else { - return first; - } - } else if (firstValid) { - return first; - } else if (secondValid) { - return second; - } - return null; - } - - private static boolean hasEnoughPopulation(Palette.Swatch swatch) { - // We want a fraction that is at least 1% of the image - return swatch != null - && (swatch.getPopulation() / (float) RESIZE_BITMAP_AREA > MINIMUM_IMAGE_FRACTION); - } - - public static int findBackgroundColorAndFilter(Palette palette) { - // by default we use the dominant palette - Palette.Swatch dominantSwatch = palette.getDominantSwatch(); - if (dominantSwatch == null) { - // We're not filtering on white or black - mFilteredBackgroundHsl = null; - return Color.WHITE; - } - if (!isWhiteOrBlack(dominantSwatch.getHsl())) { - mFilteredBackgroundHsl = dominantSwatch.getHsl(); - return dominantSwatch.getRgb(); - } - // Oh well, we selected black or white. Lets look at the second color! - List swatches = palette.getSwatches(); - float highestNonWhitePopulation = -1; - Palette.Swatch second = null; - for (Palette.Swatch swatch : swatches) { - if (swatch != dominantSwatch - && swatch.getPopulation() > highestNonWhitePopulation - && !isWhiteOrBlack(swatch.getHsl())) { - second = swatch; - highestNonWhitePopulation = swatch.getPopulation(); - } - } - if (second == null) { - // We're not filtering on white or black - mFilteredBackgroundHsl = null; - return dominantSwatch.getRgb(); - } - if (dominantSwatch.getPopulation() / highestNonWhitePopulation - > POPULATION_FRACTION_FOR_WHITE_OR_BLACK) { - // The dominant swatch is very dominant, lets take it! - // We're not filtering on white or black - mFilteredBackgroundHsl = null; - return dominantSwatch.getRgb(); - } else { - mFilteredBackgroundHsl = second.getHsl(); - return second.getRgb(); - } - } - - private static boolean isWhiteOrBlack(float[] hsl) { - return isBlack(hsl) || isWhite(hsl); - } - - *//** - * @return true if the color represents a color which is close to black. - *//* - private static boolean isBlack(float[] hslColor) { - return hslColor[2] <= BLACK_MAX_LIGHTNESS; - } - - *//** - * @return true if the color represents a color which is close to white. - *//* - private static boolean isWhite(float[] hslColor) { - return hslColor[2] >= WHITE_MIN_LIGHTNESS; - } - - public void setIsLowPriority(boolean isLowPriority) { - mIsLowPriority = isLowPriority; - }*/ } diff --git a/app/src/main/java/code/name/monkey/retromusic/util/schedulers/BaseSchedulerProvider.java b/app/src/main/java/code/name/monkey/retromusic/util/schedulers/BaseSchedulerProvider.java deleted file mode 100644 index 1c844235..00000000 --- a/app/src/main/java/code/name/monkey/retromusic/util/schedulers/BaseSchedulerProvider.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2019 Hemanth Savarala. - * - * Licensed under the GNU General Public License v3 - * - * This 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 software 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. - */ - -package code.name.monkey.retromusic.util.schedulers; - -import androidx.annotation.NonNull; -import io.reactivex.Scheduler; - -/** - * Created by hemanths on 12/08/17. - */ - -public interface BaseSchedulerProvider { - @NonNull - Scheduler computation(); - - @NonNull - Scheduler io(); - - @NonNull - Scheduler ui(); -} diff --git a/app/src/main/java/code/name/monkey/retromusic/util/schedulers/SchedulerProvider.java b/app/src/main/java/code/name/monkey/retromusic/util/schedulers/SchedulerProvider.java deleted file mode 100644 index 481f0232..00000000 --- a/app/src/main/java/code/name/monkey/retromusic/util/schedulers/SchedulerProvider.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) 2019 Hemanth Savarala. - * - * Licensed under the GNU General Public License v3 - * - * This 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 software 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. - */ - -package code.name.monkey.retromusic.util.schedulers; - -import androidx.annotation.NonNull; - -import io.reactivex.Scheduler; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.schedulers.Schedulers; - -/** - * Created by hemanths on 12/08/17. - */ - -public class SchedulerProvider implements BaseSchedulerProvider { - @NonNull - private static SchedulerProvider INSTANCE; - - public SchedulerProvider() { - } - - public static synchronized SchedulerProvider getInstance() { - if (INSTANCE == null) { - INSTANCE = new SchedulerProvider(); - } - return INSTANCE; - } - - @Override - @NonNull - public Scheduler computation() { - return Schedulers.computation(); - } - - @Override - @NonNull - public Scheduler io() { - return Schedulers.io(); - } - - @Override - @NonNull - public Scheduler ui() { - return AndroidSchedulers.mainThread(); - } -} diff --git a/app/src/main/res/drawable/background_image.xml b/app/src/main/res/drawable/background_image.xml index 34810f56..3e55dfa0 100644 --- a/app/src/main/res/drawable/background_image.xml +++ b/app/src/main/res/drawable/background_image.xml @@ -1,12 +1,11 @@ - - + android:shape="rectangle"> + \ No newline at end of file diff --git a/app/src/main/res/layout-v24/layout_notification_collapsed.xml b/app/src/main/res/layout-v24/layout_notification_collapsed.xml index 5eff4110..cc70cd7d 100644 --- a/app/src/main/res/layout-v24/layout_notification_collapsed.xml +++ b/app/src/main/res/layout-v24/layout_notification_collapsed.xml @@ -1,157 +1,159 @@ - - - - - - - - - - - - - - - - - - - - + tools:ignore="ContentDescription"> - + - + - + - + - + - + - + - + - - + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-v24/layout_notification_expanded.xml b/app/src/main/res/layout-v24/layout_notification_expanded.xml index 74efd499..50615fab 100644 --- a/app/src/main/res/layout-v24/layout_notification_expanded.xml +++ b/app/src/main/res/layout-v24/layout_notification_expanded.xml @@ -1,146 +1,135 @@ + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/background" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + android:id="@+id/image" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_alignBottom="@+id/content" + android:layout_alignParentEnd="true"> + android:id="@+id/largeIcon" + android:layout_width="@dimen/notification_big_image_size" + android:layout_height="@dimen/notification_big_image_size" + android:layout_alignParentEnd="true" + android:scaleType="centerCrop" + tools:src="@tools:sample/avatars" /> + android:id="@+id/foregroundImage" + android:layout_width="96dp" + android:layout_height="match_parent" + android:layout_alignStart="@id/largeIcon" + android:src="@drawable/background_image" /> + android:id="@+id/content" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_alignParentStart="true" + android:orientation="vertical" + android:paddingStart="0dp" + android:paddingTop="8dp" + android:paddingEnd="144dp"> - - - - + android:layout_marginBottom="4dp" + android:gravity="center_vertical" + android:orientation="horizontal"> + android:id="@+id/smallIcon" + android:layout_width="16dp" + android:layout_height="16dp" + android:layout_marginStart="8dp" + tools:src="@drawable/ic_audiotrack_black_24dp" + tools:tint="@color/md_black_1000" /> + + + + + android:id="@+id/title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:ellipsize="end" + android:lines="1" + android:paddingStart="16dp" + android:paddingEnd="0dp" + android:singleLine="true" + android:textStyle="bold" + tools:text="@tools:sample/lorem/random" /> + android:id="@+id/subtitle" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:ellipsize="end" + android:lines="1" + android:paddingStart="16dp" + android:paddingEnd="0dp" + android:singleLine="true" + tools:text="@tools:sample/lorem/random" /> + android:paddingEnd="0dp" + android:paddingStart="12dp" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:orientation="horizontal"> + android:id="@+id/action_prev" + android:layout_width="42dp" + android:layout_height="42dp" + android:scaleType="centerInside" /> + android:id="@+id/action_play_pause" + android:layout_width="42dp" + android:layout_height="42dp" + android:scaleType="centerInside" /> + android:id="@+id/action_next" + android:layout_width="42dp" + android:layout_height="42dp" + android:scaleType="centerInside" /> - + android:id="@+id/action_quit" + android:layout_width="42dp" + android:layout_height="42dp" + android:scaleType="centerInside" /> \ No newline at end of file diff --git a/app/src/main/res/layout/layout_notification_collapsed.xml b/app/src/main/res/layout/layout_notification_collapsed.xml index e0c5189b..55c36340 100644 --- a/app/src/main/res/layout/layout_notification_collapsed.xml +++ b/app/src/main/res/layout/layout_notification_collapsed.xml @@ -19,7 +19,8 @@ android:layout_height="match_parent" android:layout_alignParentEnd="true" android:adjustViewBounds="true" - android:scaleType="centerCrop" /> + android:scaleType="centerCrop" + tools:src="@tools:sample/avatars" /> + tools:tint="?colorPrimary" /> @@ -36,11 +37,10 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="48dp" - android:layout_marginBottom="4dp" android:gravity="center_vertical" android:orientation="horizontal" android:paddingStart="8dp" - android:paddingTop="6dp" + android:paddingTop="4dp" android:paddingEnd="8dp"> + android:paddingStart="16dp" + android:paddingEnd="12dp"> + tools:text="@tools:sample/lorem/random" /> + tools:text="@tools:sample/lorem/random" /> @@ -124,33 +119,39 @@ + android:layout_width="38dp" + android:layout_height="38dp" + android:scaleType="centerInside" + android:src="@drawable/ic_skip_previous_round_white_32dp" + android:tint="?colorOnPrimary" /> + android:layout_width="38dp" + android:layout_height="38dp" + android:scaleType="centerInside" + android:src="@drawable/ic_pause_white_24dp" + android:tint="?colorOnPrimary" /> + android:layout_width="38dp" + android:layout_height="38dp" + android:scaleType="centerInside" + android:src="@drawable/ic_skip_next_round_white_32dp" + android:tint="?colorOnPrimary" /> \ No newline at end of file diff --git a/app/src/main/res/layout/layout_notification_expanded.xml b/app/src/main/res/layout/layout_notification_expanded.xml index 6f98469e..df873134 100644 --- a/app/src/main/res/layout/layout_notification_expanded.xml +++ b/app/src/main/res/layout/layout_notification_expanded.xml @@ -1,142 +1,133 @@ - - + android:layout_height="wrap_content"> - - - - - - - - - - - - - + android:layout_alignBottom="@+id/content" + android:layout_alignParentEnd="true"> - + - + - - - + + android:id="@+id/content" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_alignParentStart="true" + android:orientation="vertical" + android:paddingStart="0dp" + android:paddingTop="8dp" + android:paddingEnd="144dp"> - + - + - + - + + + + + + + + + + + + + + + + + + - \ 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 36be3533..66325418 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -18,7 +18,7 @@ 20sp - 134dp + 112dp From 1e1f9b1a6b0cfc373e4cd4b0206c36640747409d Mon Sep 17 00:00:00 2001 From: h4h13 Date: Tue, 29 Oct 2019 21:46:05 +0530 Subject: [PATCH 31/57] Fix playing queue list above FAB --- .../activities/PlayingQueueActivity.kt | 20 +++++++++++++------ .../res/layout/activity_playing_queue.xml | 4 +--- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/PlayingQueueActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/PlayingQueueActivity.kt index f0dc74ae..ce67481c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/PlayingQueueActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/PlayingQueueActivity.kt @@ -14,6 +14,7 @@ import code.name.monkey.retromusic.activities.base.AbsMusicServiceActivity import code.name.monkey.retromusic.adapter.song.PlayingQueueAdapter import code.name.monkey.retromusic.extensions.applyToolbar import code.name.monkey.retromusic.helper.MusicPlayerRemote +import code.name.monkey.retromusic.util.DensityUtil import code.name.monkey.retromusic.util.MusicUtil import com.h6ah4i.android.widget.advrecyclerview.animator.RefactoredDefaultItemAnimator import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager @@ -21,7 +22,7 @@ import com.h6ah4i.android.widget.advrecyclerview.utils.WrapperAdapterUtils import kotlinx.android.synthetic.main.activity_playing_queue.* -class PlayingQueueActivity : AbsMusicServiceActivity() { +open class PlayingQueueActivity : AbsMusicServiceActivity() { private var wrappedAdapter: RecyclerView.Adapter<*>? = null private var recyclerViewDragDropManager: RecyclerViewDragDropManager? = null @@ -29,7 +30,7 @@ class PlayingQueueActivity : AbsMusicServiceActivity() { private lateinit var linearLayoutManager: LinearLayoutManager - protected fun getUpNextAndQueueTime(): String { + private fun getUpNextAndQueueTime(): String { val duration = MusicPlayerRemote.getQueueDurationMillis(MusicPlayerRemote.position) return MusicUtil.buildInfoString( @@ -55,6 +56,7 @@ class PlayingQueueActivity : AbsMusicServiceActivity() { clearQueue.setOnClickListener { MusicPlayerRemote.clearQueue() } + checkForPadding() } override fun onOptionsItemSelected(item: MenuItem): Boolean { @@ -76,7 +78,7 @@ class PlayingQueueActivity : AbsMusicServiceActivity() { MusicPlayerRemote.playingQueue, MusicPlayerRemote.position, R.layout.item_queue) - wrappedAdapter = recyclerViewDragDropManager!!.createWrappedAdapter(playingQueueAdapter!!) + wrappedAdapter = recyclerViewDragDropManager?.createWrappedAdapter(playingQueueAdapter!!) linearLayoutManager = LinearLayoutManager(this) @@ -84,7 +86,7 @@ class PlayingQueueActivity : AbsMusicServiceActivity() { layoutManager = linearLayoutManager adapter = wrappedAdapter itemAnimator = animator - recyclerViewDragDropManager!!.attachRecyclerView(this) + recyclerViewDragDropManager?.attachRecyclerView(this) } linearLayoutManager.scrollToPositionWithOffset(MusicPlayerRemote.position + 1, 0) @@ -101,11 +103,17 @@ class PlayingQueueActivity : AbsMusicServiceActivity() { }) } + private fun checkForPadding() { + val height = DensityUtil.dip2px(this, 102f) + recyclerView.setPadding(0, 0, 0, (height)) + } + override fun onQueueChanged() { if (MusicPlayerRemote.playingQueue.isEmpty()) { finish() return } + checkForPadding() updateQueue() updateCurrentSong() } @@ -124,13 +132,13 @@ class PlayingQueueActivity : AbsMusicServiceActivity() { } private fun updateQueuePosition() { - playingQueueAdapter!!.setCurrent(MusicPlayerRemote.position) + playingQueueAdapter?.setCurrent(MusicPlayerRemote.position) resetToCurrentPosition() playerQueueSubHeader.text = getUpNextAndQueueTime() } private fun updateQueue() { - playingQueueAdapter!!.swapDataSet(MusicPlayerRemote.playingQueue, MusicPlayerRemote.position) + playingQueueAdapter?.swapDataSet(MusicPlayerRemote.playingQueue, MusicPlayerRemote.position) resetToCurrentPosition() } diff --git a/app/src/main/res/layout/activity_playing_queue.xml b/app/src/main/res/layout/activity_playing_queue.xml index 21b8862e..58a85e3a 100755 --- a/app/src/main/res/layout/activity_playing_queue.xml +++ b/app/src/main/res/layout/activity_playing_queue.xml @@ -10,8 +10,7 @@ android:id="@+id/appBarLayout" android:layout_width="match_parent" android:layout_height="wrap_content" - android:elevation="0dp" - app:elevation="0dp"> + app:liftOnScroll="true"> - Date: Tue, 29 Oct 2019 22:26:05 +0530 Subject: [PATCH 32/57] Fix peak theme background when expand --- app/src/main/assets/retro-changelog.html | 2 +- .../base/AbsSlidingMusicPanelActivity.kt | 20 +++++++++++++++++++ .../res/layout/sliding_music_panel_layout.xml | 10 +++++++++- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/app/src/main/assets/retro-changelog.html b/app/src/main/assets/retro-changelog.html index 49aac675..263b37a9 100644 --- a/app/src/main/assets/retro-changelog.html +++ b/app/src/main/assets/retro-changelog.html @@ -1 +1 @@ -

v3.4.500

  • Added peak theme
  • Added app rating dialog
  • Added desaturated color option for dark mode
  • Fix slow search loading
  • Fix last added slow loading
  • Fix home banner toolbar corner
  • Fix home crashing when switching between two tabs
  • Fix remaining time in playing queue
  • Fix font not applied for some components
  • Fix crashing on album details sorting
  • Fixed lot of internal bugs
  • Fix dialog expand
  • Fix list card color
  • Removed SlidingUpPanel to replace with BottomSheet
  • Removed color theme as per material design guidelines
  • Removed classic theme(We're bringing back)
  • Removed artist loading from Deezer because it's not official to use(will come back with official)
  • Replace line switch to Material Switch in settings
  • Performance improved
  • Updated internal libraries
  • Updated translation
  • Limiting the use of Theme engine for making use of system colors
  • Change home icon from the user icon
  • Corrected all toolbar with elevation when scrolling

v3.3.200

  • Fix fullscreen bottom tabs icons squash
  • Improved tiny theme colors
  • Android auto support
  • New notification icon
  • Favorite icon in mini player

v.3.3.100

  • Improved Now playing controls alignment
  • Lot internal changes to improve performance
  • Fix playlist adding crash
  • Fix color corrections
  • Fix file editing crash

v3.3.000

  • SD card support for deleting and editing

v3.2.240

  • Improved options dialog with selected color and title icon
  • Fix dialog color on dark theme

v3.2.220

  • Fix Notification SeekBar position (Need Android Q test)
  • Rolled back settings tint icons
  • Changed preference category title style according Android Q
  • Fix tabs options not working

v3.2.203

  • Carousel effect improved
  • Settings icons are now tint accent color
  • Settings title, back arrow and icons are now tint accent color
  • Equalizer is removed
  • Fix keyboard not popping on Search
  • Curated the main options
  • Folder toolbar outlined, folder icon background fix and separate line removed
  • Edit text input handles are colored

v3.2.135

  • Fix crashing on sharing song

v3.2.125

  • Fix crashing on selecting profile picture
  • Semi transparent color fix(s) on now playing themes

v3.2.120

  • Fix crashing on choosing a theme
  • Fix color theme selection without pro enabled
  • Fix icon tint some places

v3.2.105

  • Fix color notifications

v3.2.100

  • Fix crashing on Sleep timer
  • Toolbar elevation removed added stroke instead
  • Show empty indication for home

v3.2.000

  • Implemented Artist image loading all thanks to VinylMusicPlayer
  • Fixed buttons in Genre details
  • Fixed color buttons in Album and Artist details screen

v3.1.900

  • Added Play and Shuffle buttons on Songs list, Album Details, Artist Details, Playlist Details etc.
  • Home toolbar is semi transparent in Banner mode
  • Added new Buy Retro Music pro in settings
  • Improved dark color in Dark theme

v3.1.850

  • Toolbar will be clickable for Search

v3.1.800

  • Search bar CardView background
  • Improve volume zero
  • Now playing and Album theme picker rollback to dialog
  • Fix sharing app link
  • Fix scanning dialog
  • Added settings icons for options

v3.1.700

  • Cleaned internal code
  • Removed full screen option
  • Added Toolbar elevation
  • To access menu either tap on Toolbar or Hamburger icon
  • Fix back button not working on playing queue
  • Fix crashing on What's New screen
  • Fix lyrics dialog
  • Changed toggles to line icons
  • Fix crashing on artist list for number format error
  • Fix blacklist dialog crashing
  • Rearranged icons and main menu access
  • Fix some crashes when device is locked or background
  • Folder screen have main options access
  • Dialogs are now using Material Dialogs v3(BottomSheet)
  • Fix Shuffle icon for Artist, Album, Genre and Playlist details

v3.1.400

  • Removed sync lyrics for Android 5
  • Fix Seek-bar color in settings
  • Added keyboard to popup on search
  • Added keyboard to popup on search
  • Improved lock-screen behavior and UI
  • Improved text appearance
  • Fix bio text not showing in settings
  • Fix not showing slider(blur, filter song) amount in settings
  • Fix setting ringtone
  • Fix file sharing crash
  • Fix some crashes
  • Fix playlist icon on small devices
  • Fix empty lyrics text color
  • Fix album cover background purple color in color theme

v3.1.300

  • Fix rename playlist text color
  • Fix same album showing in details page
  • Fix lyrics text alignment on sync and lyrics reading improved
  • Improved home sections loading
  • Removed library options which are duplicated (it's available from profile menu)
  • Replaced collapsing Fab with Android Floating Extended Fab
  • Replaced home with for you
  • Fixed profile image not loading in about
  • Improved selecting user profile image
  • Added bio to enter custom message
  • Improved some UI screens

If you see entire app white or dark or black select same theme in settings to fix

FAQ's

*If you face any UI related issues you clear app data and cache, if its not working try to uninstall and install again.

\ No newline at end of file +

v3.4.500

  • Added peak theme
  • Added app rating dialog
  • Fix song name scrolling in now playing themes if it's long
  • Fix playing queue last item hiding FAB
  • Added desaturated color option for dark mode
  • Fix slow search loading
  • Fix last added slow loading
  • Fix home banner toolbar corner
  • Fix home crashing when switching between two tabs
  • Fix remaining time in playing queue
  • Fix font not applied for some components
  • Fix crashing on album details sorting
  • Fixed lot of internal bugs
  • Fix dialog expand
  • Fix list card color
  • Removed SlidingUpPanel to replace with BottomSheet
  • Removed color theme as per material design guidelines
  • Removed classic theme(We're bringing back)
  • Removed artist loading from Deezer because it's not official to use(will come back with official)
  • Replace line switch to Material Switch in settings
  • Performance improved
  • Updated internal libraries
  • Updated translation
  • Limiting the use of Theme engine for making use of system colors
  • Change home icon from the user icon
  • Corrected all toolbar with elevation when scrolling

v3.3.200

  • Fix fullscreen bottom tabs icons squash
  • Improved tiny theme colors
  • Android auto support
  • New notification icon
  • Favorite icon in mini player

v.3.3.100

  • Improved Now playing controls alignment
  • Lot internal changes to improve performance
  • Fix playlist adding crash
  • Fix color corrections
  • Fix file editing crash

v3.3.000

  • SD card support for deleting and editing

v3.2.240

  • Improved options dialog with selected color and title icon
  • Fix dialog color on dark theme

v3.2.220

  • Fix Notification SeekBar position (Need Android Q test)
  • Rolled back settings tint icons
  • Changed preference category title style according Android Q
  • Fix tabs options not working

v3.2.203

  • Carousel effect improved
  • Settings icons are now tint accent color
  • Settings title, back arrow and icons are now tint accent color
  • Equalizer is removed
  • Fix keyboard not popping on Search
  • Curated the main options
  • Folder toolbar outlined, folder icon background fix and separate line removed
  • Edit text input handles are colored

v3.2.135

  • Fix crashing on sharing song

v3.2.125

  • Fix crashing on selecting profile picture
  • Semi transparent color fix(s) on now playing themes

v3.2.120

  • Fix crashing on choosing a theme
  • Fix color theme selection without pro enabled
  • Fix icon tint some places

v3.2.105

  • Fix color notifications

v3.2.100

  • Fix crashing on Sleep timer
  • Toolbar elevation removed added stroke instead
  • Show empty indication for home

v3.2.000

  • Implemented Artist image loading all thanks to VinylMusicPlayer
  • Fixed buttons in Genre details
  • Fixed color buttons in Album and Artist details screen

v3.1.900

  • Added Play and Shuffle buttons on Songs list, Album Details, Artist Details, Playlist Details etc.
  • Home toolbar is semi transparent in Banner mode
  • Added new Buy Retro Music pro in settings
  • Improved dark color in Dark theme

v3.1.850

  • Toolbar will be clickable for Search

v3.1.800

  • Search bar CardView background
  • Improve volume zero
  • Now playing and Album theme picker rollback to dialog
  • Fix sharing app link
  • Fix scanning dialog
  • Added settings icons for options

v3.1.700

  • Cleaned internal code
  • Removed full screen option
  • Added Toolbar elevation
  • To access menu either tap on Toolbar or Hamburger icon
  • Fix back button not working on playing queue
  • Fix crashing on What's New screen
  • Fix lyrics dialog
  • Changed toggles to line icons
  • Fix crashing on artist list for number format error
  • Fix blacklist dialog crashing
  • Rearranged icons and main menu access
  • Fix some crashes when device is locked or background
  • Folder screen have main options access
  • Dialogs are now using Material Dialogs v3(BottomSheet)
  • Fix Shuffle icon for Artist, Album, Genre and Playlist details

v3.1.400

  • Removed sync lyrics for Android 5
  • Fix Seek-bar color in settings
  • Added keyboard to popup on search
  • Added keyboard to popup on search
  • Improved lock-screen behavior and UI
  • Improved text appearance
  • Fix bio text not showing in settings
  • Fix not showing slider(blur, filter song) amount in settings
  • Fix setting ringtone
  • Fix file sharing crash
  • Fix some crashes
  • Fix playlist icon on small devices
  • Fix empty lyrics text color
  • Fix album cover background purple color in color theme

v3.1.300

  • Fix rename playlist text color
  • Fix same album showing in details page
  • Fix lyrics text alignment on sync and lyrics reading improved
  • Improved home sections loading
  • Removed library options which are duplicated (it's available from profile menu)
  • Replaced collapsing Fab with Android Floating Extended Fab
  • Replaced home with for you
  • Fixed profile image not loading in about
  • Improved selecting user profile image
  • Added bio to enter custom message
  • Improved some UI screens

If you see entire app white or dark or black select same theme in settings to fix

FAQ's

*If you face any UI related issues you clear app data and cache, if its not working try to uninstall and install again.

\ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt index e11fded1..71878da6 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt @@ -2,7 +2,9 @@ package code.name.monkey.retromusic.activities.base import android.animation.ValueAnimator import android.annotation.SuppressLint +import android.graphics.Rect import android.os.Bundle +import android.view.MotionEvent import android.view.View import android.view.ViewGroup import android.view.ViewTreeObserver @@ -11,6 +13,8 @@ import androidx.fragment.app.Fragment import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.extensions.hide +import code.name.monkey.retromusic.extensions.show import code.name.monkey.retromusic.fragments.MiniPlayerFragment import code.name.monkey.retromusic.fragments.NowPlayingScreen import code.name.monkey.retromusic.fragments.NowPlayingScreen.* @@ -60,6 +64,8 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), AbsPlay override fun onSlide(bottomSheet: View, slideOffset: Float) { setMiniPlayerAlphaProgress(slideOffset) + dimBackground.show() + dimBackground.alpha = slideOffset } override fun onStateChanged(bottomSheet: View, newState: Int) { @@ -69,6 +75,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), AbsPlay } BottomSheetBehavior.STATE_COLLAPSED -> { onPanelCollapsed() + dimBackground.hide() } else -> { @@ -344,4 +351,17 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), AbsPlay } } } + + override fun dispatchTouchEvent(ev: MotionEvent?): Boolean { + if (ev?.action == MotionEvent.ACTION_DOWN) { + if (panelState == BottomSheetBehavior.STATE_EXPANDED) { + val outRect = Rect() + slidingPanel.getGlobalVisibleRect(outRect) + if (!outRect.contains(ev.rawX.toInt(), ev.rawY.toInt())) { + bottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED + } + } + } + return super.dispatchTouchEvent(ev) + } } \ No newline at end of file diff --git a/app/src/main/res/layout/sliding_music_panel_layout.xml b/app/src/main/res/layout/sliding_music_panel_layout.xml index 2f07a739..b4508072 100644 --- a/app/src/main/res/layout/sliding_music_panel_layout.xml +++ b/app/src/main/res/layout/sliding_music_panel_layout.xml @@ -9,8 +9,16 @@ + + + android:background="?colorOnSecondary" + android:clickable="true" + android:focusable="true" + android:visibility="gone" /> Date: Tue, 29 Oct 2019 23:19:31 +0530 Subject: [PATCH 33/57] Revamped Buy UI --- app/build.gradle | 2 +- .../settings/MainSettingsFragment.kt | 17 ++- .../main/res/layout/activity_pro_version.xml | 31 ++--- .../res/layout/fragment_main_settings.xml | 109 +++++++----------- app/src/main/res/menu/menu_drawer.xml | 50 -------- app/src/main/res/values-ar/strings.xml | 3 +- app/src/main/res/values-bg/strings.xml | 3 +- app/src/main/res/values-de-rDE/strings.xml | 3 +- app/src/main/res/values-es-rES/strings.xml | 3 +- app/src/main/res/values-es-rUS/strings.xml | 3 +- app/src/main/res/values-es/strings.xml | 3 +- app/src/main/res/values-eu-rES/strings.xml | 3 +- app/src/main/res/values-fr/strings.xml | 3 +- app/src/main/res/values-hr/strings.xml | 3 +- app/src/main/res/values-id/strings.xml | 3 +- app/src/main/res/values-it/strings.xml | 3 +- app/src/main/res/values-ja/strings.xml | 3 +- app/src/main/res/values-ko/strings.xml | 2 +- app/src/main/res/values-pl/strings.xml | 3 +- app/src/main/res/values-pt-rBR/strings.xml | 3 +- app/src/main/res/values-ro/strings.xml | 2 +- app/src/main/res/values-ru/strings.xml | 3 +- app/src/main/res/values-tr/strings.xml | 3 +- app/src/main/res/values-vi/strings.xml | 3 +- app/src/main/res/values-zh-rCN/strings.xml | 3 +- app/src/main/res/values-zh-rHK/strings.xml | 3 +- app/src/main/res/values/strings.xml | 4 +- 27 files changed, 82 insertions(+), 192 deletions(-) delete mode 100644 app/src/main/res/menu/menu_drawer.xml diff --git a/app/build.gradle b/app/build.gradle index 1d12433b..f60ad4e7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,7 +13,7 @@ android { vectorDrawables.useSupportLibrary = true applicationId "code.name.monkey.retromusic" - versionCode 384 + versionCode 385 versionName '3.4.500' multiDexEnabled true diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/MainSettingsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/MainSettingsFragment.kt index 186b6f5f..2ade2e5f 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/MainSettingsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/MainSettingsFragment.kt @@ -21,10 +21,7 @@ import android.view.View import android.view.ViewGroup import androidx.annotation.StringRes import androidx.fragment.app.Fragment -import code.name.monkey.appthemehelper.util.ATHUtil -import code.name.monkey.appthemehelper.util.ColorUtil -import code.name.monkey.appthemehelper.util.MaterialUtil -import code.name.monkey.appthemehelper.util.MaterialValueHelper +import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.retromusic.App import code.name.monkey.retromusic.R import code.name.monkey.retromusic.activities.SettingsActivity @@ -66,7 +63,7 @@ class MainSettingsFragment : Fragment(), View.OnClickListener { aboutSettings.setOnClickListener(this) buyProContainer.apply { - if (!App.isProVersion()) show() else hide() + if (App.isProVersion()) show() else hide() setOnClickListener { NavigationUtil.goToProVersion(requireContext()) } @@ -74,11 +71,11 @@ class MainSettingsFragment : Fragment(), View.OnClickListener { buyPremium.setOnClickListener { NavigationUtil.goToProVersion(requireContext()) } - MaterialUtil.setTint(buyPremium) - val primaryColor = MaterialValueHelper.getPrimaryTextColor(requireContext(), ColorUtil.isColorLight(ATHUtil.resolveColor(requireContext(), R.attr.colorPrimary))) - text.setTextColor(ColorUtil.withAlpha(primaryColor, 0.75f)) - text2.setTextColor(primaryColor) - text3.imageTintList = ColorStateList.valueOf(primaryColor) + ThemeStore.accentColor(requireContext()).let { + buyPremium.setTextColor(it) + diamondIcon.imageTintList = ColorStateList.valueOf(it) + } + } private fun inflateFragment(fragment: Fragment, @StringRes title: Int) { diff --git a/app/src/main/res/layout/activity_pro_version.xml b/app/src/main/res/layout/activity_pro_version.xml index 0506d903..00412f4c 100644 --- a/app/src/main/res/layout/activity_pro_version.xml +++ b/app/src/main/res/layout/activity_pro_version.xml @@ -39,7 +39,7 @@ android:id="@+id/toolbar" style="@style/Toolbar" app:layout_collapseMode="pin" - app:title="@string/buy_retro_music_pro" + app:title="@string/retro_music_pro" app:titleTextAppearance="@style/ToolbarTextAppearanceNormal" tools:ignore="UnusedAttribute" /> @@ -56,35 +56,18 @@ android:id="@+id/content" android:layout_width="match_parent" android:layout_height="wrap_content" - app:cardUseCompatPadding="true"> + android:layout_margin="4dp" + app:cardCornerRadius="8dp" + app:cardElevation="0dp" + app:cardUseCompatPadding="true" + app:strokeColor="?dividerColor" + app:strokeWidth="1.5dp"> - - - - - - - - + app:strokeWidth="1.5dp"> - - - - - - - - - + android:id="@+id/diamondIcon" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="8dp" + android:paddingEnd="16dp" + android:paddingBottom="12dp" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:srcCompat="@drawable/ic_diamond_stone_white_24dp" + app:tint="?colorOnSecondary" /> + + + + + app:layout_constraintTop_toBottomOf="@id/text" /> @@ -130,8 +109,8 @@ android:fadingEdge="horizontal" android:singleLine="true" android:text="@string/general_settings_title" - android:textColor="?colorOnPrimary" android:textAppearance="@style/TextViewSubtitle1" + android:textColor="?colorOnPrimary" android:textStyle="bold" /> diff --git a/app/src/main/res/menu/menu_drawer.xml b/app/src/main/res/menu/menu_drawer.xml deleted file mode 100644 index a80b8f75..00000000 --- a/app/src/main/res/menu/menu_drawer.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 2b4fb048..f87d9864 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -80,7 +80,7 @@ https://play.google.com/store/apps/details?id=%s
ضع في اعتبارك أن تمكين هذه الميزة قد يؤثر على عمر البطارية مستوى الضبابية "مستوى ضبابية الثيم , كلما قل كلما كان افضل " - Retro Music Pro + Retro Music Pro إلغاء بطاقة بطاقة ملونة @@ -401,7 +401,6 @@ https://play.google.com/store/apps/details?id=%s
اضغط او أسحب انقر للفتح أو التمرير بدون الإنتقال الشفاف لشاشة التشغيل الآن مسح التسلسل - شراء الإصدار الكامل Retro Music مشاركة التطبيق تقرير الأخطاء ارسال بأستخدام حساب چيتهب diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 18e9f087..315352e6 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -77,7 +77,7 @@ Имайте предвид, че тази настройка може да повлияе на батерията. Количество на замъгленост Количество на замъгленост при темите, колкото по-ниско, толкова по-бързо - Retro Music Pro + Retro Music Pro Отмени Карта Оцветена карта @@ -396,7 +396,6 @@ Натисни или плъзни Натисни за или плъзни за без прозрачна навигация на екрана с песен Изчисти опашката - Купи Retro Music Pro Сподели приложението Докладвай нередности Изпрати чрез GitHub акаунт diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index 69c40a24..e2a02128 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -79,7 +79,7 @@ Beachte, dass diese Funktion sich auf die Akkulaufzeit auswirkt. Unschärfe Geringere Unschärfe benötigt weniger Rechenleistung. - Retro Music Pro + Retro Music Pro Abbrechen Karte Karte (Farbe) @@ -399,7 +399,6 @@ Wischgesten Tippen oder wischen, um den Abspielbildschirm zu öffnen. Ist Wischen aktiv, kann die Navigationsleiste nicht transparent sein. Leeren - Retro Music Pro kaufen App teilen Einen Fehler melden Via GitHub senden diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index b409e5ed..e8daf0dd 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -79,7 +79,7 @@ Tenga en cuenta que habilitar esta función puede afectar a la vida útil de la batería. Cantidad de desenfoque Cantidad de desenfoque aplicado para los temas con desenfoque, más bajo es más rápido - Retro Music Pro + Retro Music Pro Cancelar Tarjeta Tarjeta coloreada @@ -399,7 +399,6 @@ Hacer clic o deslizar Toca para abrir con o desliza sin la barra de navegación transparente de la pantalla de reproducción Limpiar cola de reproducción - Compra Retro Music Pro Comparte la app Reporta problemas Envía usando la cuenta de GitHub diff --git a/app/src/main/res/values-es-rUS/strings.xml b/app/src/main/res/values-es-rUS/strings.xml index fbf78047..9599897b 100644 --- a/app/src/main/res/values-es-rUS/strings.xml +++ b/app/src/main/res/values-es-rUS/strings.xml @@ -78,7 +78,7 @@ Tenga en cuenta que habilitar esta función puede afectar la duración de la batería Cantidad de desenfoque Cantidad de desenfoque aplicado a los temas de desenfoque, más bajo es más rápido - Retro Music Pro + Retro Music Pro Cancelar Tarjeta Tarjeta coloreada @@ -395,7 +395,6 @@ Hacer Clic o Deslizar Click para abrir con o sin navegación transparente de la pantalla de reproducción actual Limpiar la cola - Comprar Retro Music Pro Compartir app Reportar un error Enviar usando la cuenta de Github diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index c582a2c9..222f4b50 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -78,7 +78,7 @@ Tenga en cuenta que habilitar esta función puede afectar la duración de la batería Cantidad de desenfoque Cantidad de desenfoque aplicado a los temas desenfocados, más bajo es más rápido - Retro Music Pro + Retro Music Pro Cancelar Tarjeta Tarjeta Coloreada @@ -395,7 +395,6 @@ Toca o desliza Toca para abrir con o desliza sin la barra de navegación transparente de la pantalla de reproducción Limpiar cola de reproducción - Compra Retro Music Pro Comparte la app Reporta problemas Envía usando la cuenta de GitHub diff --git a/app/src/main/res/values-eu-rES/strings.xml b/app/src/main/res/values-eu-rES/strings.xml index 5ec98fac..c87a6987 100644 --- a/app/src/main/res/values-eu-rES/strings.xml +++ b/app/src/main/res/values-eu-rES/strings.xml @@ -77,7 +77,7 @@ Gogoan izan eginbide hau aktibatzeak eragina izan dezakeela bateriaren iraupenean Lausotze maila Gai lausoetan ezarritako lausotze maila, baxuagoa azkarragoa da - Retro Music Pro + Retro Music Pro Ezeztatu Txartela Txartel koloreztatua @@ -394,7 +394,6 @@ Klikatu edo irristatu Orain erreproduzitzen pantailaren nabigazio gardena irekitzeko klikatu, irristatu gardentasunik gabeko nabigaziorako Ilara garbitu - Retro Music Pro erosi Partekatu aplikazioa Eman akatsen berri GitHub kontua erabiliz bidali diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 03119399..3da4d2ef 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -79,7 +79,7 @@ Veuillez garder en tête que l\'activation de cette fonctionnalité peut réduire la durée de vie de la batterie Quantité de flou Quantité de flou appliqué aux thèmes flous, bas est plus rapide - Retro Music Pro + Retro Music Pro Annuler Carte Cartes colorées @@ -400,7 +400,6 @@ Cliquez ou balayez Cliquez pour ouvrir avec ou glisser à sans navigation transparente de l\'écran de lecture Vider la file d\'attente - Acheter Retro Music Pro Partager l\'app Signaler un bug Envoyer en utilisant un compte GitHub diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index b9384c73..e372c5fa 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -77,7 +77,7 @@ Imajte na umu da omogućavanje ove značajke može utjecati na trajanje baterije Količina zamagljenja Količina zamagljenja koja se primjenjuje na teme, manje je brže - Retro Music Pro + Retro Music Pro Odustani Kartica Obojena kartica @@ -396,7 +396,6 @@ Klik ili klizanje Dodirnite za otvaranje ili klizanje bez prozirne navigacije zaslona za reprodukciju Očisti red čekanja - Kupi Retro Music Pro Podijeli aplikaciju Prijavi pogrešku Pošalji putem GitHub računa diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index e60c6160..6e32907e 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -80,7 +80,7 @@ https://play.google.com/store/apps/details?id=%s Membiarkan fitur ini aktif mungkin akan berpengaruh pada daya baterai Tingkat blur Tingkat blur diaplikasikan pada tema blur, lebih rendah membuat lebih cepat - Retro Music Pro + Retro Music Pro Batalkan Kartu Kartu Berwarna @@ -402,7 +402,6 @@ tetap bermasalah, \"Hapus data Aplikasi\" Klik atau geser Klik atau geser untuk membuka layar sedang diputar Hapus antrian - Beli Retro Music Pro Bagikan Apl Laporkan bug Kirim menggunakan akun GitHub diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index e1389835..e5640f53 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -79,7 +79,7 @@ Ricorda che abilitando questa opzione la batteria potrebbe risentirne Quantità di sfocatura Quantità di sfocatura applicata per i temi con sfocatura, minore è più veloce - Retro Music Pro + Retro Music Pro Annulla Card Card colorata @@ -399,7 +399,6 @@ Premi o scorri Premi per aprire o scorri nella schermata di riproduzione Cancella coda - Acquista Retro Music Pro Condividi app Segnala bug Invia con l\'account GitHub diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index c6caa13b..5f6f83eb 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -78,7 +78,7 @@ この機能をオンにすると、バッテリー寿命に影響する可能性があります ぼかしの強さ ブラーを使用するテーマを使用した際のブラーの強さを設定します。低いほど処理が早くなります - Retro Music Pro + Retro Music Pro キャンセル カード 色付きのカード @@ -397,7 +397,6 @@ クリックもしくはスライド 現在再生中の画面に移動せずに、クリックまたはスライドして開く キューを削除 - Retro Music Pro を購入 アプリを共有する 不具合を報告する GitHubアカウントを使って送信 diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 2790524b..ade4f9cb 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -66,7 +66,7 @@ 블랙리스트 흐림 효과 블러 카드 - RetroMusic Pro 구매 + RetroMusic Pro 구매 현재 타이머 취소 카드 변경 사항 diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index b46f75af..83ccf273 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -79,7 +79,7 @@ Ta opcja może mieć wpływ na zużycie baterii Wartość rozmycia Ilość rozmycia dla motywów, mniejsza ilość jest szybsza - Retro Music Pro + Retro Music Pro Anuluj Karta Kolorowa Karta @@ -398,7 +398,6 @@ Kliknij albo przesuń Kliknij aby otworzyć z lub przesunąć do przezroczystej nawigacji ekranu teraz odtwarzane Wyczyść kolejkę - Kup Retro Music Pro Udostępnij aplikację Zgłoś błąd Wyślij przez konto GitHub diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 4d9fdc48..276666b5 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -80,7 +80,7 @@ Tenha em mente que ativar este recurso pode afetar a duração da bateria Quantidade de desfoque Quantidade de desfoque aplicada a temas de desfoque, menor é mais rápido - Retro Music Pro + Retro Music Pro Cancelar Cartão Cartão colorido @@ -400,7 +400,6 @@ Clique ou deslize Clique para abrir ou deslizar sem a navegação transparente da tela que está sendo reproduzida agora Limpar fila - Comprar Retro Music Pro Compartilhar o aplicativo Reportar erro Enviar usando uma conta do GitHub diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 7202f619..e2147c95 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -66,7 +66,7 @@ Lista neagră Blur Blur Card - Cumpărați RetroMusic Pro + Cumpărați RetroMusic Pro Anulează cronometrul curent Card Modificări diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 794d16cb..5c6d3e8a 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -79,7 +79,7 @@ Имейте в виду, что включение этой функции может повлиять на заряд батареи Сила размытия Сила размытия в соответствующих темах; чем ниже, тем меньше нагрузка на устройство - Retro Music Pro + Retro Music Pro Отменить Карточка Цветная карточка @@ -399,7 +399,6 @@ Нажмите или Проведите Нажмите, чтобы открыть экран воспроизведения с прозрачной навигации или проведите чтобы открыть без прозрачной навигации Очистить очередь - Купить Retro Music Pro Поделиться приложением Сообщить об ошибке Отправить с помощью учетной записи GitHub diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 48bce9cf..3c58f398 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -79,7 +79,7 @@ Bu özelliği etkinleştirmenin pil ömrünü etkileyebileceğini unutmayın. Bulanıklık tutarı Bulanıklık içeren arayüzler için bulanıklık tutarı, ne kadar azsa o kadar hızlı. - Retro Müzik Premium + Retro Müzik Premium İptal et Kart Renkli Kart @@ -400,7 +400,6 @@ Tıkla veya Kaydır Çalmakta olan ekrana şeffaf gezinme olmadan açmak veya kaydırmak için tıklayın Kuyruğu temizle - Retro Müzik Premium\'u satın al Uygulamayı paylaş Hata bildir GitHub hesabını kullanarak gönder diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index daf1526b..4f6c5cc1 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -78,7 +78,7 @@ Lưu ý rằng việc bật tính năng này có thể ảnh hưởng đến tuổi thọ pin Độ mờ Độ mờ được áp dụng cho các chủ đề mờ, thấp hơn là nhanh hơn - Retro Music Pro + Retro Music Pro Hủy Thẻ Thẻ màu @@ -396,7 +396,6 @@ tiếp tục xảy ra hãy \"Xóa dữ liệu ứng dụng\" Nhấp hoặc Trượt Nhấp hoặc trượt để mở mà không cần điều hướng của màn hình đang phát Xóa hàng đợi - Mua Retro Music Pro Chia sẽ ứng dụng Báo cáo lỗi "Gửi bằng tài khoản GitHub " diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 5966f481..cfc00efd 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -79,7 +79,7 @@ 请注意,启用此功能可能会降低电池续航时间 模糊值 应用于模糊主题,数值越低加载越快 - Retro Music高级版 + Retro Music高级版 取消 卡片 彩色卡片 @@ -399,7 +399,6 @@ 单击或划动 点击打开或者滑动到非正在播放界面的透明导航栏 清空队列 - 购买高级版 分享应用 反馈 使用 GitHub 帐户发送 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 15101dc7..3e5faa82 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -79,7 +79,7 @@ 請記住當您啟用此選項後或會影響電池壽命 模糊值 給模糊模式主題的值,每值愈低就愈快 - Retro Music Pro + Retro Music Pro 取消 卡片 彩色卡片 @@ -399,7 +399,6 @@ 點擊或滑動 點擊或滑動開啟無透明現在播放導航欄 清除列表 - 購買Retro Music Pro 分享程式 回報錯誤 使用Github帳戶傳送 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 598c8aa3..f302c7c2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -97,7 +97,7 @@ Blur amount Amount of blur applied for blur themes, lower is faster - Retro Music Pro + Retro Music Pro Cancel @@ -552,7 +552,6 @@ Click or Slide Click to open with or slide to without transparent navigation of now playing screen Clear queue - Buy Retro Music Pro Share app Report bug @@ -664,4 +663,5 @@ Most played artists Most played albums You\'re most favorites songs + Buy now From a4c3e46e85d9c3ec56de10c235738c24a70b1cb1 Mon Sep 17 00:00:00 2001 From: h4h13 Date: Tue, 29 Oct 2019 23:29:53 +0530 Subject: [PATCH 34/57] Revamped Buy UI --- app/src/main/res/drawable/promotional.webp | Bin 28738 -> 0 bytes .../res/layout/fragment_main_settings.xml | 20 ++++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) delete mode 100644 app/src/main/res/drawable/promotional.webp diff --git a/app/src/main/res/drawable/promotional.webp b/app/src/main/res/drawable/promotional.webp deleted file mode 100644 index 321f68d96e709465e400055c3b92fa997d57c6e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28738 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 x + android:orientation="vertical" + android:padding="4dp"> + + + app:layout_constraintTop_toBottomOf="@id/divider" /> From 11e988fa80047bbc78bda7f58fe8690b24ba25aa Mon Sep 17 00:00:00 2001 From: h4h13 Date: Wed, 30 Oct 2019 20:35:19 +0530 Subject: [PATCH 35/57] Fix peak theme expand color --- .../base/AbsSlidingMusicPanelActivity.kt | 4 + .../settings/MainSettingsFragment.kt | 2 +- .../layout_notification_expanded.xml | 240 +++++++++--------- .../layout/layout_notification_collapsed.xml | 6 +- .../layout/layout_notification_expanded.xml | 30 ++- .../res/layout/sliding_music_panel_layout.xml | 1 - 6 files changed, 152 insertions(+), 131 deletions(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt index 71878da6..653b2f2d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt @@ -2,6 +2,7 @@ package code.name.monkey.retromusic.activities.base import android.animation.ValueAnimator import android.annotation.SuppressLint +import android.graphics.Color import android.graphics.Rect import android.os.Bundle import android.view.MotionEvent @@ -95,6 +96,9 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), AbsPlay updateTabs() bottomSheetBehavior = BottomSheetBehavior.from(slidingPanel) + + val themeColor = ATHUtil.resolveColor(this, R.attr.colorPrimary, Color.GRAY) + dimBackground.setBackgroundColor(ColorUtil.withAlpha(themeColor, 0.5f)) } override fun onResume() { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/MainSettingsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/MainSettingsFragment.kt index 2ade2e5f..bc93dfea 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/MainSettingsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/MainSettingsFragment.kt @@ -63,7 +63,7 @@ class MainSettingsFragment : Fragment(), View.OnClickListener { aboutSettings.setOnClickListener(this) buyProContainer.apply { - if (App.isProVersion()) show() else hide() + if (!App.isProVersion()) show() else hide() setOnClickListener { NavigationUtil.goToProVersion(requireContext()) } diff --git a/app/src/main/res/layout-v24/layout_notification_expanded.xml b/app/src/main/res/layout-v24/layout_notification_expanded.xml index 50615fab..13b84b97 100644 --- a/app/src/main/res/layout-v24/layout_notification_expanded.xml +++ b/app/src/main/res/layout-v24/layout_notification_expanded.xml @@ -5,131 +5,139 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> - + - + - + - - - + + android:layout_alignParentStart="true" + android:orientation="vertical" + android:paddingStart="0dp" + android:paddingTop="8dp" + android:paddingEnd="144dp"> - + - + - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/layout_notification_collapsed.xml b/app/src/main/res/layout/layout_notification_collapsed.xml index 55c36340..9e66d97f 100644 --- a/app/src/main/res/layout/layout_notification_collapsed.xml +++ b/app/src/main/res/layout/layout_notification_collapsed.xml @@ -123,7 +123,7 @@ android:layout_height="38dp" android:scaleType="centerInside" android:src="@drawable/ic_skip_previous_round_white_32dp" - android:tint="?colorOnPrimary" /> + tools:tint="?colorOnPrimary" /> + tools:tint="?colorOnPrimary" /> + tools:tint="?colorOnPrimary" /> @@ -67,8 +67,8 @@ + android:orientation="horizontal" + android:paddingStart="8dp" + android:paddingEnd="0dp"> + android:scaleType="centerInside" + tools:src="@drawable/ic_skip_previous_round_white_32dp" + tools:tint="?colorOnPrimary" /> + android:scaleType="centerInside" + tools:src="@drawable/ic_pause_white_48dp" + tools:tint="?colorOnPrimary" /> + android:scaleType="centerInside" + tools:src="@drawable/ic_skip_next_round_white_32dp" + tools:tint="?colorOnPrimary" /> + android:scaleType="centerInside" + tools:src="@drawable/ic_close_white_24dp" + tools:tint="?colorOnPrimary" /> \ No newline at end of file diff --git a/app/src/main/res/layout/sliding_music_panel_layout.xml b/app/src/main/res/layout/sliding_music_panel_layout.xml index b4508072..386918ee 100644 --- a/app/src/main/res/layout/sliding_music_panel_layout.xml +++ b/app/src/main/res/layout/sliding_music_panel_layout.xml @@ -15,7 +15,6 @@ android:id="@+id/dimBackground" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="?colorOnSecondary" android:clickable="true" android:focusable="true" android:visibility="gone" /> From 7410515d1ee223464354295a206dff82110c86a6 Mon Sep 17 00:00:00 2001 From: h4h13 Date: Wed, 30 Oct 2019 20:39:55 +0530 Subject: [PATCH 36/57] Fix notification layout --- .../base/AbsSlidingMusicPanelActivity.kt | 4 - .../layout_notification_collapsed.xml | 159 ------------------ .../layout_notification_expanded.xml | 143 ---------------- .../layout/layout_notification_collapsed.xml | 14 +- 4 files changed, 8 insertions(+), 312 deletions(-) delete mode 100644 app/src/main/res/layout-v24/layout_notification_collapsed.xml delete mode 100644 app/src/main/res/layout-v24/layout_notification_expanded.xml diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt index 653b2f2d..ac82c657 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt @@ -128,10 +128,6 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), AbsPlay return slidingMusicPanelLayout } - fun setAntiDragView(antiDragView: View) { - //slidingLayout.setAntiDragView(antiDragView) - } - private fun collapsePanel() { bottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED } diff --git a/app/src/main/res/layout-v24/layout_notification_collapsed.xml b/app/src/main/res/layout-v24/layout_notification_collapsed.xml deleted file mode 100644 index cc70cd7d..00000000 --- a/app/src/main/res/layout-v24/layout_notification_collapsed.xml +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout-v24/layout_notification_expanded.xml b/app/src/main/res/layout-v24/layout_notification_expanded.xml deleted file mode 100644 index 13b84b97..00000000 --- a/app/src/main/res/layout-v24/layout_notification_expanded.xml +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/layout_notification_collapsed.xml b/app/src/main/res/layout/layout_notification_collapsed.xml index 9e66d97f..cd3576df 100644 --- a/app/src/main/res/layout/layout_notification_collapsed.xml +++ b/app/src/main/res/layout/layout_notification_collapsed.xml @@ -4,6 +4,7 @@ android:id="@+id/background" android:layout_width="match_parent" android:layout_height="wrap_content" + tools:background="@color/md_red_500" tools:ignore="ContentDescription"> @@ -64,8 +65,8 @@ Date: Thu, 31 Oct 2019 22:36:13 +0530 Subject: [PATCH 37/57] Fix layout issue in notificaiton --- app/build.gradle | 2 +- .../name/monkey/retromusic/AppExecutors.kt | 27 ------------------- .../notification/PlayingNotificationOreo.kt | 4 --- .../layout/layout_notification_collapsed.xml | 14 +++------- .../layout/layout_notification_expanded.xml | 9 +------ build.gradle | 2 +- 6 files changed, 6 insertions(+), 52 deletions(-) delete mode 100644 app/src/main/java/code/name/monkey/retromusic/AppExecutors.kt diff --git a/app/build.gradle b/app/build.gradle index f60ad4e7..270ffddf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,7 +13,7 @@ android { vectorDrawables.useSupportLibrary = true applicationId "code.name.monkey.retromusic" - versionCode 385 + versionCode 387 versionName '3.4.500' multiDexEnabled true diff --git a/app/src/main/java/code/name/monkey/retromusic/AppExecutors.kt b/app/src/main/java/code/name/monkey/retromusic/AppExecutors.kt deleted file mode 100644 index 7d8c5aaf..00000000 --- a/app/src/main/java/code/name/monkey/retromusic/AppExecutors.kt +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2019 Hemanth Savarala. - * - * Licensed under the GNU General Public License v3 - * - * This 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 software 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. - */ - -package code.name.monkey.retromusic - -import kotlinx.coroutines.Dispatchers -import kotlin.coroutines.CoroutineContext - -/** - * Created by hemanths on 2019-10-23. - */ - -class AppExecutors constructor( - val ioContext: CoroutineContext = Dispatchers.IO, - val uiContext: CoroutineContext = Dispatchers.Main -) \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationOreo.kt b/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationOreo.kt index 8c5746ce..645e5e30 100644 --- a/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationOreo.kt +++ b/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationOreo.kt @@ -139,12 +139,8 @@ class PlayingNotificationOreo : PlayingNotification() { } private fun setBackgroundColor(color: Int) { - notificationLayout.setInt(R.id.image, "setBackgroundColor", color) notificationLayoutBig.setInt(R.id.image, "setBackgroundColor", color) - - notificationLayout.setInt(R.id.foregroundImage, "setColorFilter", color) - notificationLayoutBig.setInt(R.id.foregroundImage, "setColorFilter", color) } private fun setNotificationContent(dark: Boolean) { diff --git a/app/src/main/res/layout/layout_notification_collapsed.xml b/app/src/main/res/layout/layout_notification_collapsed.xml index cd3576df..e8d97665 100644 --- a/app/src/main/res/layout/layout_notification_collapsed.xml +++ b/app/src/main/res/layout/layout_notification_collapsed.xml @@ -23,14 +23,6 @@ android:scaleType="centerCrop" tools:src="@tools:sample/avatars" /> - - + android:paddingEnd="12dp" + android:paddingBottom="4dp"> - - Date: Fri, 1 Nov 2019 22:40:37 +0530 Subject: [PATCH 38/57] Fix notification color --- app/src/main/assets/retro-changelog.html | 2 +- .../service/notification/PlayingNotificationOreo.kt | 5 +++-- .../main/res/layout/layout_notification_collapsed.xml | 10 +++++----- app/src/main/res/values-es-rUS/strings.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/app/src/main/assets/retro-changelog.html b/app/src/main/assets/retro-changelog.html index 263b37a9..e2de4d2c 100644 --- a/app/src/main/assets/retro-changelog.html +++ b/app/src/main/assets/retro-changelog.html @@ -1 +1 @@ -

v3.4.500

  • Added peak theme
  • Added app rating dialog
  • Fix song name scrolling in now playing themes if it's long
  • Fix playing queue last item hiding FAB
  • Added desaturated color option for dark mode
  • Fix slow search loading
  • Fix last added slow loading
  • Fix home banner toolbar corner
  • Fix home crashing when switching between two tabs
  • Fix remaining time in playing queue
  • Fix font not applied for some components
  • Fix crashing on album details sorting
  • Fixed lot of internal bugs
  • Fix dialog expand
  • Fix list card color
  • Removed SlidingUpPanel to replace with BottomSheet
  • Removed color theme as per material design guidelines
  • Removed classic theme(We're bringing back)
  • Removed artist loading from Deezer because it's not official to use(will come back with official)
  • Replace line switch to Material Switch in settings
  • Performance improved
  • Updated internal libraries
  • Updated translation
  • Limiting the use of Theme engine for making use of system colors
  • Change home icon from the user icon
  • Corrected all toolbar with elevation when scrolling

v3.3.200

  • Fix fullscreen bottom tabs icons squash
  • Improved tiny theme colors
  • Android auto support
  • New notification icon
  • Favorite icon in mini player

v.3.3.100

  • Improved Now playing controls alignment
  • Lot internal changes to improve performance
  • Fix playlist adding crash
  • Fix color corrections
  • Fix file editing crash

v3.3.000

  • SD card support for deleting and editing

v3.2.240

  • Improved options dialog with selected color and title icon
  • Fix dialog color on dark theme

v3.2.220

  • Fix Notification SeekBar position (Need Android Q test)
  • Rolled back settings tint icons
  • Changed preference category title style according Android Q
  • Fix tabs options not working

v3.2.203

  • Carousel effect improved
  • Settings icons are now tint accent color
  • Settings title, back arrow and icons are now tint accent color
  • Equalizer is removed
  • Fix keyboard not popping on Search
  • Curated the main options
  • Folder toolbar outlined, folder icon background fix and separate line removed
  • Edit text input handles are colored

v3.2.135

  • Fix crashing on sharing song

v3.2.125

  • Fix crashing on selecting profile picture
  • Semi transparent color fix(s) on now playing themes

v3.2.120

  • Fix crashing on choosing a theme
  • Fix color theme selection without pro enabled
  • Fix icon tint some places

v3.2.105

  • Fix color notifications

v3.2.100

  • Fix crashing on Sleep timer
  • Toolbar elevation removed added stroke instead
  • Show empty indication for home

v3.2.000

  • Implemented Artist image loading all thanks to VinylMusicPlayer
  • Fixed buttons in Genre details
  • Fixed color buttons in Album and Artist details screen

v3.1.900

  • Added Play and Shuffle buttons on Songs list, Album Details, Artist Details, Playlist Details etc.
  • Home toolbar is semi transparent in Banner mode
  • Added new Buy Retro Music pro in settings
  • Improved dark color in Dark theme

v3.1.850

  • Toolbar will be clickable for Search

v3.1.800

  • Search bar CardView background
  • Improve volume zero
  • Now playing and Album theme picker rollback to dialog
  • Fix sharing app link
  • Fix scanning dialog
  • Added settings icons for options

v3.1.700

  • Cleaned internal code
  • Removed full screen option
  • Added Toolbar elevation
  • To access menu either tap on Toolbar or Hamburger icon
  • Fix back button not working on playing queue
  • Fix crashing on What's New screen
  • Fix lyrics dialog
  • Changed toggles to line icons
  • Fix crashing on artist list for number format error
  • Fix blacklist dialog crashing
  • Rearranged icons and main menu access
  • Fix some crashes when device is locked or background
  • Folder screen have main options access
  • Dialogs are now using Material Dialogs v3(BottomSheet)
  • Fix Shuffle icon for Artist, Album, Genre and Playlist details

v3.1.400

  • Removed sync lyrics for Android 5
  • Fix Seek-bar color in settings
  • Added keyboard to popup on search
  • Added keyboard to popup on search
  • Improved lock-screen behavior and UI
  • Improved text appearance
  • Fix bio text not showing in settings
  • Fix not showing slider(blur, filter song) amount in settings
  • Fix setting ringtone
  • Fix file sharing crash
  • Fix some crashes
  • Fix playlist icon on small devices
  • Fix empty lyrics text color
  • Fix album cover background purple color in color theme

v3.1.300

  • Fix rename playlist text color
  • Fix same album showing in details page
  • Fix lyrics text alignment on sync and lyrics reading improved
  • Improved home sections loading
  • Removed library options which are duplicated (it's available from profile menu)
  • Replaced collapsing Fab with Android Floating Extended Fab
  • Replaced home with for you
  • Fixed profile image not loading in about
  • Improved selecting user profile image
  • Added bio to enter custom message
  • Improved some UI screens

If you see entire app white or dark or black select same theme in settings to fix

FAQ's

*If you face any UI related issues you clear app data and cache, if its not working try to uninstall and install again.

\ No newline at end of file +

v3.4.500

  • Added peak theme
  • Added app rating dialog
  • Fix song name scrolling in now playing themes if it's long
  • Fix playing queue last item hiding FAB
  • Added desaturated color option for dark mode
  • Fix slow search loading
  • Fix last added slow loading
  • Fix home banner toolbar corner
  • Fix home crashing when switching between two tabs
  • Fix remaining time in playing queue
  • Fix font not applied for some components
  • Fix crashing on album details sorting
  • Fixed lot of internal bugs
  • Fix dialog expand
  • Fix list card color
  • Removed SlidingUpPanel to replace with BottomSheet
  • Removed color theme as per material design guidelines
  • Removed classic theme(We're bringing back)
  • Replace line switch to Material Switch in settings
  • Performance improved
  • Updated internal libraries
  • Updated translation
  • Limiting the use of Theme engine for making use of system colors
  • Change home icon from the user icon
  • Corrected all toolbar with elevation when scrolling

v3.3.200

  • Fix fullscreen bottom tabs icons squash
  • Improved tiny theme colors
  • Android auto support
  • New notification icon
  • Favorite icon in mini player

v.3.3.100

  • Improved Now playing controls alignment
  • Lot internal changes to improve performance
  • Fix playlist adding crash
  • Fix color corrections
  • Fix file editing crash

v3.3.000

  • SD card support for deleting and editing

v3.2.240

  • Improved options dialog with selected color and title icon
  • Fix dialog color on dark theme

v3.2.220

  • Fix Notification SeekBar position (Need Android Q test)
  • Rolled back settings tint icons
  • Changed preference category title style according Android Q
  • Fix tabs options not working

v3.2.203

  • Carousel effect improved
  • Settings icons are now tint accent color
  • Settings title, back arrow and icons are now tint accent color
  • Equalizer is removed
  • Fix keyboard not popping on Search
  • Curated the main options
  • Folder toolbar outlined, folder icon background fix and separate line removed
  • Edit text input handles are colored

v3.2.135

  • Fix crashing on sharing song

v3.2.125

  • Fix crashing on selecting profile picture
  • Semi transparent color fix(s) on now playing themes

v3.2.120

  • Fix crashing on choosing a theme
  • Fix color theme selection without pro enabled
  • Fix icon tint some places

v3.2.105

  • Fix color notifications

v3.2.100

  • Fix crashing on Sleep timer
  • Toolbar elevation removed added stroke instead
  • Show empty indication for home

v3.2.000

  • Implemented Artist image loading all thanks to VinylMusicPlayer
  • Fixed buttons in Genre details
  • Fixed color buttons in Album and Artist details screen

v3.1.900

  • Added Play and Shuffle buttons on Songs list, Album Details, Artist Details, Playlist Details etc.
  • Home toolbar is semi transparent in Banner mode
  • Added new Buy Retro Music pro in settings
  • Improved dark color in Dark theme

v3.1.850

  • Toolbar will be clickable for Search

v3.1.800

  • Search bar CardView background
  • Improve volume zero
  • Now playing and Album theme picker rollback to dialog
  • Fix sharing app link
  • Fix scanning dialog
  • Added settings icons for options

v3.1.700

  • Cleaned internal code
  • Removed full screen option
  • Added Toolbar elevation
  • To access menu either tap on Toolbar or Hamburger icon
  • Fix back button not working on playing queue
  • Fix crashing on What's New screen
  • Fix lyrics dialog
  • Changed toggles to line icons
  • Fix crashing on artist list for number format error
  • Fix blacklist dialog crashing
  • Rearranged icons and main menu access
  • Fix some crashes when device is locked or background
  • Folder screen have main options access
  • Dialogs are now using Material Dialogs v3(BottomSheet)
  • Fix Shuffle icon for Artist, Album, Genre and Playlist details

v3.1.400

  • Removed sync lyrics for Android 5
  • Fix Seek-bar color in settings
  • Added keyboard to popup on search
  • Added keyboard to popup on search
  • Improved lock-screen behavior and UI
  • Improved text appearance
  • Fix bio text not showing in settings
  • Fix not showing slider(blur, filter song) amount in settings
  • Fix setting ringtone
  • Fix file sharing crash
  • Fix some crashes
  • Fix playlist icon on small devices
  • Fix empty lyrics text color
  • Fix album cover background purple color in color theme

v3.1.300

  • Fix rename playlist text color
  • Fix same album showing in details page
  • Fix lyrics text alignment on sync and lyrics reading improved
  • Improved home sections loading
  • Removed library options which are duplicated (it's available from profile menu)
  • Replaced collapsing Fab with Android Floating Extended Fab
  • Replaced home with for you
  • Fixed profile image not loading in about
  • Improved selecting user profile image
  • Added bio to enter custom message
  • Improved some UI screens

If you see entire app white or dark or black select same theme in settings to fix

FAQ's

*If you face any UI related issues you clear app data and cache, if its not working try to uninstall and install again.

\ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationOreo.kt b/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationOreo.kt index 645e5e30..1945ee0e 100644 --- a/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationOreo.kt +++ b/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationOreo.kt @@ -23,6 +23,7 @@ import android.graphics.Color import android.graphics.drawable.Drawable import android.widget.RemoteViews import androidx.core.app.NotificationCompat +import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.retromusic.R @@ -113,7 +114,7 @@ class PlayingNotificationOreo : PlayingNotification() { override fun onLoadFailed(e: Exception?, errorDrawable: Drawable?) { super.onLoadFailed(e, errorDrawable) - update(null, Color.TRANSPARENT) + update(null, ATHUtil.resolveColor(service, R.attr.colorPrimary, Color.WHITE)) } private fun update(bitmap: Bitmap?, bgColor: Int) { @@ -127,7 +128,7 @@ class PlayingNotificationOreo : PlayingNotification() { } if (!PreferenceUtil.getInstance(service).coloredNotification()) { - bgColorFinal = Color.WHITE + bgColorFinal = ATHUtil.resolveColor(service, R.attr.colorPrimary, Color.WHITE) } setBackgroundColor(bgColorFinal) setNotificationContent(ColorUtil.isColorLight(bgColorFinal)) diff --git a/app/src/main/res/layout/layout_notification_collapsed.xml b/app/src/main/res/layout/layout_notification_collapsed.xml index e8d97665..87a7ad54 100644 --- a/app/src/main/res/layout/layout_notification_collapsed.xml +++ b/app/src/main/res/layout/layout_notification_collapsed.xml @@ -38,8 +38,8 @@ @@ -57,8 +57,8 @@ + android:paddingBottom="8dp"> Acerca de Retro Music Player Añadir a favoritos Añadir a la cola de reproducción - Spanish + Añadir a la lista de reproducción Borrar cola de reproducción Limpiar lista Eliminar diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f302c7c2..4b0c2569 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5,7 +5,7 @@ Accent color The theme accent color, defaults to teal - About + action_add_to_playlist Add to favorites Add to playing queue Add to playlist From 674c5de706d9c33bbc8fc1d93fa1947689f70ce5 Mon Sep 17 00:00:00 2001 From: h4h13 Date: Fri, 1 Nov 2019 23:11:22 +0530 Subject: [PATCH 39/57] Added auto hide control buttons --- .../monkey/retromusic/extensions/ListEx.kt | 32 ++++++++++ .../retromusic/extensions/ViewExtensions.kt | 4 ++ .../fragments/MiniPlayerFragment.kt | 59 ++++++++----------- .../base/AbsPlayerControlsFragment.kt | 30 ++++++++++ .../layout-xlarge/fragment_mini_player.xml | 1 + .../main/res/layout/fragment_mini_player.xml | 2 +- 6 files changed, 92 insertions(+), 36 deletions(-) create mode 100644 app/src/main/java/code/name/monkey/retromusic/extensions/ListEx.kt diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/ListEx.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/ListEx.kt new file mode 100644 index 00000000..8711599f --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/extensions/ListEx.kt @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2019 Hemanth Savarala. + * + * Licensed under the GNU General Public License v3 + * + * This 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 software 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. + */ + +package code.name.monkey.retromusic.extensions + +import code.name.monkey.retromusic.helper.MusicPlayerRemote +import code.name.monkey.retromusic.model.Song + +/** + * Created by hemanths on 2019-11-01. + */ + + +fun ArrayList.lastElement(): Boolean { + println("${this.size} ${this.indexOf(MusicPlayerRemote.currentSong)}") + return this.size - 1 == this.indexOf(MusicPlayerRemote.currentSong) +} + +fun ArrayList.fistElement(): Boolean { + return 0 == this.indexOf(MusicPlayerRemote.currentSong) +} diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt index 371ec454..64e400dc 100644 --- a/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt +++ b/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt @@ -36,6 +36,10 @@ fun View.hide() { visibility = View.GONE } +fun View.hidden() { + visibility = View.INVISIBLE +} + fun View.showOrHide(show: Boolean) = if (show) show() else hide() fun EditText.appHandleColor(): EditText { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/MiniPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/MiniPlayerFragment.kt index 6f37a469..b3ebd098 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/MiniPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/MiniPlayerFragment.kt @@ -3,7 +3,6 @@ package code.name.monkey.retromusic.fragments import android.animation.ObjectAnimator import android.annotation.SuppressLint import android.content.Context -import android.os.AsyncTask import android.os.Bundle import android.text.SpannableString import android.text.SpannableStringBuilder @@ -12,12 +11,18 @@ import android.view.* import android.view.animation.DecelerateInterpolator import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.extensions.fistElement +import code.name.monkey.retromusic.extensions.hide +import code.name.monkey.retromusic.extensions.lastElement +import code.name.monkey.retromusic.extensions.show import code.name.monkey.retromusic.fragments.base.AbsMusicServiceFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler -import code.name.monkey.retromusic.model.Song -import code.name.monkey.retromusic.util.* +import code.name.monkey.retromusic.util.NavigationUtil +import code.name.monkey.retromusic.util.PreferenceUtil +import code.name.monkey.retromusic.util.RetroUtil +import code.name.monkey.retromusic.util.ViewUtil import kotlinx.android.synthetic.main.fragment_mini_player.* import kotlin.math.abs @@ -91,16 +96,30 @@ open class MiniPlayerFragment : AbsMusicServiceFragment(), MusicProgressViewUpda override fun onServiceConnected() { updateSongTitle() updatePlayPauseDrawableState() - //updateIsFavorite() + updateButtons() } override fun onPlayingMetaChanged() { updateSongTitle() - //updateIsFavorite() } override fun onPlayStateChanged() { updatePlayPauseDrawableState() + updateButtons() + } + + private fun updateButtons() { + if (MusicPlayerRemote.playingQueue.fistElement()) { + actionPrevious.hide() + } else { + actionPrevious.show() + } + + if (MusicPlayerRemote.playingQueue.lastElement()) { + actionNext.hide() + } else { + actionNext.show() + } } override fun onUpdateProgressViews(progress: Int, total: Int) { @@ -157,34 +176,4 @@ open class MiniPlayerFragment : AbsMusicServiceFragment(), MusicProgressViewUpda return flingPlayBackController.onTouchEvent(event) } } - - fun toggleFavorite(song: Song) { - MusicUtil.toggleFavorite(requireActivity(), song) - if (song.id == MusicPlayerRemote.currentSong.id) { - updateIsFavorite() - } - } - - private var updateIsFavoriteTask: AsyncTask<*, *, *>? = null - - @SuppressLint("StaticFieldLeak") - fun updateIsFavorite() { - if (updateIsFavoriteTask != null) { - updateIsFavoriteTask!!.cancel(false) - } - updateIsFavoriteTask = object : AsyncTask() { - override fun doInBackground(vararg params: Song): Boolean { - return MusicUtil.isFavorite(requireActivity(), params[0]) - } - - override fun onPostExecute(isFavorite: Boolean) { - val res = if (isFavorite) - R.drawable.ic_favorite_white_24dp - else - R.drawable.ic_favorite_border_white_24dp - val drawable = RetroUtil.getTintedVectorDrawable(requireActivity(), res, ThemeStore.accentColor(requireActivity())) - miniPlayerImage.setImageDrawable(drawable) - } - }.execute(MusicPlayerRemote.currentSong) - } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt index 943fcf24..d5e0d230 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt @@ -5,9 +5,15 @@ import android.view.View import android.view.animation.AccelerateInterpolator import android.view.animation.DecelerateInterpolator import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.extensions.fistElement +import code.name.monkey.retromusic.extensions.hidden +import code.name.monkey.retromusic.extensions.lastElement +import code.name.monkey.retromusic.extensions.show import code.name.monkey.retromusic.fragments.VolumeFragment +import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.util.PreferenceUtil +import kotlinx.android.synthetic.main.fragment_adaptive_player_playback_controls.* /** @@ -71,4 +77,28 @@ abstract class AbsPlayerControlsFragment : AbsMusicServiceFragment(), MusicProgr companion object { const val SLIDER_ANIMATION_TIME: Long = 400 } + + override fun onServiceConnected() { + super.onServiceConnected() + updateButtons() + } + + override fun onPlayingMetaChanged() { + super.onPlayingMetaChanged() + updateButtons() + } + + private fun updateButtons() { + if (MusicPlayerRemote.playingQueue.fistElement()) { + previousButton?.hidden() + } else { + previousButton?.show() + } + + if (MusicPlayerRemote.playingQueue.lastElement()) { + nextButton?.hidden() + } else { + nextButton?.show() + } + } } diff --git a/app/src/main/res/layout-xlarge/fragment_mini_player.xml b/app/src/main/res/layout-xlarge/fragment_mini_player.xml index 43ba46c2..8936cfaf 100644 --- a/app/src/main/res/layout-xlarge/fragment_mini_player.xml +++ b/app/src/main/res/layout-xlarge/fragment_mini_player.xml @@ -2,6 +2,7 @@ Date: Fri, 1 Nov 2019 23:19:22 +0530 Subject: [PATCH 40/57] Fix folder list last element hides under mini player --- .../mainactivity/folders/FoldersFragment.java | 11 +++-- app/src/main/res/layout/fragment_folder.xml | 40 +++++++------------ 2 files changed, 20 insertions(+), 31 deletions(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/folders/FoldersFragment.java b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/folders/FoldersFragment.java index f4e36e6c..2c1bb7c6 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/folders/FoldersFragment.java +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/folders/FoldersFragment.java @@ -47,7 +47,6 @@ import code.name.monkey.appthemehelper.ThemeStore; import code.name.monkey.appthemehelper.common.ATHToolbarActivity; import code.name.monkey.appthemehelper.util.ATHUtil; import code.name.monkey.appthemehelper.util.ColorUtil; -import code.name.monkey.appthemehelper.util.TintHelper; import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper; import code.name.monkey.retromusic.R; import code.name.monkey.retromusic.adapter.SongFileAdapter; @@ -63,6 +62,7 @@ import code.name.monkey.retromusic.misc.DialogAsyncTask; import code.name.monkey.retromusic.misc.UpdateToastMediaScannerCompletionListener; import code.name.monkey.retromusic.misc.WrappedAsyncTaskLoader; import code.name.monkey.retromusic.model.Song; +import code.name.monkey.retromusic.util.DensityUtil; import code.name.monkey.retromusic.util.FileUtil; import code.name.monkey.retromusic.util.NavigationUtil; import code.name.monkey.retromusic.util.PreferenceUtil; @@ -85,7 +85,7 @@ public class FoldersFragment extends AbsMainActivityFragment implements private static final String CRUMBS = "crumbs"; private static final int LOADER_ID = LoaderIds.Companion.getFOLDERS_FRAGMENT(); - private View coordinatorLayout, container, empty; + private View coordinatorLayout, empty; private MaterialCardView toolbarContainer; @@ -158,7 +158,6 @@ public class FoldersFragment extends AbsMainActivityFragment implements breadCrumbs = view.findViewById(R.id.breadCrumbs); toolbar = view.findViewById(R.id.toolbar); empty = view.findViewById(android.R.id.empty); - container = view.findViewById(R.id.container); } private void setCrumb(BreadCrumbLayout.Crumb crumb, boolean addToHistory) { @@ -232,7 +231,6 @@ public class FoldersFragment extends AbsMainActivityFragment implements private void setUpAppbarColor() { int primaryColor = ATHUtil.INSTANCE.resolveColor(requireContext(), R.attr.colorPrimary); getMainActivity().setSupportActionBar(toolbar); - TintHelper.setTintAuto(container, primaryColor, true); appBarLayout.setBackgroundColor(primaryColor); toolbar.setBackgroundColor(RetroColorUtil.toolbarColor(getMainActivity())); toolbar.setNavigationIcon(R.drawable.ic_menu_white_24dp); @@ -467,8 +465,9 @@ public class FoldersFragment extends AbsMainActivityFragment implements @Override public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { - container.setPadding(container.getPaddingLeft(), container.getPaddingTop(), - container.getPaddingRight(), this.appBarLayout.getTotalScrollRange() + verticalOffset); + recyclerView.setPadding(recyclerView.getPaddingLeft(), recyclerView.getPaddingTop(), + recyclerView.getPaddingRight(), DensityUtil.dip2px(requireContext(), 52f) + + this.appBarLayout.getTotalScrollRange() + verticalOffset); } private void checkIsEmpty() { diff --git a/app/src/main/res/layout/fragment_folder.xml b/app/src/main/res/layout/fragment_folder.xml index e31cd0df..e5fd2f20 100644 --- a/app/src/main/res/layout/fragment_folder.xml +++ b/app/src/main/res/layout/fragment_folder.xml @@ -81,34 +81,24 @@ - + android:clipToPadding="false" + android:layoutAnimation="@anim/layout_animation_fall_down" + android:scrollbars="none" + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> - + - - - - -
\ No newline at end of file From eec8738b48d8978ea8ccc2bf1182cdcb1c165040 Mon Sep 17 00:00:00 2001 From: h4h13 Date: Fri, 1 Nov 2019 23:25:20 +0530 Subject: [PATCH 41/57] Release verison --- app/build.gradle | 4 ++-- app/src/main/assets/retro-changelog.html | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 270ffddf..7dc0a78a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,8 +13,8 @@ android { vectorDrawables.useSupportLibrary = true applicationId "code.name.monkey.retromusic" - versionCode 387 - versionName '3.4.500' + versionCode 388 + versionName '3.4.600' multiDexEnabled true diff --git a/app/src/main/assets/retro-changelog.html b/app/src/main/assets/retro-changelog.html index e2de4d2c..a9e74a79 100644 --- a/app/src/main/assets/retro-changelog.html +++ b/app/src/main/assets/retro-changelog.html @@ -1 +1 @@ -

v3.4.500

  • Added peak theme
  • Added app rating dialog
  • Fix song name scrolling in now playing themes if it's long
  • Fix playing queue last item hiding FAB
  • Added desaturated color option for dark mode
  • Fix slow search loading
  • Fix last added slow loading
  • Fix home banner toolbar corner
  • Fix home crashing when switching between two tabs
  • Fix remaining time in playing queue
  • Fix font not applied for some components
  • Fix crashing on album details sorting
  • Fixed lot of internal bugs
  • Fix dialog expand
  • Fix list card color
  • Removed SlidingUpPanel to replace with BottomSheet
  • Removed color theme as per material design guidelines
  • Removed classic theme(We're bringing back)
  • Replace line switch to Material Switch in settings
  • Performance improved
  • Updated internal libraries
  • Updated translation
  • Limiting the use of Theme engine for making use of system colors
  • Change home icon from the user icon
  • Corrected all toolbar with elevation when scrolling

v3.3.200

  • Fix fullscreen bottom tabs icons squash
  • Improved tiny theme colors
  • Android auto support
  • New notification icon
  • Favorite icon in mini player

v.3.3.100

  • Improved Now playing controls alignment
  • Lot internal changes to improve performance
  • Fix playlist adding crash
  • Fix color corrections
  • Fix file editing crash

v3.3.000

  • SD card support for deleting and editing

v3.2.240

  • Improved options dialog with selected color and title icon
  • Fix dialog color on dark theme

v3.2.220

  • Fix Notification SeekBar position (Need Android Q test)
  • Rolled back settings tint icons
  • Changed preference category title style according Android Q
  • Fix tabs options not working

v3.2.203

  • Carousel effect improved
  • Settings icons are now tint accent color
  • Settings title, back arrow and icons are now tint accent color
  • Equalizer is removed
  • Fix keyboard not popping on Search
  • Curated the main options
  • Folder toolbar outlined, folder icon background fix and separate line removed
  • Edit text input handles are colored

v3.2.135

  • Fix crashing on sharing song

v3.2.125

  • Fix crashing on selecting profile picture
  • Semi transparent color fix(s) on now playing themes

v3.2.120

  • Fix crashing on choosing a theme
  • Fix color theme selection without pro enabled
  • Fix icon tint some places

v3.2.105

  • Fix color notifications

v3.2.100

  • Fix crashing on Sleep timer
  • Toolbar elevation removed added stroke instead
  • Show empty indication for home

v3.2.000

  • Implemented Artist image loading all thanks to VinylMusicPlayer
  • Fixed buttons in Genre details
  • Fixed color buttons in Album and Artist details screen

v3.1.900

  • Added Play and Shuffle buttons on Songs list, Album Details, Artist Details, Playlist Details etc.
  • Home toolbar is semi transparent in Banner mode
  • Added new Buy Retro Music pro in settings
  • Improved dark color in Dark theme

v3.1.850

  • Toolbar will be clickable for Search

v3.1.800

  • Search bar CardView background
  • Improve volume zero
  • Now playing and Album theme picker rollback to dialog
  • Fix sharing app link
  • Fix scanning dialog
  • Added settings icons for options

v3.1.700

  • Cleaned internal code
  • Removed full screen option
  • Added Toolbar elevation
  • To access menu either tap on Toolbar or Hamburger icon
  • Fix back button not working on playing queue
  • Fix crashing on What's New screen
  • Fix lyrics dialog
  • Changed toggles to line icons
  • Fix crashing on artist list for number format error
  • Fix blacklist dialog crashing
  • Rearranged icons and main menu access
  • Fix some crashes when device is locked or background
  • Folder screen have main options access
  • Dialogs are now using Material Dialogs v3(BottomSheet)
  • Fix Shuffle icon for Artist, Album, Genre and Playlist details

v3.1.400

  • Removed sync lyrics for Android 5
  • Fix Seek-bar color in settings
  • Added keyboard to popup on search
  • Added keyboard to popup on search
  • Improved lock-screen behavior and UI
  • Improved text appearance
  • Fix bio text not showing in settings
  • Fix not showing slider(blur, filter song) amount in settings
  • Fix setting ringtone
  • Fix file sharing crash
  • Fix some crashes
  • Fix playlist icon on small devices
  • Fix empty lyrics text color
  • Fix album cover background purple color in color theme

v3.1.300

  • Fix rename playlist text color
  • Fix same album showing in details page
  • Fix lyrics text alignment on sync and lyrics reading improved
  • Improved home sections loading
  • Removed library options which are duplicated (it's available from profile menu)
  • Replaced collapsing Fab with Android Floating Extended Fab
  • Replaced home with for you
  • Fixed profile image not loading in about
  • Improved selecting user profile image
  • Added bio to enter custom message
  • Improved some UI screens

If you see entire app white or dark or black select same theme in settings to fix

FAQ's

*If you face any UI related issues you clear app data and cache, if its not working try to uninstall and install again.

\ No newline at end of file +

v3.4.600

  • Fix notification layout height
  • Fix folder list last item not showing
  • Added auto hide/ show controls according to first and last item

v3.4.500

  • Added peak theme
  • Added app rating dialog
  • Fix song name scrolling in now playing themes if it's long
  • Fix playing queue last item hiding FAB
  • Added desaturated color option for dark mode
  • Fix slow search loading
  • Fix last added slow loading
  • Fix home banner toolbar corner
  • Fix home crashing when switching between two tabs
  • Fix remaining time in playing queue
  • Fix font not applied for some components
  • Fix crashing on album details sorting
  • Fixed lot of internal bugs
  • Fix dialog expand
  • Fix list card color
  • Removed SlidingUpPanel to replace with BottomSheet
  • Removed color theme as per material design guidelines
  • Removed classic theme(We're bringing back)
  • Replace line switch to Material Switch in settings
  • Performance improved
  • Updated internal libraries
  • Updated translation
  • Limiting the use of Theme engine for making use of system colors
  • Change home icon from the user icon
  • Corrected all toolbar with elevation when scrolling

v3.3.200

  • Fix fullscreen bottom tabs icons squash
  • Improved tiny theme colors
  • Android auto support
  • New notification icon
  • Favorite icon in mini player

v.3.3.100

  • Improved Now playing controls alignment
  • Lot internal changes to improve performance
  • Fix playlist adding crash
  • Fix color corrections
  • Fix file editing crash

v3.3.000

  • SD card support for deleting and editing

v3.2.240

  • Improved options dialog with selected color and title icon
  • Fix dialog color on dark theme

v3.2.220

  • Fix Notification SeekBar position (Need Android Q test)
  • Rolled back settings tint icons
  • Changed preference category title style according Android Q
  • Fix tabs options not working

v3.2.203

  • Carousel effect improved
  • Settings icons are now tint accent color
  • Settings title, back arrow and icons are now tint accent color
  • Equalizer is removed
  • Fix keyboard not popping on Search
  • Curated the main options
  • Folder toolbar outlined, folder icon background fix and separate line removed
  • Edit text input handles are colored

v3.2.135

  • Fix crashing on sharing song

v3.2.125

  • Fix crashing on selecting profile picture
  • Semi transparent color fix(s) on now playing themes

v3.2.120

  • Fix crashing on choosing a theme
  • Fix color theme selection without pro enabled
  • Fix icon tint some places

v3.2.105

  • Fix color notifications

v3.2.100

  • Fix crashing on Sleep timer
  • Toolbar elevation removed added stroke instead
  • Show empty indication for home

v3.2.000

  • Implemented Artist image loading all thanks to VinylMusicPlayer
  • Fixed buttons in Genre details
  • Fixed color buttons in Album and Artist details screen

v3.1.900

  • Added Play and Shuffle buttons on Songs list, Album Details, Artist Details, Playlist Details etc.
  • Home toolbar is semi transparent in Banner mode
  • Added new Buy Retro Music pro in settings
  • Improved dark color in Dark theme

v3.1.850

  • Toolbar will be clickable for Search

v3.1.800

  • Search bar CardView background
  • Improve volume zero
  • Now playing and Album theme picker rollback to dialog
  • Fix sharing app link
  • Fix scanning dialog
  • Added settings icons for options

v3.1.700

  • Cleaned internal code
  • Removed full screen option
  • Added Toolbar elevation
  • To access menu either tap on Toolbar or Hamburger icon
  • Fix back button not working on playing queue
  • Fix crashing on What's New screen
  • Fix lyrics dialog
  • Changed toggles to line icons
  • Fix crashing on artist list for number format error
  • Fix blacklist dialog crashing
  • Rearranged icons and main menu access
  • Fix some crashes when device is locked or background
  • Folder screen have main options access
  • Dialogs are now using Material Dialogs v3(BottomSheet)
  • Fix Shuffle icon for Artist, Album, Genre and Playlist details

v3.1.400

  • Removed sync lyrics for Android 5
  • Fix Seek-bar color in settings
  • Added keyboard to popup on search
  • Added keyboard to popup on search
  • Improved lock-screen behavior and UI
  • Improved text appearance
  • Fix bio text not showing in settings
  • Fix not showing slider(blur, filter song) amount in settings
  • Fix setting ringtone
  • Fix file sharing crash
  • Fix some crashes
  • Fix playlist icon on small devices
  • Fix empty lyrics text color
  • Fix album cover background purple color in color theme

v3.1.300

  • Fix rename playlist text color
  • Fix same album showing in details page
  • Fix lyrics text alignment on sync and lyrics reading improved
  • Improved home sections loading
  • Removed library options which are duplicated (it's available from profile menu)
  • Replaced collapsing Fab with Android Floating Extended Fab
  • Replaced home with for you
  • Fixed profile image not loading in about
  • Improved selecting user profile image
  • Added bio to enter custom message
  • Improved some UI screens

If you see entire app white or dark or black select same theme in settings to fix

FAQ's

*If you face any UI related issues you clear app data and cache, if its not working try to uninstall and install again.

\ No newline at end of file From 6c2776793075a5e1f8ce21f55354da8164d6eac6 Mon Sep 17 00:00:00 2001 From: h4h13 Date: Sat, 2 Nov 2019 19:16:17 +0530 Subject: [PATCH 42/57] Hot fix --- app/build.gradle | 2 +- .../fragments/MiniPlayerFragment.kt | 26 ++++++++++--------- .../retromusic/util/PreferenceUtil.java | 2 +- app/src/main/res/values/strings.xml | 2 +- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 7dc0a78a..c4f06ddf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,7 +13,7 @@ android { vectorDrawables.useSupportLibrary = true applicationId "code.name.monkey.retromusic" - versionCode 388 + versionCode 389 versionName '3.4.600' multiDexEnabled true diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/MiniPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/MiniPlayerFragment.kt index b3ebd098..75969a32 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/MiniPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/MiniPlayerFragment.kt @@ -57,9 +57,9 @@ open class MiniPlayerFragment : AbsMusicServiceFragment(), MusicProgressViewUpda actionPrevious.visibility = View.VISIBLE actionPlayingQueue.visibility = View.VISIBLE } else { - actionNext.visibility = if (PreferenceUtil.getInstance(requireContext()).isExtraMiniExtraControls) View.VISIBLE else View.GONE - actionPlayingQueue.visibility = if (PreferenceUtil.getInstance(requireContext()).isExtraMiniExtraControls) View.GONE else View.VISIBLE - actionPrevious.visibility = if (PreferenceUtil.getInstance(requireContext()).isExtraMiniExtraControls) View.VISIBLE else View.GONE + actionNext.visibility = if (PreferenceUtil.getInstance(requireContext()).isExtraControls) View.VISIBLE else View.GONE + actionPlayingQueue.visibility = if (PreferenceUtil.getInstance(requireContext()).isExtraControls) View.GONE else View.VISIBLE + actionPrevious.visibility = if (PreferenceUtil.getInstance(requireContext()).isExtraControls) View.VISIBLE else View.GONE } actionPlayingQueue.setOnClickListener(this) @@ -109,16 +109,18 @@ open class MiniPlayerFragment : AbsMusicServiceFragment(), MusicProgressViewUpda } private fun updateButtons() { - if (MusicPlayerRemote.playingQueue.fistElement()) { - actionPrevious.hide() - } else { - actionPrevious.show() - } + if (PreferenceUtil.getInstance(requireContext()).isExtraControls) { + if (MusicPlayerRemote.playingQueue.fistElement()) { + actionPrevious.hide() + } else { + actionPrevious.show() + } - if (MusicPlayerRemote.playingQueue.lastElement()) { - actionNext.hide() - } else { - actionNext.show() + if (MusicPlayerRemote.playingQueue.lastElement()) { + actionNext.hide() + } else { + actionNext.show() + } } } diff --git a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.java index 49ad9f1e..3de74e1f 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.java @@ -291,7 +291,7 @@ public final class PreferenceUtil { return mPreferences.getBoolean(INITIALIZED_BLACKLIST, false); } - public boolean isExtraMiniExtraControls() { + public boolean isExtraControls() { return mPreferences.getBoolean(TOGGLE_ADD_CONTROLS, false); } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4b0c2569..f302c7c2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5,7 +5,7 @@ Accent color The theme accent color, defaults to teal - action_add_to_playlist + About Add to favorites Add to playing queue Add to playlist From f926cdeaf63f84a916e3bbb86b9286662be156b0 Mon Sep 17 00:00:00 2001 From: h4h13 Date: Mon, 4 Nov 2019 21:56:18 +0530 Subject: [PATCH 43/57] XML String sort --- .../monkey/retromusic/util/PlaylistsUtil.java | 60 +- .../layout-xlarge/fragment_mini_player.xml | 2 +- .../res/layout/activity_playlist_detail.xml | 2 + app/src/main/res/values-bg/strings.xml | 453 +++++++++++--- app/src/main/res/values-cs/strings.xml | 101 ++- app/src/main/res/values-de-rDE/strings.xml | 590 +++++++++++++---- app/src/main/res/values-de/strings.xml | 203 +++++- app/src/main/res/values-el/strings.xml | 244 ++++++-- app/src/main/res/values-es-rES/strings.xml | 587 +++++++++++++---- app/src/main/res/values-es-rUS/strings.xml | 456 +++++++++++--- app/src/main/res/values-es/strings.xml | 457 +++++++++++--- app/src/main/res/values-eu-rES/strings.xml | 451 ++++++++++--- app/src/main/res/values-fr/strings.xml | 580 +++++++++++++---- app/src/main/res/values-hi-rIN/strings.xml | 45 ++ app/src/main/res/values-hi/strings.xml | 4 - app/src/main/res/values-hr/strings.xml | 456 +++++++++++--- app/src/main/res/values-hu/strings.xml | 342 ++++++++-- app/src/main/res/values-id/strings.xml | 548 ++++++++++++---- app/src/main/res/values-in/strings.xml | 51 +- app/src/main/res/values-it/strings.xml | 590 +++++++++++++---- app/src/main/res/values-ja/strings.xml | 526 ++++++++++++---- app/src/main/res/values-ko/strings.xml | 198 +++++- app/src/main/res/values-ms/strings.xml | 174 +++++ app/src/main/res/values-nl/strings.xml | 242 +++++-- app/src/main/res/values-pl/strings.xml | 584 +++++++++++++---- app/src/main/res/values-pt-rBR/strings.xml | 592 ++++++++++++++---- app/src/main/res/values-ro/strings.xml | 198 +++++- app/src/main/res/values-ru/strings.xml | 542 ++++++++++++---- app/src/main/res/values-sr/strings.xml | 251 ++++++-- app/src/main/res/values-tr/strings.xml | 590 +++++++++++++---- app/src/main/res/values-vi/strings.xml | 572 +++++++++++++---- app/src/main/res/values-zh-rCN/strings.xml | 527 ++++++++++++---- app/src/main/res/values-zh-rHK/strings.xml | 590 +++++++++++++---- app/src/main/res/values-zh-rTW/strings.xml | 139 +++- app/src/main/res/values/arrays.xml | 2 +- app/src/main/res/values/strings.xml | 399 ++++++------ app/src/main/res/xml/pref_general.xml | 4 +- 37 files changed, 9794 insertions(+), 2558 deletions(-) delete mode 100644 app/src/main/res/values-hi/strings.xml diff --git a/app/src/main/java/code/name/monkey/retromusic/util/PlaylistsUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/PlaylistsUtil.java index 9208e632..da5d3b8b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/PlaylistsUtil.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/PlaylistsUtil.java @@ -14,7 +14,6 @@ package code.name.monkey.retromusic.util; - import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; @@ -41,7 +40,6 @@ import code.name.monkey.retromusic.model.Song; import static android.provider.MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI; - public class PlaylistsUtil { public static boolean doesPlaylistExist(@NonNull final Context context, final int playlistId) { return playlistId != -1 && doesPlaylistExist(context, @@ -72,8 +70,7 @@ public class PlaylistsUtil { if (uri != null) { // Necessary because somehow the MediaStoreObserver is not notified when adding a playlist context.getContentResolver().notifyChange(Uri.parse("content://media"), null); - Toast.makeText(context, context.getResources().getString( - R.string.created_playlist_x, name), Toast.LENGTH_SHORT).show(); + Toast.makeText(context, context.getResources().getString(R.string.created_playlist_x, name), Toast.LENGTH_SHORT).show(); id = Integer.parseInt(uri.getLastPathSegment()); } } else { @@ -112,10 +109,10 @@ public class PlaylistsUtil { } } - public static void addToPlaylist(@NonNull Context context, - @NonNull Song song, - int playlistId, - boolean showToastOnFinish) { + static void addToPlaylist(@NonNull Context context, + @NonNull Song song, + int playlistId, + boolean showToastOnFinish) { List helperList = new ArrayList<>(); helperList.add(song); addToPlaylist(context, helperList, playlistId, showToastOnFinish); @@ -125,36 +122,38 @@ public class PlaylistsUtil { @NonNull List songs, int playlistId, boolean showToastOnFinish) { - final int size = songs.size(); + + ArrayList noSongs = new ArrayList(); + for (Song song : songs) { + if (!doPlaylistContains(context, playlistId, song.getId())) { + noSongs.add(song); + } + } + + + final int size = noSongs.size(); final ContentResolver resolver = context.getContentResolver(); final String[] projection = new String[]{"max(" + MediaStore.Audio.Playlists.Members.PLAY_ORDER + ")",}; final Uri uri = MediaStore.Audio.Playlists.Members.getContentUri("external", playlistId); - Cursor cursor = null; + + int base = 0; + try (Cursor cursor = resolver.query(uri, projection, null, null, null)) { - try { - try { - cursor = resolver.query(uri, projection, null, null, null); - - if (cursor != null && cursor.moveToFirst()) { - base = cursor.getInt(0) + 1; - } - } finally { - if (cursor != null) { - cursor.close(); - } - } - - int numInserted = 0; - for (int offSet = 0; offSet < size; offSet += 1000) - numInserted += resolver.bulkInsert(uri, makeInsertItems(songs, offSet, 1000, base)); - - if (showToastOnFinish) { - Toast.makeText(context, context.getResources().getString( - R.string.inserted_x_songs_into_playlist_x, numInserted, getNameForPlaylist(context, playlistId)), Toast.LENGTH_SHORT).show(); + if (cursor != null && cursor.moveToFirst()) { + base = cursor.getInt(0) + 1; } } catch (SecurityException ignored) { } + + int numInserted = 0; + for (int offSet = 0; offSet < size; offSet += 1000) + numInserted += resolver.bulkInsert(uri, makeInsertItems(noSongs, offSet, 1000, base)); + + if (showToastOnFinish) { + Toast.makeText(context, context.getResources().getString( + R.string.inserted_x_songs_into_playlist_x, numInserted, getNameForPlaylist(context, playlistId)), Toast.LENGTH_SHORT).show(); + } } @NonNull @@ -278,5 +277,4 @@ public class PlaylistsUtil { } return exists; } - } \ No newline at end of file diff --git a/app/src/main/res/layout-xlarge/fragment_mini_player.xml b/app/src/main/res/layout-xlarge/fragment_mini_player.xml index 8936cfaf..bc8808f9 100644 --- a/app/src/main/res/layout-xlarge/fragment_mini_player.xml +++ b/app/src/main/res/layout-xlarge/fragment_mini_player.xml @@ -5,7 +5,7 @@ android:id="@+id/miniPlayerContent" android:layout_width="match_parent" android:layout_height="48dp" - android:background="?colorSurface" + android:background="?colorSecondary" android:clickable="true" android:focusable="false" android:transitionName="@string/transition_mini_player" diff --git a/app/src/main/res/layout/activity_playlist_detail.xml b/app/src/main/res/layout/activity_playlist_detail.xml index 76c13e22..ff015bac 100644 --- a/app/src/main/res/layout/activity_playlist_detail.xml +++ b/app/src/main/res/layout/activity_playlist_detail.xml @@ -46,6 +46,8 @@ - Малък албум Акцентен цвят Акцентен цвят на темата, по подразбиране изумруден + Системни + Добави към любими Добави към опашката Добави към плейлист... + Изчисти опашката Изчисти плейлист + Изтрий Изтрий от устройството + Подробности + Към албума Към изпълнителя Към жанра Към началната директория + Позволи + Размер на мрежата Размер на мрежата (хоризонтално) + Следващ + Пусни Пусни следващ Пусни/Спри + Предишен + Премахни от любими Премахни от опашката Премахни от плейлист + Преименувай + Запази опашката + Сканирай Сканирай директория + Търси + Старт Задай като мелодия на звънене Задай като стартова директория + "Настройки" + Сподели + Разбъркай всички Разбъркай плейлист + Таймер на заспиване + Ред на сортиране + Редактор на етикети + Адаптивен + Добави + Добави \nснимка + "Добави към плейлист" + "Добавено 1 заглавие към опаката." + Добавени %1$d заглавия към опашката. + Албум + Изпълнител на албума + Липсва заглавие или изпълнител. + Албуми + Винаги + Научи повече за този музикален плейър на: https://play.google.com/store/apps/details?id=%s + Разбъркай Любими песни + Retro music - Голям Retro music - Карта Retro music - Класически Retro music - Малък Retro Music - Текст + Изпълнител + Изпълнители + Аудио фокус отказан. + Промени настройките на звука и настрой контролите на усилвателя + + Авто + + Основна цветова тема + Усилване на баса + + Биография + Биография + Просто черно + Черен списък + Замъглено + Замъглена карта - Дръж екрана включен - Имайте предвид, че тази настройка може да повлияе на батерията. - Количество на замъгленост - Количество на замъгленост при темите, колкото по-ниско, толкова по-бързо - Retro Music Pro + + Неуспешно изпращане на доклада + Невалиден тоукън за достъп. Моля, свържете се с разработчика на приложението. + Моля, свържете се с разработчика на приложението. + Грешка. Моля, свържете се с разработчика на приложението. + Грешно име или парола + Проблем + Изпрати ръчно + Моля, въведете описание на проблема + Моля, въведете валидна GitHub парола + Моля, въведете заглавие за проблема + Моля, въведете валидно GitHub име + Възникна неочаквана грешка. Съжалявам, че намери този бъг, ако проблемът продължава +\"Изчисти данните от приложението\" + Качване на доклада в GitHub... + Изпрати чрез GitHub акаунт + Отмени + Карта - Оцветена карта + Кръг - Изображение + + Оцветена карта + Карта + + Въртележка + + Ефект на въртележка на екрана с песен + + Каскаден + Предавай + Списък с промените + Списък промените в Telegram канала + + Кръгъл + Изчисти + + Изчисти данните от приложението + Изчисти черен списък + + Изчисти опашката + Изчисти плейлист %1$s? \u0422\u043e\u0432\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043e\u0442\u043c\u0435\u043d\u0435\u043d\u043e!]]> + Затвори + Цвят + Цвят + Цветове + + Копирана информация за устройството в клипборда. + \u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u044a\u0437\u0434\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442. "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0438\u0437\u0442\u0435\u0433\u043b\u044f\u043d\u0435 \u043d\u0430 \u043a\u043e\u0440\u0438\u0446\u0430 \u043d\u0430 \u0430\u043b\u0431\u0443\u043c\u0430." Неуспешно възстановяване на покупката. Неуспешно сканиране на %d файлове. + Създай + Създай плейлист %1$s. + Членове и сътрудници + В момента се слуша %1$s от %2$s. + Малко тъмно + Без текст + Изтрий плейлист %1$s?]]> + Изтрий плейлисти + %1$s?]]> + %1$d плейлисти?]]> %1$d песни?]]> Изтрити %1$d песни. + + Дълбочина + + Описание + + Информация за устройството + Да се изчисти ли черният списък? %1$s от черния списък?]]> + Дарения + Ако смяташ, че заслужавам яка пачка за това яко приложение, може да пуснеш пара ей тука + Купи ми: + Свали от Last.fm + Редактирай корица + Празно + Усилвател + + Грешка + Често задавани въпроси + Любими + + Побери + Плосък + Папки + За теб + Пълно + + Пълна карта + Смени темата и цветовете на приложението Изглед и усещане + Жанр + Жанрове + Подкрепи проекта в GitHub + Присъедини се към Google Plus общността, където можеш да поискаш помощ и да следиш за Retro Music актуализации + 1 2 3 @@ -142,77 +276,169 @@ 6 7 8 + + Панта + История + Начало + + Хоризонтално завъртане + + Изображение + Промени настройките за изтегляне на изображения на изпълнителите + Добавени %1$d песни в плейлист %2$s. + Instagram Сподели твоят Retro Music изглед в Instagram + Bitrate + Формат Име на файл Местонахождение на файла Размер + Размер на използване + Дължина + + С етикет + Последно добавени + Да послушаме малко музика + Библиотека + Лицензи + Очевидно бяло + Файлове + Зареждане на продукти... + + Влез + Текст + + Направено с ❤️ в Индия + Материален + Моето име + Най-слушани + Никога + Нова снимка на корицата + Нов плейлист + Нова профилна снимка + %s е новата начална директория. + Няма албуми + Няма изпълнители + "Първо пусни песен, след това опитай отново." + Не е намерен усилвател + Няма жанрове + Не е намерен текст + Няма плейлисти + Не е намерена покупка. + Няма резултати + Няма песни + Нормален + Нормален текст + Нормален + %s не е намерен в медия магазина.]]> + Нищо за сканиране. + Известие + Персонализирай стила на известията + Сега се слуша Опашка на слушане + Персонализирай екрана с песен + 9+ теми на екрана с песен + Само през Wi-Fi + Други + + Парола + Последните 3 месеца + Достъп до вътрешната памет отказан. + Достъп отказан. + Персонализирай. + Персонализирай контролите за слушане и потребителски интерфейс + Избери от паметта + Изчистен + Известието на слушане дава възможност за пускане/спиране и т.н. Известие на слушане + Празен плейлист + Плейлист е празен. + Име на плейлист + Плейлисти + + Стил на детайли на албума + + Количество на замъгленост при темите, колкото по-ниско, толкова по-бързо + Количество на замъгленост + Аудио Тема Изображения Заключен екран Плейлисти + + Паузирай когато музиката е на нула и пусни при увеличаване на звука. Внимание, че при увеличаване на звука музиката започва дори и извън приложението. + Паузирай на нула + Имайте предвид, че тази настройка може да повлияе на батерията. + Дръж екрана включен + + Натисни за или плъзни за без прозрачна навигация на екрана с песен + Натисни или плъзни + "Наличен единствено в Lollipop." + + Ефект на валящ сняг + Използвай корицата на настоящата песен като фон на заключен екран Понижи звука, когато бъде получен звук от системата или известие + Съдържанието на блокиратите папки е скрито от библиотеката Ви. Замъгли корицата на албума на заключения екран. Може да причини проблеми с други приложения и уиджети. Ефект на въртележка за корицата на албума. Имайте предвид, че темите Карта и Замъглена карта няма да работят Използвай класическия дизайн на известията @@ -221,7 +447,10 @@ Оцветява навигационния бар в главния цвят "\u041e\u0446\u0432\u0435\u0442\u044f\u0432\u0430 \u0438\u0437\u0432\u0435\u0441\u0442\u0438\u0435\u0442\u043e \u0432 \u043d\u0430\u0439-\u044f\u0440\u043a\u0438\u044f \u0446\u0432\u044f\u0442 \u043d\u0430 \u043a\u043e\u0440\u0438\u0446\u0430\u0442\u0430 \u043d\u0430 \u0430\u043b\u0431\u0443\u043c\u0430" Преобладаващият цвят ще бъде избран от корицата на албума или на изпълнителя + Добави допълнителни контроли за мини-плейъра "Може да причини проблеми на някои устройства." + Покажи раздел с жанрове + Покажи стил на начална корица Може да увеличи резолюцията на корицата, но води до по-бавно зареждане на изображението. Включете единствено ако имате проблем с корици с ниска резолюция Използвай персонализираните контроли за заключен екран на Retro Music Детайли за лиценз за софуер с отворен източник @@ -231,23 +460,27 @@ Пусни музиката веднага след включване на слушалки Режимът на разбъркване ще се изключи при пускане на списък с нови песни Ако има достатъчно пространство, контроли за звука ще бъдат показани на екрана - Добави допълнителни контроли за мини-плейъра - Покажи раздел с жанрове - Покажи стил на начална корица + Покажи корица на албум - Режим на заглавия на раздели + Тема на корица на албум + Стил на корица на албуми на екрана с песен Мрежа на албум Оцветени преки пътища на приложение Мрежа на изпълнител Намали звук при загуба на фокус Изтегляй автоматично изображение на изпълнителя + Черен списък Замъгли корицата на албума Избери усилвател Класически дизайн на известие Адаптивен цвят Оцветено известие + Допълнителни контроли Слушане без пауза Тема на приложението + Покажи раздел за жанрове + Начална мрежа на изпълнители + Начална корица Игнорирай кориците от медийния магазин Интервал на плейлист с последно добавени песни Контроли за пълен екран @@ -255,6 +488,7 @@ Тема на екран с песен Лицензи за отворен източник Заострени ъгли + Режим на заглавия на раздели Ефект на въртележка Преобладаващ цвят Приложение на пълен екран @@ -263,58 +497,105 @@ Режим на разбъркване Контроли за звука Информация на потребител - Допълнителни контроли - Начална корица - Покажи раздел за жанрове - Начална мрежа на изпълнители - Стил на корица на албуми на екрана с песен - Стил на детайли на албума - Каскаден + Основен цвят Основният цвят на темата, по подразбиране сиво-син, засега работи с тъмни цветове + + Профил + Купи + *Мисли преди да купиш, не моли за пари обратно. + Опашка + Оцени приложението + Love this app? Let us know in the Google Play Store how we can make it even better + Скорошни албуми + Скорошни изпълнители + Премахни + Премахни снимка на корица + Премахни корица + Премахни от черен списък + Премахни профилна снимка + Премахни песен от плейлист %1$s от плейлиста?]]> + Премахни песни от плейлист + %1$d песни от плейлиста?]]> + Преименувай плейлист + + Докладвай проблем + + Докладвай нередности + Възстанови първоначалното изображение на изпълнител + Възстанови + Възстановена предишна покупка. Моля, рестартирайте приложението, за да можете да се възползвате от всички свойства. Възстановени предишни покупки. + Възстановяване на покупка... + Retro Music Усилвател + + Retro Music Pro + Запази като файл + Запази като файлове + Плейлист запазен в %s. + Запазване на промените + Сканиране на файловете + Сканирани %1$d от %2$d файла. + Търсене в библиотеката ти... + Избери всички + Избери снимка за корица + + Избран + Задай снимка на изпълнител + + Сподели приложението + Разбъркай + Семпъл + Таймерът на заспиване беше отменен. Таймерът на заспиване е зададен на %d минути от сега. + + Малък албум + Социални + Песен + Продължителност на песен + Песни + Ред на сортиране Покачващ се Албум @@ -322,107 +603,101 @@ Дата Година Намаляващ + Съжалявам, но устройството не поддържа гласово въвеждане + Търсене в библиотеката + + Предложения + Покажи името ти на началния екран + Подкрепа на разработката + + Синхронизиран текст + Системен усилвател + Telegram Join the Telegram group to discuss bugs, make suggestions, show off and more + Благодаря! + Аудио файлът + Този месец + Тази седмица + Тази година + Миниатюрен + + Заглавие + Контролно табло + Лек следобед Добър ден Добър вечер Добро утро Лека нощ + Как е името ти + Днес + Топ албуми + Топ изпълнители + "Песен (2 за песен 2 или 3004 за CD3 песен 4)" + Номер на песен + Превод + Помогни да преведем приложението на твоя език + Twitter Сподели дизайна си с Retro Music - \u041f\u0435\u0441\u0435\u043d\u0442\u0430 \u043d\u0435 \u043c\u043e\u0436\u0430 \u0434\u0430 \u0441\u0435 \u0438\u0437\u043f\u044a\u043b\u043d\u0438. - Следва - Обнови изображение - Обновява се... - Версия - Виртуализатор - Уеб търсене - Какво искаш да споделиш? - Прозорец - Задай %1$s като тон на звънене. - %1$d избрано - Година - Направено с ❤️ в Индия - Изчисти данните от приложението - Възникна неочаквана грешка. Съжалявам, че намери този бъг, ако проблемът продължава -\"Изчисти данните от приложението\" - Грешка - Основна цветова тема - 9+ теми на екрана с песен - Ефект на въртележка на екрана с песен - Заоблени ъгли - Тема на корица на албум - Кръгъл - Въртележка - Персонализирай екрана с песен - Пълна карта - Профил - Биография - Авто - С етикет + Без етикет - Избран - Дълбочина - Вертикално завъртане - Панта - Хоризонтално завъртане - Паузирай когато музиката е на нула и пусни при увеличаване на звука. Внимание, че при увеличаване на звука музиката започва дори и извън приложението. - Паузирай на нула - Какво е ново? - Предложения - Побери - Натисни или плъзни - Натисни за или плъзни за без прозрачна навигация на екрана с песен - Изчисти опашката - Сподели приложението - Докладвай нередности - Изпрати чрез GitHub акаунт - Влез - Изпрати ръчно - Ще бъдете препратени към сайта на тракера. - Проблем - Заглавие - Описание + + \u041f\u0435\u0441\u0435\u043d\u0442\u0430 \u043d\u0435 \u043c\u043e\u0436\u0430 \u0434\u0430 \u0441\u0435 \u0438\u0437\u043f\u044a\u043b\u043d\u0438. + + Следва + + Обнови изображение + + Обновява се... + Потребителско име - Парола - Информация за устройството - Докладвай проблем - Моля, въведете валидно GitHub име - Моля, въведете валидна GitHub парола - Моля, въведете заглавие за проблема - Моля, въведете описание на проблема - Качване на доклада в GitHub... - Неуспешно изпращане на доклада - Грешно име или парола - Невалиден тоукън за достъп. Моля, свържете се с разработчика на приложението. - Моля, свържете се с разработчика на приложението. - Грешка. Моля, свържете се с разработчика на приложението. - Копирана информация за устройството в клипборда. + + Версия + + Вертикално завъртане + + Виртуализатор + + Уеб търсене + + Какво искаш да споделиш? + + Какво е ново? + + Прозорец + + Заоблени ъгли + + Задай %1$s като тон на звънене. + + %1$d избрано + + Година + + Ще бъдете препратени към сайта на тракера. + Данните на акаунта Ви се използват единствено за автентификация. - Ефект на валящ сняг - Черен списък - Съдържанието на блокиратите папки е скрито от библиотеката Ви. - Синхронизиран текст diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 665142e9..670cbab0 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -1,13 +1,8 @@ - Barva akcentů Barva motivu akcentu je výchozí k růžové barvě. + Informace Přidat k oblíbeným "Přidat do fronty " @@ -43,56 +38,91 @@ Náhodný výběr playlistu Časovač vypnutí Editor tagů + "Přidat do seznamu skladeb" + "Přidán 1 titul do fronty přehrávání." Přidány %1$d tituly do fronty přehrávání. + Album Umělec alba Titul nebo umělec je prázdný. + Albumy + Vždy + Shuffle Top Tracks Retro music - Big Retro music - Classic Retro music - Small + Umělec + Umělci + Zaměření zvuku bylo zamítnuto. + Bio + Velmi černá + Zrušit aktuální časovač + Přehled změn + Vyčistit Vyčistit seznam skladeb %1$s? Akci nelze vr\u00e1tit zp\u011bt!]]> + Barvy + Nelze vytvo\u0159it playlist. "Nelze st\u00e1hnout odpov\u00eddaj\u00edc\u00ed obal alba." Nelze skenovat %d soubory. + Vytvořit + "Vytvořený seznam skladeb " + Aktuálně posloucháš %1$s od %2$s. + + Tmavá + Smazat seznam skladeb %1$s?]]> Smazat seznamy skladeb %1$s?]]> %1$d seznamů skladeb?]]> %1$d písní?]]> + %1$d skladby byly smazány. + Darovat Pokud si myslíte, že si zasloužím odměnu za svou práci, můžete mi nechat pár dolarů. + Stáhnout z Last.fm + Prázdný + Equalizer + Oblíbené + Flat + Složky + Žánr + Historie + Domov + Do playlistu %2$s byly vloženy %1$d skladby. + Datový tok Formát Název souboru @@ -100,17 +130,28 @@ Velikost Vzorkovací frekvence Délka + "Poslední " + Knihovna + Licence + Velmi bílá + Výpis souborů + Načítání produktů... + Text + Moje top skladby + Nikdy + "Nový seznam skladeb " "%S je nový úvodní adresář. " + Žádné alba žádní umělci "Přehrajte nejprve píseň a zkuste to znovu." @@ -118,17 +159,28 @@ Žádné playlisty Žádné výsledky Žádné písně + %s není uveden v úložišti médií.]]> + Nic pro skenování. + Upozornění + Aktuální fronta + Pouze přes Wifi + Povolení přístupu k externímu úložišti bylo zamítnuto. + Oprávnění byla odepřena. + Vyberte z místního úložiště + Prázdny seznam skladeb Název playlistu + Seznamy skladeb + Zvuk Obrázky Obrazovka uzamčení @@ -149,7 +201,6 @@ Automatické stahování obrázků interpretů Blur album cover Adaptivní barva - Tmavá Barevné notifikace Přehrávání bez mezery Hlavní téma @@ -157,48 +208,76 @@ Barevná navigační lišta Vzhled Rohy + Hlavní barva + Primární barva motivu je výchozí pro indigo. + Fronta + Ohodnoťte aplikaci Zanechte pozitivní hodnocení na Google Play pokud máte rádi Retro music. + Odstranit Odstranit obal Smazat skladbu ze seznamu skladeb %1$s ze seznamu skladeb?]]> Smazat skladby ze seznamu skladeb %1$s skladby ze seznamu skladeb?]]> + Přejmenovat seznam skladeb + Předchozí nákupy byly obnoveny. + Uložit jako soubor + Seznam skladeb uložený do %s. + Uložení změn + Naskenované %1$d z %2$d souborů. + Prohledat knihovnu... + Náhodně + Časovač vypnutí byl zrušen. Časovač vypnutí byl nastaven na %d minut. + Skladba + Písně + "Řazení " + Promiňte! Vaše zařízení nepodporuje vstup řeči Prohledat knihovnu + Podpora vývoje + Děkujeme! + Audio soubor + "Skladba (2 pro stopu 2 ​​nebo 3004 pro čtvrtou stopu z CD3)" + Překlad + Tuto p\u00edse\u0148 se nepoda\u0159ilo p\u0159ehr\u00e1t. + Up next + Aktualizovat obrázek + Aktualizace... + Verze + Webové vyhledávání + Co chcete sdílet? + Nastavit %1$s jako zvonění %1$d vybrané + Rok - Primární barva motivu je výchozí pro indigo. - - - diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index e2a02128..897eed6c 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -1,143 +1,297 @@ - Du musst mindestens eine Kategorie auswählen - Kleines Album + Team, soziale Netzwerke + Akzentfarbe Die Akzentfarbe, standardmäßig auf Grün gestellt + Über + Zu Favoriten hinzufügen Zur Warteschleife hinzufügen Zur Wiedergabeliste hinzufügen + Warteschleife leeren Wiedergabeliste leeren + Löschen Vom Gerät löschen + Details + Zum Album Zum Interpreten Zu Genre gehen "Zum Startverzeichnis " + Gewähren + Rastergröße Rastergröße (Land) + + Neue Wiedergabeliste + Nächster + Abspielen + Alles abspielen Als nächstes abspielen Abspielen/Pausieren + Vorheriger + Aus Favoriten entfernen Von Warteschlange entfernen Von Wiedergabeliste entfernen + Umbenennen + Warteschleife abspeichern + Scannen Verzeichnis scannen + Suchen - Set + Einstellen Als Klingelton setzen Als Startverzeichnis setzen + "Einstellungen" + Teilen + Alles shufflen Wiedergabeliste shufflen + Schlaftimer + Sortierreihenfolge + Tags bearbeiten + Adaptiv + Hinzufügen + + Songtext hinzufügen + Bild hinzufügen + "Zu Wiedergabeliste hinzufügen" + + Synchronisierten Songtext hinzufügen + "Ein Titel wurde zur Warteschlange hinzugefügt." + %1$d Titel zur Warteschleife hinzugefügt. + Album + Albuminterpret + Titel oder Interpret ist leer. + Alben + Immer + Hey, schau\' dir diese coole Musikapp an: https://play.google.com/store/apps/details?id=%s + Shufflen Top Songs + Retro Music - Groß Retro Music - Karte Retro Music - Klassisch Retro Music - Klein Retro Music - Text + Interpret + Interpreten + Audiofokus nicht möglich. + Sound- und Equalizer-Optionen einstellen + + Automatisch + + Grundfarbe + Bassboost + + Beschreibung + Biografie + Einfach Schwarz + Schwarze Liste + Unschärfe + Karte (Unschärfe) - Bildschirm anlassen - Beachte, dass diese Funktion sich auf die Akkulaufzeit auswirkt. - Unschärfe - Geringere Unschärfe benötigt weniger Rechenleistung. - Retro Music Pro + + Fehler beim Melden + Ungültiger Token. Bitte kontaktiere den Entwickler. + Für diese Repository sind Fehlermeldungen nicht aktiviert. Bitte den Entwickler kontaktieren. + Ein unerwarteter Fehler ist aufgetreten. Bitte kontaktiere den Entwickler. + Falscher Nutzername oder Passwort + Problem + Manuell senden + Bitte gebe eine Beschreibung ein + Bitte nutze das korrekte GitHub-Passwort + Bitte gebe einen Titel ein + Bitte nutze einen gültigen GitHub-Nutzernamen + Sorry! Ein unerwarteter Fehler ist aufgetreten. Die App-Daten zurückzusetzen, könnte helfen. + Meldung zu GitHub hochladen... + Via GitHub senden + Abbrechen + Karte - Karte (Farbe) + Rund - Bild + + Karte (Farbe) + Karte + + Karussell + + Karussell-Effekt auf dem Abspielbildschirm + + Kaskadierend + Übertragen + Änderungen + Änderungsprotokoll im Telegram-Channel + + Rund + + Klassik + Leeren + + App-Daten zurücksetzen + Leeren + + Leeren + Wiedergabeliste leeren %1$s leeren? Dies kann nicht r\u00fcckg\u00e4ngig gemacht werden!]]> + Schließen + Farbe + Farbe - Tag-Nacht + Farben + + Komponist + + Geräteinformationen wurden kopiert + Wiedergabeliste konnte nicht erstellt werden. "Passendes Albumcover konnte nicht gefunden werden." Kauf konnte nicht wiederhergestellt werden. %d Dateien konnten nicht gescannt werden. + Erstellen + Wiedergabeliste %1$s wurde erstellt. + Helfende Hände + Du hörst gerade %1$s von %2$s. + Ziemlich Dunkel + + Tag-Nacht + Kein Songtext + Wiedergabeliste löschen %1$s gelöscht werden?]]> + Wiedergabelisten löschen + + Song löschen %1$s gelöscht werden?]]> + + Songs löschen + %1$d gelöscht werden?]]> %1$d gelöscht werden?]]> - Song löschen - Songs löschen %1$d Song(s) wurden gelöscht. + + Tiefe + + Beschreibung + + Geräteinfo + + Retro Music erlauben, Audioeinstellungen zu verändern + + Klingelton festlegen + Möchtest du die schwarze Liste leeren? %1$s von der schwarzen Liste entfernen?]]> + Spenden + Wenn du denkst, dass mein Werk Geld wert ist, kannst du mir hier gerne ein paar Euros lassen. + Kauf\' mir: + Von Last.fm herunterladen + + Bearbeiten + Cover bearbeiten + Leer + Equalizer + + Fehler + FAQ + Favoriten + + Letzten Song ganz spielen + + Anpassen + Flach + Ordner + Für dich + Voll + + Karte (Voll) + Allgemeine Farben der App ändern Aussehen + Genre + Genres + Projekt von GitHub forken + Tritt\' der Google Plus-Community bei, um nach Hilfe zu fragen oder Updates zu Retro Music zu erhalten + 1 2 3 @@ -146,77 +300,201 @@ 6 7 8 + + + + Scharnier + Verlauf + Zuhause + + Horizontale Drehung + + Bild + + Bild mit Farbverlauf + Download-Verhalten für Interpretenbilder ändern + %1$d Songs in die Wiedergabeliste %2$s hinzugefügt. + Instagram Teile dein Retro Music-Design auf Instagram + + Tastatur + Bitrate + Formattieren Dateiname Dateipfad Größe + Sampling-Rate + Länge + + Beschriftet + Neu + + Letzter Song + Lass\' uns Musik spielen! + Bibliothek + + Bibliothekkategorien + Lizenzen + Ganz Weiß + Dateien auflisten + Produkte werden geladen... + + Login + Songtext + + Made with ❤️ in India + Material + + Fehler + + Berechtigungsfehler + Mein Name + Top Songs + Niemals + Neues Banner-Foto + Neue Wiedergabeliste + Neues Profilbild + %s ist das neue Startverzeichnis. + + Nächster Song + Keine Alben + Keine Interpreten + "Spiele zuerst einen Song, dann versuche es erneut." + Kein Equalizer gefunden. + Keine Genres + Kein Songtext gefunden + Keine Wiedergabelisten + Kein Kauf gefunden. + Keine Ergebnisse + Keine Songs + Normal + Normaler Songtext + Normal + %s ist nicht im Medienspeicher aufgelistet.]]> + Nichts zu scannen. + Benachrichtigung + Benachrichtigungen bearbeiten + Derzeit gespielt Derzeit abgespielte Warteschleife + Passe den Abspielbildschirm an + Mehr als 10 Abspiel-Themes + + An + Nur über WLAN + + Erweiterte Testfunktionen + Anderes + + Passwort + Vergangene 3 Monate + + Songtext hier einfügen + Zugriff auf externen Speicher wurde verweigert. + Zugriff verweigert. + Personalisieren + Abspiel-Bildschirm und Interface bearbeiten + Vom lokalen Speicher wählen + + Bild auswählen + + Pinterest + Folge der Pinterest-Seite für Retro Music Design Inspirationen + Einfach + Die Medienbenachrichtigung bietet schnellen Zugriff auf Funktionen wie Abspielen/Pausieren etc. Medienbenachrichtigung + Leere Wiedergabeliste + Wiedergabeliste ist leer + Name der Wiedergabeliste + Wiedergabelisten + + Style der Albumdetails + + Geringere Unschärfe benötigt weniger Rechenleistung. + Unschärfe + + Nach Spieldauer filtern + + Album-Stil Audio + Schaltflächen Thema Bilder + Bibliothek Sperrbildschirm Wiedergabelisten + + Die Musik pausieren, wenn die Lautstärke auf 0 gestellt wird. Achtung! Wenn die Lautstärke wieder erhöht wird, wird die Musik weiter abgespielt. + Bei Stummstellung pausieren + Beachte, dass diese Funktion sich auf die Akkulaufzeit auswirkt. + Bildschirm anlassen + + Tippen oder wischen, um den Abspielbildschirm zu öffnen. Ist Wischen aktiv, kann die Navigationsleiste nicht transparent sein. + Wischgesten + "Nur auf Lollipop verfügbar." + + Schneefall-Effekt + Nutzt das Albumcover des derzeitigen Songs als Sperrbildschirmhintergrund. Benachrichtigungen, Navigation etc. + Die Musik in Ordnern von der schwarzen Liste wird nicht angezeigt. Stellt das Albumcover auf dem Sperrbildschirm unscharf. Dies kann Probleme mit Apps von Drittanbietern und Widgets verursachen. Karusselleffekt beim Albumcover auf dem Abspiel-Bildschirm. Die Designs Karte und Karte (Unschärfe) unterstützen diese Funktion nicht. Nutze das klassische Benachrichtigungsdesign @@ -225,8 +503,12 @@ Färbt die Navigationsleiste in die primäre Farbe. "F\u00e4rbt die Benachrichtigung basierend auf der dominierenden Farbe des Albumcovers." Dominierende Farbe wird vom Album- oder Interpretencover gewählt. + Zusätzliche Schaltflächen für den Mini-Player "Kann Wiedergabeprobleme auf einigen Geräten verursachen." + Genre-Tab + Home-Banner Kann die Qualität des Albumcovers erhöhen, bringt aber langsamere Bildladezeiten mit. Schalte dies nur ein, wenn du Probleme mit Albencovern von niedriger Auflösung hast. + Stelle Sichtbarkeit und Reihenfolge der Bibliothekkategorien ein. Sperrbildschirmbedienungen für Retro Music. Lizenzdetails für Open Source-Software Gerundete Ecken für Fenster, Albumcover etc. @@ -235,23 +517,27 @@ Mit Wiedergabe starten, sobald Kopfhörer verbunden sind. Shufflemodus wird ausgeschaltet, sobald neue Wiedergabe gestartet wird Falls Platz vorhanden ist, Lautstärkeregler auf Derzeit gespielt-Bildschirm zeigen - Zusätzliche Schaltflächen für den Mini-Player - Genre-Tab - Home-Banner + Albumcover zeigen - Beschriftung der Navigationselemente + Aussehen des Albumcovers + Stil des Album-Covers Album-Rasteransicht Gefärbte App-Schaltflächen Interpreten-Rasteransicht Reduziere Lautstärke bei Fokusverlust Lade Interpretenbild automatisch herunter + Schwarze Liste Albumcover unscharf stellen Equalizer wählen Klassisches Benachrichtigungsdesign Adaptive Farbe Farbige Benachrichtigung + Zusätzliche Schaltflächen Lückenlose Wiedergabe App Design + Genre-Tab anzeigen + Künstlerbilder auf der Startseite + Home-Banner Ignoriere Cover im Medienspeicher Zuletzt hinzugefügt-Playlistintervall Vollbildschirmsteuerung @@ -259,6 +545,7 @@ Aussehen Open Source-Lizenzen Abgerundete Ecken + Beschriftung der Navigationselemente Karussell-Effekt Dominante Farbe Vollbild-Modus @@ -267,209 +554,238 @@ Shuffle-Modus Lautstärkesteuerung Nutzerinfo - Zusätzliche Schaltflächen - Home-Banner - Genre-Tab anzeigen - Künstlerbilder auf der Startseite - Stil des Album-Covers - Style der Albumdetails - Kaskadierend + + Premium kaufen + Primärfarbe Die Primärfarbe, standardmäßig blau/grau, funktioniert nun auch mit dunklen Farben + + Themes für \"Now Playing\", Karussell-Effekte und mehr + + Profil + Kaufen + *Denke vor dem Kauf nach, frage nicht nach einer Rückerstattung. + Warteschleife + App bewerten + Gefällt dir die App? Lass\' es uns im Google Play Store wissen, um die Gesamterfahrung für alle zu verbessern! + Kürzlich gespielte Alben + Kürzlich gehörte Interpreten + Entfernen + Banner-Foto entfernen + Cover entfernen + Von der Blacklist löschen + Profilbild entfernen + Song von Wiedergabeliste entfernen %1$s von der Wiedergabeliste entfernen?]]> + Entferne Songs von Wiedergabeliste + %1$d Songs von der Wiedergabeliste?]]> + Wiedergabeliste umbenennen + + Fehler melden + + Einen Fehler melden + + Zurücksetzen + Interpretenbild zurücksetzen + Wiederherstellen + Vorherigen Kauf wiederherstellen. Starte die App bitte neu, um den Vorgang abzuschließen. Vorherige Käufe wiederhergestellt. + Kauf wird wiederhergestellt... + Retro Music-Equalizer + + Retro Music Pro + + Speichern + Als Datei speichern + Als Dateien speichern + Wiedergabeliste als %s gespeichert + Änderungen werden gespeichert + Medien scannen + %1$d von %2$d Dateien gescannt. + Durchsuche deine Bibliothek... + Alle auswählen + Banner-Foto auswählen + + Wähle eine Voreinstellung + + Ausgewähltes beschriftet + + Crashlogs senden + + Set + Wähle ein Interpretenbild + + Profilfoto festlegen + + App teilen + Shuffle + Einfach + Schlaftimer abgebrochen Schlaftimer gesetzt für %d Minuten. + + Folie + + Kleines Album + Sozial + Song + Songlänge + Songs + Sortierreihenfolge Aufsteigend Album Künstler + Komponist Datum Jahr Absteigend + Tut uns leid, aber dein Gerät unterstützt keine Spracheingabe! + Durchsuche deine Bibliothek + + Gestapelt + + Beginne Musik zu spielen. + + Für dich + Zeige deinen Namen auf dem Startbildschirm + Unterstütze die Entwicklung + + Wischen zum Entsperren + + Synchronisierter Songtext + System-Equalizer + Telegram Betritt die Telegram-Gruppe um über Fehler zu diskutieren, um Vorschläge zu geben usw. + Vielen Dank! + Die Audiodatei + Diesen Monat + Diese Woche + Dieses Jahr + Winzig + + Titel + Bedienfläche + Guten Nachmittag! Guten Tag! Einen schönen Abend! Guten Morgen! Gute Nacht! + Wie lautet dein Name? + Heute + Top Alben + Top Interpreten + "Songnummer (2 für Song 2 oder 3004 für CD3 Song 4)" + Songnummer + Übersetzen + Hilf\' uns, die App in deine Sprache zu übersetzen! + Twitter-Seite Teile dein Design mit RetroMusic - Song konnte nicht gespielt werden. - Als nächstes - Bild aktualisieren - Aktualisieren... - Version - Surroundsound - Websuche - Was möchtest du teilen? - Fenster - Stelle %1$s als deinen Klingelton ein. - %1$d ausgewählt - Jahr - Made with ❤️ in India - App-Daten zurücksetzen - Sorry! Ein unerwarteter Fehler ist aufgetreten. Die App-Daten zurückzusetzen, könnte helfen. - Fehler - Grundfarbe - Mehr als 10 Abspiel-Themes - Karussell-Effekt auf dem Abspielbildschirm - Runde Ecken - Aussehen des Albumcovers - Rund - Karussell - Passe den Abspielbildschirm an - Karte (Voll) - Profil - Beschreibung - Automatisch - Beschriftet + Unbeschriftet - Ausgewähltes beschriftet - Tiefe - Vertikale Drehung - Scharnier - Horizontale Drehung - Die Musik pausieren, wenn die Lautstärke auf 0 gestellt wird. Achtung! Wenn die Lautstärke wieder erhöht wird, wird die Musik weiter abgespielt. - Bei Stummstellung pausieren - Neuigkeiten - Für dich - Anpassen - Wischgesten - Tippen oder wischen, um den Abspielbildschirm zu öffnen. Ist Wischen aktiv, kann die Navigationsleiste nicht transparent sein. - Leeren - App teilen - Einen Fehler melden - Via GitHub senden - Login - Manuell senden - Du wirst auf die Issue Tracker-Seite weitergeleitet. - Problem - Titel - Beschreibung - Benutzername - Passwort - Geräteinfo - Fehler melden - Bitte nutze einen gültigen GitHub-Nutzernamen - Bitte nutze das korrekte GitHub-Passwort - Bitte gebe einen Titel ein - Bitte gebe eine Beschreibung ein - Meldung zu GitHub hochladen... - Fehler beim Melden - Falscher Nutzername oder Passwort - Ungültiger Token. Bitte kontaktiere den Entwickler. - Für diese Repository sind Fehlermeldungen nicht aktiviert. Bitte den Entwickler kontaktieren. - Ein unerwarteter Fehler ist aufgetreten. Bitte kontaktiere den Entwickler. - Geräteinformationen wurden kopiert - Deine Accountdaten werden ausschließlich zur Authentifizierung genutzt - Schneefall-Effekt - Schwarze Liste - Die Musik in Ordnern von der schwarzen Liste wird nicht angezeigt. - Crashlogs senden - Pinterest - Folge der Pinterest-Seite für Retro Music Design Inspirationen - Nach Spieldauer filtern - Fehler - Berechtigungsfehler - Klassik - Komponist - Komponist - Nächster Song - Letzter Song - Folie - Speichern - Bild auswählen - Profilfoto festlegen - Bearbeiten - Bibliothek - Wischen zum Entsperren - Songtext hinzufügen - Songtext hier einfügen - Synchronisierten Songtext hinzufügen - Synchronisierter Songtext - Klingelton festlegen - Retro Music erlauben, Audioeinstellungen zu verändern - Team, soziale Netzwerke - Erweiterte Testfunktionen - An - Wähle eine Voreinstellung + + Song konnte nicht gespielt werden. + + Als nächstes + + Bild aktualisieren + + Aktualisieren... + Upgrade auf Premium - Neue Wiedergabeliste - Letzten Song ganz spielen - Bild mit Farbverlauf - Gestapelt - + + Benutzername + + Version + + Vertikale Drehung + + Surroundsound + + Websuche + Willkommen, - Premium kaufen - Themes für \"Now Playing\", Karussell-Effekte und mehr - Alles abspielen - Beginne Musik zu spielen. - Tastatur - Zurücksetzen - Bibliothekkategorien - Stelle Sichtbarkeit und Reihenfolge der Bibliothekkategorien ein. - Schaltflächen - Album-Stil + + Was möchtest du teilen? + + Neuigkeiten + + Fenster + + Runde Ecken + + Stelle %1$s als deinen Klingelton ein. + + %1$d ausgewählt + + Jahr + + Du musst mindestens eine Kategorie auswählen + + Du wirst auf die Issue Tracker-Seite weitergeleitet. + + Deine Accountdaten werden ausschließlich zur Authentifizierung genutzt diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 50280f24..b132edca 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -1,100 +1,169 @@ - Allgemein Akzentfarbe Akzentfarbe des Farbthemas, Standard ist Grün + Über + Zu Favoriten hinzufügen Zur Wiedergabeliste hinzufügen Zur Playlist hinzufügen... + Wiedergabeliste leeren Playlist leeren + Löschen Vom Gerät löschen + Details + Zum Album gehen Zum Künstler gehen Zum Startverzeichnis gehen + Gewähren + Gittergröße Gittergröße (Querformat) + Nächstes + Play Spiel danach Play/Pause + Vorheriges + Aus Favoriten entfernen Von Wiedergabeliste entfernen Von Playlist entfernen + Umbenennen + Wiedergabeliste speichern + Scannen + Suche + Verwenden Als Klingelton verwenden Als Startverzeichnis verwenden + "Einstellungen" + Teilen + Alle zufällig wiedergeben Playlist zufällig wiedergeben + Sleep-Timer + Tag-Editor + Hinzufügen + Bild \nhinzufügen + "Zur Playlist hinzufügen" + "1 Titel wurde zur Wiedergabeliste hinzugefügt." + %1$d Titel wurden zur Wiedergabeliste hinzugefügt. + Album + Album Künstler + Titel oder Künstler ist leer. + Alben + Immer + Hey, schau dir diesen coolen Music Player an: https://play.google.com/store/apps/details?id=%s + Zufällig Top Songs + Retro Music - Big Retro Musik - Karte Retro Music - Classic Retro Music - Klein + Künstler + Künstler + Audio Fokus verweigert. + Biografie + Sehr schwarz + Blacklist + Timer stoppen + Änderungen + Changelog über Telegram-App verwaltet. + Leer + Blacklist leeren + Playlist leeren %1$s leeren? Dies kann nicht r\u00fcckg\u00e4ngig gemacht werden!]]> + Farben + Playlist konnte nicht erstellt werden. "Passendes Album Cover konnte nicht gedownloadet werden." %d Dateien konnte(n) nicht gescannt werden. + Erstellen + Playlist %1$s erstellt. + Spielt zur Zeit %1$s von %2$s. + + Dunkel + keine Lyrics + Playlist löschen %1$s löschen?]]> + Playlisten löschen + %1$s löschen?]]> + %1$d Playlisten löschen?]]> %1$d Songs löschen?]]> %1$d Songs gelöscht. + Möchtest du die Blacklist leeren? %1$s von der Blacklist entfernen?]]> + Spenden + Falls du denkst ich habe mir etwas für meine Arbeit verdient, kannst du hier gerne ein bisschen Geld hinterlassen. + Von Last.fm downloaden + Leer + Equalizer + Favoriten + Flach + Ordner + Genre + 1 2 3 @@ -103,58 +172,105 @@ 6 7 8 + Verlauf + Home + %1$d Song(s) in Playlist %2$s eingefügt. - Zeige nur deinen Namen auf dem Startbildschirm + Bitrate + Format Dateiname Dateipfad Größe + Sampling Rate + Länge + Zuletzt hinzugefügt + Lass uns etwas abspielen + Bibliothek + Lizenzen + Sehr weiß + Gelistete Dateien + Produkte werden geladen... + Lyrics + Mein Name + Meine Top Lieder + Nie + Neue Playlist + %s ist das neue Startverzeichnis. + Keine Alben + Keine Künstler + "Song abspielen und anschließend erneut versuchen." + Keinen Equalizer gefunden. + Keine Lyrics gefunden + Keine Playlisten + Keine Ergebnisse + Keine Songs + + Normal + %s ist nicht im Medienspeicher aufgeführt.]]> + Nichts zu scannen. + Benachrichtigung + Aktuelle Wiedergabeliste + Nur über Wi-Fi + Letzte 3 Monate + Berechtigung für den Zugriff auf externen Speicher verweigert. + Berechtigung verweigert. + Vom lokalen Speicher wählen + Die Abspielbenachrichtigung bietet Play/Pause-Steuerung Abspielbenachrichtigung + Leere Playlist + Playlist ist leer + Playlistname + Wiedergabelisten + Audio + Allgemein Bilder Sperrbildschirm Playlist + "Nur unter Android Lollipop verfügbar." + Aktuelles Album-Cover als Sperrbildschrim verwenden. Benachrichtigungen, Benachrichtigung etc. Verunschärft das Album-Cover des Sperrbildschirm. Kann Probleme mit anderen Apps und Widgets verursachen. @@ -165,9 +281,11 @@ "F\u00e4rbt die Benachrichtigung passend zum Albumcover" "Kann bei manchen Geräten Probleme beim Playback verursachen." Erhöt die Qualität des Album Covers aber verlangsamt die Ladezeit. Nur aktivieren, falls Probleme mit niedriger Auflösung entstehen. + Vollständige Musiksteuerung auf dem Sperrbildschirm einschalten. Details zu den Lizensen der Open Source Software Abgerundete Ecken für den Bildschirm, Album Cover, etc. Schalte den immersiven Modus ein. + Album Cover anzeigen Gefärbte App Shortcuts Lautstärke bei Fokusverlust reduzieren @@ -175,7 +293,6 @@ Album Cover weichzeichnen Klassisches Design für Benachrichtigungen. selbstanpassende Farbe - Dunkel Gefärbte Benachrichtigung Lückenlose Wiedergabe Hauptthema @@ -188,58 +305,98 @@ Vollbild App Lautstärkeregler Benutzerinformationen + Hauptfarbe + Primäre Farbe des Farbthemas, Standard ist indigo + Warteschlange + App bewerten + Hinterlasse eine positive Bewertung auf Google Play, wenn die Retro Music gefällt. + Entfernen + Cover entfernen + Von der Blacklist löschen + Songs von Playlist entfernen %1$s von der Playlist entfernen?]]> + Songs von Playlist entfernen + %1$d Songs von der Playlist entfernen?]]> + Playlist umbenennen + Käufe wiederhergestellt + Als Datei speichern Playlist gespeichert zu %s. + Änderungen speichern + %1$d von %2$d Dateien gescannt. + Bibliothek durchsuchen... + Zufall + Sleep-Timer abgebrochen Sleep-Timer wurde auf %d minuten eingestellt. + Song + Songdauer + Titel + Sortierreihenfolge + Tut uns leid! Dein Gerät unterstützt keine Spracheingabe + Bibliothek durchsuchen + + Zeige nur deinen Namen auf dem Startbildschirm + Entwickler unterstützen + Vielen Dank! + Die Audiodatei + Diesen Monat + Diese Woche + Dieses Jahr - Heute - Übersetzen - Song konnte nicht abgespielt werden. - Als Nächstes - Bild aktualisieren - Aktualisieren... - Version - Internetsuche - Was möchtest du teilen? - Wie heißt du? - %1$s als Klingelton verwenden. - %1$d ausgewählt - Jahr + Gute Nacht - Normal - Vollständige Musiksteuerung auf dem Sperrbildschirm einschalten. - Primäre Farbe des Farbthemas, Standard ist indigo - - - - + + Wie heißt du? + + Heute + + Übersetzen + + Song konnte nicht abgespielt werden. + + Als Nächstes + + Bild aktualisieren + + Aktualisieren... + + Version + + Internetsuche + + Was möchtest du teilen? + + %1$s als Klingelton verwenden. + + %1$d ausgewählt + + Jahr diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 74b6b8d5..a4e5439f 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -2,100 +2,173 @@ Χρώμα Τονισμού Το χρώμα τονισμού του θέματος, η προεπιλογή είναι το πράσινο. - Κανένα είδος + Σχετικά με... + Προσθήκη στα αγαπημένα Προσθήκη στην ουρά αναπ/γής Προσθήκη σε playlist... + Εκκαθάριση ουράς αναπαραγωγής Εκκαθάριση playlist + Διαγραφή Διαγραφή από την συσκευή + Λεπτομέρειες + Πήγαινε στο άλμπουμ Πήγαινε στον καλλιτέχνη Αναπήδηση σε κατάλογο εκκίνησης + Παραχώρηση + Μέγεθος Πλέγματος Μέγεθος Πλέγματος (landscape mode) + Επόμενο + Αναπαραγωγή Αναπαραγωγή επόμενου Παίξε/Παύση + Προηγούμενο + Αφαίρεση από τα αγαπημένα Αφαίρεση από την ουρά αναπ/γής Αφαίρεση από playlist + Μετονομασία + Αποθήκευση τρέχων ουράς αναπ/γής + Σάρωση + Αναζήτηση + Ορισμός Ορισμός ως ήχος κλήσης Ορισμός ως κατάλογο εκκίνησης + "Ρυθμίσεις" + Μοιράσου + Τυχαία αναπ/γη όλων Τυχαία αναπ/γη playlist + Χρονοδιακόπτης Ύπνου + Επεξεργασία Ετικετών + Προσθήκη + Προσθήκη εικόνας + "Προσθήκη στη playlist" + "Προστέθηκε 1 κομμάτι στην ουρά αναπ/γης." + Προστέθηκαν %1$d κομμάτια στην ουρά αναπ/γης. + Άλμπουμ + Καλλιτέχνης Άλμπουμ + "Ο τίτλος ή το όνομα του καλλιτέχνη είναι κενό" + Άλμπουμ + Πάντα + Τσεκάρετε αυτό το κούλ music player στο:https://play.google.com/store/apps/details?id=%s + Τυχαία αναπαραγωγή Κορυφαία Κομμάτια + Retro Music - Μεγάλο Retro Music - Κάρτα Retro Music - Κλασσικό Retro Music - Μικρό + Καλλιτέχνης + Καλλιτέχνες + Η εστίαση ήχου απορρίφθηκε. + Βιογραφία + Απλά Μαύρο + Blacklist + Ακύρωση τρέχων χρονοδιακόπτη + Λίστα Αλλαγών + Η Λίστα Αλλαγών συντηρείται από το Telegram app + Εκκαθάριση + Εκκαθάριση blacklist + Εκκαθάριση playlist %1$s? \u0394\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9 \u03b1\u03bd\u03b1\u03af\u03c1\u03b5\u03c3\u03b7!]]> + Χρώματα + \u0391\u03b4\u03c5\u03bd\u03b1\u03bc\u03af\u03b1 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1\u03c2 playlist. "\u0391\u03b4\u03c5\u03bd\u03b1\u03bc\u03af\u03b1 \u03bb\u03ae\u03c8\u03b7\u03c2 \u03c4\u03b1\u03b9\u03c1\u03b9\u03b1\u03c3\u03c4\u03bf\u03cd \u03b5\u03be\u03c9\u03c6\u03cd\u03bb\u03bb\u03bf\u03c5 \u03ac\u03bb\u03bc\u03c0\u03bf\u03c5\u03bc." Αδυναμία στο σκανάρισμα %d αρχείων. + Δημιουργία + Δημιουργήθηκε η playlist %1$s. + Παίζει το %1$s από τους %2$s. + + Κάπως Σκούρο + Δεν βρέθηκαν στίχοι. + Διαγραφή playlist %1$s?]]> + Διαγραφή αυτών των playlist + %1$s?]]> + %1$d playlist?]]> %1$d κομματιών?]]> Διαγράφηκαν %1$d κομμάτια. + Εκκαθάριση της blacklist? %1$s από τη blacklist?]]> + Δώρισε + "Αν σου άρεσε η εφαρμογή μπορείς να δωρίσεις εδώ. " + + Αγορασέ μου ένα + Λήψη από Last.fm + Κενό + Ισοσταθμιστής + Αγαπημένα + Επίπεδο + Φάκελοι + + Πλήρες + Είδος + 1 2 3 @@ -104,59 +177,108 @@ 6 7 8 + Ιστορικό + Αρχική - Πλήρες + Προστέθηκαν %1$d κομμάτια στη playlist %2$s. - Δείξτε το όνομά σας στην οθόνη κλειδώματος + Bitrate + Μορφή Όνομα Αρχείου Διαδρομή Αρχείου Μέγεθος + Συχνότητα δείγματος + Μήκος + Προστέθηκαν τελευταία + Ας παίξουμε κάτι + Περιηγήσου + Άδειες + Ξεκάθαρα Λευκό + Καταγραφή αρχείων + Φόρτωση προϊόντων... + Στίχοι + Το Όνομά μου + Τα Κορυφαία Κομμάτια μου + Ποτέ + Νέα playlist + %s είναι ο νέος κατάλογος εκκίνησης. + Κανένα άλμπουμ + Κανένας καλλιτέχνης + "Παίξτε ενα κομμάτι πρώτα, και ξαναπροσπαθήστε." + Δεν βρέθηκε ισοσταθμιστής. + + Κανένα είδος + Δεν βρέθηκαν στίχοι + Δεν βρέθηκαν playlists + Κανένα αποτέλεσμα + Δεν βρέθηκαν κομμάτια + + Κανονικό + %s δεν υπάρχει στο media store.]]> + Δεν υπάρχει στοιχείο προς σάρωση. + Ειδοποίηση + Ουρά \"Παίζει Τώρα\" + Μόνο από Wi-Fi + Τους περασμένους 3 μήνες + Η άδεια για προσπέλαση του external storage δεν παραχωρήθηκε. + Οι άδειες δεν παραχωρήθηκαν. + Επιλογή από Χώρο Αποθήκευσης + + Απλό + Η ειδοποίηση αναπαραγωγής προσφέρει κουμπιά για play/pause, κλπ. Ειδοποίηση Αναπαραγωγής + Κενή playlist + H Playlist είναι κενή + Όνομα Playlist + Playlists + Ήχος Εικόνες Οθόνη Κλειδώματος Playlists + "Διαθέσιμο μόνο στο Android Lollipop." + Χρησιμοποιεί το εξώφυλλο του τρέχων κομματιού ως φόντο οθόνης κλειδώματος. Ειδοποιήσεις, πλοήγηση, κλπ. Θολώνει το εξώφυλλο άλμπουμ στην οθόνη κλειδώματος. Μπορεί να προκαλέσει προβλήματα με εφαρμογές και widgets. @@ -167,10 +289,14 @@ "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03af\u03b6\u03b5\u03b9 \u03c4\u03b7\u03bd \u03b5\u03b9\u03b4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03bc\u03b5 \u03c4\u03bf \u03b6\u03c9\u03bd\u03c4\u03b1\u03bd\u03cc \u03c7\u03c1\u03ce\u03bc\u03b1 \u03c4\u03bf\u03c5 \u03b5\u03be\u03c9\u03c6\u03cd\u03bb\u03bb\u03bf\u03c5 \u03ac\u03bb\u03bc\u03c0\u03bf\u03c5\u03bc." "Μπορεί να προκαλέσει προβλήματα με την αναπαραγωγή σε κάποιες συσκευές." Μπορεί να αυξήσει την ποιότητα των εξωφύλλων άλμπουμ, αλλά προκαλεί αργή φόρτωση εικόνων. Ενεργοποιήστε αυτή την επίλογη μόνο εαν αντιμετωπίζετε προβλήματα με εξώφυλλα χαμηλής ανάλυσης. + Ενεργοποίηση διακοπτών ρύθμισης στην οθόνη κλειδώματος. Λεπτομέρειες άδειας για τη χρήση open source λογισμικού Στρογγυλεμένες άκρες για το παράθυρο, εξώφυλλα άλμπουμ, κλπ. + Ενεργοποίηση/ Απενεργοποίηση τίτλων από την κάτω μπάρα Ενεργοποίηση της επιλογής για χρήση πλήρους οθόνης + Όταν συνδεθούν ηχεία/ακουστικά , αρχίζει η αναπαραγωγή Εαν υπάρχει χώρος στην οθόνη αναπαραγωγής, ενεργοποιήστε τον πίνακα ελέγχου έντασης. + Εμφάνιση εξωφύλλου άλμπουμ. Χρωματιστά app shortcuts Μείωση έντασης όταν υπάρχουν εισερχόμενες ειδοποιήσεις @@ -178,7 +304,6 @@ Θόλωμα εξωφύλλων άλμπουμ Κλασσικό design ειδοποίησης Προσαρμοστικό Χρώμα - Κάπως Σκούρο Χρωματιστή ειδοποίηση Αναπαραγωγή χωρίς κενά Γενικό θέμα @@ -190,77 +315,120 @@ Άδειες λογισμικού open source Στρογγυλεμένες Άκρες Full screen εφαρμογή + Τίτλοι καρτελών + Αυτόματη αναπαραγωγή Πίνακας Ελέγχου Έντασης Πληροφορίες Χρήστη + Κύριο χρώμα + Το βασικό χρώμα του θέματος, η προεπιλογή είναι το άσπρο. + Ουρά + Βαθμολόγησε την εφαρμογή + Σας αρέσει αυτό το app; Γράψτε μας τις εντυπώσεις σας στο Google Play για να σας παρέχουμε μια καλύτερη εμπειρία + Αφαίρεση + Αφαίρεση Εξώφυλλου + Αφαίρεση από τη blacklist + Αφαίρεσε το κομμάτι από την playlist %1$s από τη playlist?]]> + Αφαίρεσε τα κομμάτια από την playlist + %1$d κομματιών από τη playlist?]]> + Μετονόμασε την playlist + + Επαναφορά εικόνας καλλιτέχνη + Επαναφορά προηγούμενων αγορών επιτυχής. + Retro Ισοσταθμιστής + Αποθήκευσε ως αρχείο Η Playlist αποθηκεύτηκε στο %s. + Αποθηκευόνται οι αλλαγές... + Σαρώθηκαν %1$d από %2$d αρχεία. + Αναζήτηση της βιβλιοθήκης σας... + + Ορισμός εικόνας καλλιτέχνη + Τυχαία Αναπαραγωγή + + Απλό + Χρονοδιακόπτης ύπνου ακυρώθηκε. Ο χρονοδιακόπτης ύπνου ορίστικε για %d λεπτά από τώρα. + Κομμάτι + Διάρκεια κομματιού + Κομμάτια + Σειρά Διάταξης + Ουπς! Η συσκευή σου δεν υποστηρίζει εισαγωγή φωνής + Αναζητήστε στην Βιβλιοθήκη + + Δείξτε το όνομά σας στην οθόνη κλειδώματος + Υποστήριξη ανάπτυξης της εφαρμογής + Σας ευχαριστούμε! + Το αρχείο ήχου + Αυτό το μήνα + Αυτή την εβδομάδα + Αυτό το χρόνο + Ταμπλό - Σήμερα - "Κομμάτι (2 για κομμάτι 2, ή 3004 για CD3 κομμάτι 4)" - Αριθμός Κομματιού - Μετάφραση - \u0394\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03ad\u03c3\u03b1\u03bc\u03b5 \u03bd\u03b1 \u03c0\u03b1\u03af\u03be\u03bf\u03c5\u03bc\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03ba\u03bf\u03bc\u03bc\u03ac\u03c4\u03b9. - Αμέσως επόμενο - Ενημέρωση εικόνας - Ενημέρωση σε εξέλιξη... - Έκδοση - Αναζήτηση στον ιστό - Τι θα θέλατε να μοιραστείτε; - Ποιό είναι το όνομά σας; - Ορισμός %1$s ως ήχου κλήσης. - %1$d έχει επιλεγεί - Χρονιά - Επαναφορά εικόνας καλλιτέχνη - Ορισμός εικόνας καλλιτέχνη - Αγορασέ μου ένα - Απλό - Καληνύχτα - Καλό Απόγευμα + Καλό Μεσημέρι - Καλημέρα Καλημέρα - Απλό - Όταν συνδεθούν ηχεία/ακουστικά , αρχίζει η αναπαραγωγή - Αυτόματη αναπαραγωγή - Ενεργοποίηση/ Απενεργοποίηση τίτλων από την κάτω μπάρα - Τίτλοι καρτελών - Κανονικό - Ενεργοποίηση διακοπτών ρύθμισης στην οθόνη κλειδώματος. - Το βασικό χρώμα του θέματος, η προεπιλογή είναι το άσπρο. - - - - + Καλό Απόγευμα + Καλημέρα + Καληνύχτα + + Ποιό είναι το όνομά σας; + + Σήμερα + + "Κομμάτι (2 για κομμάτι 2, ή 3004 για CD3 κομμάτι 4)" + + Αριθμός Κομματιού + + Μετάφραση + + \u0394\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03ad\u03c3\u03b1\u03bc\u03b5 \u03bd\u03b1 \u03c0\u03b1\u03af\u03be\u03bf\u03c5\u03bc\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03ba\u03bf\u03bc\u03bc\u03ac\u03c4\u03b9. + + Αμέσως επόμενο + + Ενημέρωση εικόνας + + Ενημέρωση σε εξέλιξη... + + Έκδοση + + Αναζήτηση στον ιστό + + Τι θα θέλατε να μοιραστείτε; + + Ορισμός %1$s ως ήχου κλήσης. + + %1$d έχει επιλεγεί + + Χρονιά diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index e8daf0dd..8c9d90a3 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -1,143 +1,297 @@ - Tienes que seleccionar al menos una categoría. - Album pequeño + Equipo, enlaces sociales + Color de énfasis El color del tema de acentuado, por defecto verde azulado. + Acerca de + Añadir a favoritos Añadir a cola de reproducción Añadir a lista de reproducción + Vaciar cola de reproducción Limpiar lista de reproducción + Eliminar Eliminar del dispositivo + Detalles + Ir al álbum Ir al artista Ir al género Ir al directorio de inicio + Permitir + Tamaño de la cuadrícula Tamaño de la cuadricula (espacio) + + Nueva lista de reproducción + Siguiente + Reproducir + Reproducir todo Reproducir siguiente Reproducir/Pausa + Anterior + Quitar de favoritos Quitar de la cola de reproducción Quitar de la lista de reproducción + Renombrar + Guardar cola de reproducción + Escanear Escanear directorio + Buscar - Establecer + Iniciar Establecer como tono de llamada Establecer como directorio de inicio + "Ajustes" + Compartir + Mezclar todo Mezclar lista de reproducción + Temporizador + Orden de clasificación + Editor de etiquetas + Adaptado + Añadir + + Añadir letra + Añadir\nfoto + "Añadir a lista de reproducción" + + Añadir retardo para letras + "Se ha añadido 1 canción a la cola de reproducción." + Se han añadido %1$d canciones a la cola de reproducción. + Álbum + "Álbum del artista " + El título o artista está vacío. + Álbumes + Siempre + ¡Hola! Echa un vistazo a este genial reproductor de música en: https://play.google.com/store/apps/details?id=%s + Mezclar Canciones Top + Retro Music - Grande Retro Music - Tarjeta Retro Music - Clásico Retro Music - Pequeño Retro Music - Texto + Artista + Artistas + Enfoque de audio denegado. + Cambiar la configuración de sonido y ajustes del ecualizador + + Automático + + Elegir color del tema + Potenciador de bajos + + Biografía + Biografía + Solo Negro + Lista negra + Desenfoque + Tarjeta desenfocada - Mantener la pantalla encendida - Tenga en cuenta que habilitar esta función puede afectar a la vida útil de la batería. - Cantidad de desenfoque - Cantidad de desenfoque aplicado para los temas con desenfoque, más bajo es más rápido - Retro Music Pro + + Es imposible enviar el reporte + Token de acceso invalido. Por favor, contacta con el desarrollador de la app. + Los problemas no están habilitados para el repositorio seleccionado. Por favor, póngase en contacto con el desarrollador de la aplicación. + Un error inesperado a ocurrido. Por favor, contacta col el desarrollador de la app. + Usuario o contraseña incorrecta + Problemas + Enviar manualmente + Por favor, describe el problema + Por favor, introduzca contraseña valida de GitHub + Por favor, escribe el titulo del problema + Por favor, introduzca usuario valido de GitHub + Ha ocurrido un error inesperado. Sentimos lo ocurrido, prueba a \"Limpiar datos de la aplicación\". Si el problema persiste envíanos un email. + Enviando el reporte a GitHub... + Envía usando la cuenta de GitHub + Cancelar + Tarjeta - Tarjeta coloreada + Circular - Imagen + + Tarjeta coloreada + Tarjeta + + Carrusel + + Efecto carrusel en la pantalla de reproducción + + En cascada + Emitir + Registro de cambios + Registro de cambios continuo en el canal de Telegram + + Circular + + Clásico + Limpiar + + Limpiar datos de la aplicación + Vaciar lista negra + + Limpiar cola de reproducción + Vaciar lista de reproducción %1$s? \u00a1Esta acci\u00f3n no se puede deshacer!]]> + Cerrar + Color + Color - Día Noche (alpha) + Colores + + Compositor + + Información del dispositivo copiado al portapapeles. + Imposible crear la lista de reproducci\u00f3n. "No se pudo descargar la portada del \u00e1lbum correspondiente." No se pudo restaurar la compra. No se pudieron escanear los archivos. + Crear + Lista de reproducción creada. + Miembros y colaboradores + Estás escuchando a + Algo oscuro + + Día Noche (alpha) + No hay letras + Eliminar lista de reproducción %1$s?]]> + Eliminar listas de reproducción + + Eliminar canción + + Eliminar canciones + %1$d canciones?]]> - Eliminar canción - Eliminar canciones Se han eliminado %1$d canciones. + + Profundidad + + Descripción + + Información del dispositivo + + Permitir a Retro Music modificar los ajustes de audio + + Establecer como tono + ¿Quieres limpiar la lista negra? %1$s de la lista negra?]]> + Donar + "Si crees que merezco que me paguen por mi trabajo, puedes donarme un poco de dinero aquí " + Invitarme a: + Descargar de last.fm + + Editar + Editar carátula + Vacío + Ecualizador + + Error + Preguntas frecuentes + Favoritos + + Termina la última canción + + Fit + Plano + Carpetas + Para ti + Lleno + + Tarjeta completa + Cambiar el tema y los colores de la aplicación Apariencia + Género + Géneros + Siga el proyecto en GitHub + Únete a la comunidad de Google Plus, donde puedes pedir ayuda o seguir las actualizaciones de Retro Music + 1 2 3 @@ -146,77 +300,199 @@ 6 7 8 + + + + Bisagra + Historial + Inicio + + Giro Horizontal + + Imagen + + Imagen de degradado + Cambiar los ajustes de descarga para imágenes de artista + Se han añadido %1$d canciones a la lista %2$s. + Instagram Comparte tu configuración de Retro Music en Instagram + + Teclado + Tasa de bits + Formato Nombre de archivo Ruta de archivo Tamaño + Tasa de muestreo + Tamaño + + Con etiquetas + Último agregado + + Última canción + Vamos a poner algo de música + Biblioteca + + Categorías biblioteca + Licencias + Blanco + Listado de archivos + Cargando productos... + + Iniciar sesión + "Letras " + + Hecho con ❤️ en India + Material + + Error + + Error de permisos + Mi nombre + Más reproducidas + Nunca + "Nueva foto de perfil " + Nueva lista de reproducción + Nueva foto de perfil + %s es el nuevo directorio de inicio. + + Próxima canción + Sin álbumes + Sin artistas + "Reproduce una canción primero e intenta de nuevo." + No se encontró ningún ecualizador + Sin géneros + No se encontró la letra + Sin listas de reproducción + No se ha encontrado ninguna compra. + Sin resultados + Sin canciones + Normal + Letra normal + Normal + %s no está listado en el almacenamiento interno.]]> + Nada que escanear + Notificación + Personalizar el estilo de la notificación + Reproduciendo Cola de reproducción + Personalizar la pantalla de reproducción + Más de 9 temas de reproducción + Sólo con Wi-Fi + + Funciones avanzadas experimentales + Otro + + Contraseña + Últimos 3 meses + + Pegar letra aquí + Permiso para acceder al almacenamiento externo denegado. + Permisos denegados. + Personalizar + Personalizar la pantalla de reproducción y los controles de la interfaz + Seleccionar del almacenamiento local + + Escoger imagen + + Pinterest + Síguenos en Pinterest para inspirarte en el diseño de Retro Music. + Plano + La notificación de reproducción muestra acciones de reproducción/pausa, etc. Notificación de reproducción + Lista de reproducción vacía + La lista de reproducción está vacía + Nombre de la lista de reproducción + Listas + + Estilo de la información del álbum + + Cantidad de desenfoque aplicado para los temas con desenfoque, más bajo es más rápido + Cantidad de desenfoque + + Filtro por duración de la canción + + Estilo del álbum Audio + Controles Tema Imágenes + Biblioteca Pantalla de bloqueo Listas de reproducción + + Pausa la reproducción cuando el volumen disminuye a cero y comienza a reproducir cuando se aumenta el nivel de volumen. ¡Cuidado! También funciona aun no estando la aplicación en primer plano. + Pausar en silencio + Tenga en cuenta que habilitar esta función puede afectar a la vida útil de la batería. + Mantener la pantalla encendida + + Toca para abrir con o desliza sin la barra de navegación transparente de la pantalla de reproducción + Hacer clic o deslizar + "Sólo disponible en Lollipop." + + Efecto de caída de nieve + Utiliza la portada del álbum de la canción que se está reproduciendo como fondo de la pantalla de bloqueo Baja el volumen cuando se reproduce un sonido del sistema o se recibe una notificación + Las carpetas en la lista negra serán ocultadas de tu biblioteca. Desenfoca la portada del álbum en la pantalla de bloqueo. Puede causar problemas con aplicaciones y widgets de terceros Efecto carrusel para la caratula en la pantalla de reproducción. Tenga en cuenta que los temas tarjeta y tarjeta desenfocada no funcionarán Usa el diseño clásico de notificaciones @@ -225,8 +501,12 @@ Colorea la barra de navegación en el color primario "Colorea la notificaci\u00f3n en el color vibrante de la portada del \u00e1lbum" El color dominante se elegirá de la portada del álbum o del artista + Añade controles extra para el mini reproductor "Puede causar problemas de reproducción en algunos dispositivos." + Activa la pestaña géneros + Muestra la portada en la pantalla de inicio Puede aumentar la calidad de la portada del álbum, pero reduce el tiempo de carga de la imagen. Solo habilite esto si tiene problemas con obras de arte de baja resolución + Configure la visibilidad y el orden de las categorías de la biblioteca. Utiliza los controles de pantalla de bloqueo personalizados de Retro Music Detalles de licencia para software open source Redondea los bordes de la aplicación @@ -235,23 +515,27 @@ Inicia el reproductor inmediatamente después de conectar unos auriculares El modo aleatorio se desactivará al reproducir una nueva lista de canciones Si hay espacio suficiente, muestra los controles de volumen en la pantalla de reproducción - Añade controles extra para el mini reproductor - Activa la pestaña géneros - Muestra la portada en la pantalla de inicio + Mostrar portada del álbum - Estilo de las pestañas de título + Tema de la portada del álbum + Estilo de la caratula en reproducción Cuadrícula de álbums Atajos de la aplicación coloreados Cuadrícula de artistas Reducir volumen al perder enfoque Descargar imágenes de artista automáticamente + Lista negra Desenfocar portada del álbum Elegir ecualizador Diseño clásico para notificaciones Color adaptativo Notificación coloreada + Controles adicionales Reproducción sin interrupciones Tema de la aplicación + Mostrar géneros + Cuadrícula de inicio de artistas + Portada de inicio Ignorar carátulas provenientes del almacenamiento local Intervalo últimas canciones añadidas Controles de pantalla completa @@ -259,6 +543,7 @@ Tema de la pantalla de reproducción Licencias de código abierto Bordes + Estilo de las pestañas de título Efecto carrusel Color dominante Aplicación a pantalla completa @@ -267,208 +552,238 @@ Modo aleatorio Controles de volumen Información del usuario - Controles adicionales - Portada de inicio - Mostrar géneros - Cuadrícula de inicio de artistas - Estilo de la caratula en reproducción - Estilo de la información del álbum - En cascada + + Obtener premium + Color primario El color de tema primario, azul grisáceo por defecto, por ahora funciona con colores oscuros + + Temas en reproducción, efecto Carrusel, tema de color y más ... + + Perfil + Comprar + *Piense antes de comprar, no solicite un reembolso. + Cola + Valorar la aplicación + ¿Te gusta esta aplicación? Háganos saber en Google Play Store cómo podemos hacerlo aún mejor + Álbumes recientes + Artistas recientes + Eliminar + Eliminar foto de portada + Eliminar carátula + Quitar de la lista negra + Eliminar foto de perfil + Eliminar canción de la lista de reproducción %1$s de la lista de reproducción?]]> + Eliminar canciones de la lista de reproducción + %1$d canciones de la lista de reproducción?]]> + Renombrar lista de reproducción + + Reporta un problema + + Reporta problemas + + Restablecer + Restablecer imagen de artista + Restaurar + Restablecer compra anterior. Reinicia la aplicación para disfrutar de todas las funciones. Compra anterior restaurada. + Restableciendo compra... + Ecualizador de Retro Music + + Retro Music Pro + + Guardar + Guardar como archivo + Guardar como archivos + Lista de reproducción guardada en %s. + Guardando cambios + Escanear archivos + Archivos escaneados %1$d de %2$d + Buscar en tu biblioteca... + Seleccionar todo + Elegir una foto de portada + + Seleccionar preset + + Seleccionado + + Enviar registro de depuración + + Establecer + Establecer imagen de artista + + Establecer imagen de perfil + + Comparte la app + Mezclar + Simple + Temporizador cancelado Temporizador programado para %d minutos + + Presentación + + Album pequeño + Social + Canción + Duración de la canción + Canciones + Orden de clasificación Ascendente Álbum Artista + Compositor Fecha Año Descendente + ¡Lo sentimos! Tu dispositivo no es compatible con las entradas por voz + Buscar en tu biblioteca + + Apilado + + Comenzar a reproducir música. + + Sugerencias + Solo mostrar tu nombre en la pantalla de inicio + Apoyar el desarrollo + + Desbloquear + + Letra sincronizada + Ecualizador del sistema + Telegram Únase al grupo de Telegram para discutir errores, hacer sugerencias, presumir y más + ¡Gracias! + El archivo de audio + Este mes + Esta semana + Este año + Pequeño + + Título + Panel + Buenas tardes Buen día Buenas tardes Buenos días Buenas noches + Cómo te llamas + Hoy + Mejores álbumes + Mejores artistas + "Pista (2 para la pista 2 o 3004 para la pista 4 del CD3)" + Número de pista + Traducir + Ayúdanos a traducir la aplicación a tu idioma + Twitter Comparte tu diseño con Retro Music - No se pudo reproducir esta canci\u00f3n. - Siguientes - Actualizar imagen - Actualizando... - Versión - Virtualizador - Búsqueda en la web - ¿Qué quieres compartir? - Ventana - Establecer %1$s como tono de llamada. - %1$d seleccionado - Año - Hecho con ❤️ en India - Limpiar datos de la aplicación - Ha ocurrido un error inesperado. Sentimos lo ocurrido, prueba a \"Limpiar datos de la aplicación\". Si el problema persiste envíanos un email. - Error - Elegir color del tema - Más de 9 temas de reproducción - Efecto carrusel en la pantalla de reproducción - Bordes redondeados - Tema de la portada del álbum - Circular - Carrusel - Personalizar la pantalla de reproducción - Tarjeta completa - Perfil - Biografía - Automático - Con etiquetas + Sin etiquetas - Seleccionado - Profundidad - Giro vertical - Bisagra - Giro Horizontal - Pausa la reproducción cuando el volumen disminuye a cero y comienza a reproducir cuando se aumenta el nivel de volumen. ¡Cuidado! También funciona aun no estando la aplicación en primer plano. - Pausar en silencio - Novedades - Sugerencias - Fit - Hacer clic o deslizar - Toca para abrir con o desliza sin la barra de navegación transparente de la pantalla de reproducción - Limpiar cola de reproducción - Comparte la app - Reporta problemas - Envía usando la cuenta de GitHub - Iniciar sesión - Enviar manualmente - Serás redirigido al sitio web para reportar problemas. - Problemas - Título - Descripción - Nombre de Usuario - Contraseña - Información del dispositivo - Reporta un problema - Por favor, introduzca usuario valido de GitHub - Por favor, introduzca contraseña valida de GitHub - Por favor, escribe el titulo del problema - Por favor, describe el problema - Enviando el reporte a GitHub... - Es imposible enviar el reporte - Usuario o contraseña incorrecta - Token de acceso invalido. Por favor, contacta con el desarrollador de la app. - Los problemas no están habilitados para el repositorio seleccionado. Por favor, póngase en contacto con el desarrollador de la aplicación. - Un error inesperado a ocurrido. Por favor, contacta col el desarrollador de la app. - Información del dispositivo copiado al portapapeles. - La información de tu cuenta es solo para autenticar tu identidad. - Efecto de caída de nieve - Lista negra - Las carpetas en la lista negra serán ocultadas de tu biblioteca. - Enviar registro de depuración - Pinterest - Síguenos en Pinterest para inspirarte en el diseño de Retro Music. - Filtro por duración de la canción - Error - Error de permisos - Clásico - Compositor - Compositor - Próxima canción - Última canción - Presentación - Guardar - Escoger imagen - Establecer imagen de perfil - Editar - Biblioteca - Desbloquear - Añadir letra - Pegar letra aquí - Añadir retardo para letras - Letra sincronizada - Establecer como tono - Permitir a Retro Music modificar los ajustes de audio - Equipo, enlaces sociales - Funciones avanzadas experimentales - Seleccionar preset + + No se pudo reproducir esta canci\u00f3n. + + Siguientes + + Actualizar imagen + + Actualizando... + Mejorado a premium - Nueva lista de reproducción - Termina la última canción - Imagen de degradado - Apilado - + + Nombre de Usuario + + Versión + + Giro vertical + + Virtualizador + + Búsqueda en la web + Bienvenido, - Obtener premium - Temas en reproducción, efecto Carrusel, tema de color y más ... - Reproducir todo - Comenzar a reproducir música. - Teclado - Restablecer - Categorías biblioteca - Configure la visibilidad y el orden de las categorías de la biblioteca. - Controles - Estilo del álbum + + ¿Qué quieres compartir? + + Novedades + + Ventana + + Bordes redondeados + + Establecer %1$s como tono de llamada. + + %1$d seleccionado + + Año + + Tienes que seleccionar al menos una categoría. + + Serás redirigido al sitio web para reportar problemas. + + La información de tu cuenta es solo para autenticar tu identidad. diff --git a/app/src/main/res/values-es-rUS/strings.xml b/app/src/main/res/values-es-rUS/strings.xml index 6f450455..e2fb3e3e 100644 --- a/app/src/main/res/values-es-rUS/strings.xml +++ b/app/src/main/res/values-es-rUS/strings.xml @@ -1,139 +1,273 @@ - "Portada Pequeña -" Hello El color de énfasis del tema, por defecto es verde azulado + Acerca de Retro Music Player + Añadir a favoritos Añadir a la cola de reproducción Añadir a la lista de reproducción + Borrar cola de reproducción Limpiar lista + Eliminar Eliminar del dispositivo + Detalles + Ir al álbum Ir al artista Ir a género Ir al inicio + Permitir + Tamaño de cuadrícula Tamaño de cuadrícula (horizontal) + Siguiente + Reproducir Reproducir siguiente Reproducir/Pausar + Anterior + Borrar de favoritos Borrar de la cola de reproducción Remover de la lista de reproducción + Renombrar + Guardar cola de reproducción + Escanear Escanear directorio + Buscar + Iniciar Establecer como tono de llamada Establecer como directorio de inicio + "Ajustes" + Compartir + Aleatorio Reproducción aleatoria de lista + Temporizador de apagado + Ordenar por + Editor de etiquetas + Adaptativo + Agregar + Agregar \nfoto + "Agregar a la lista" + "Se agregó 1 canción a la lista" + %1$d canciones añadidas a la cola de reproducción. + Álbum + Artista del álbum + El título o artista está vacío. + Álbumes + Siempre + Echa un vistazo a este reproductor de música en: https://play.google.com/store/apps/details?id=%s + Aleatorio Hello + Retro Music - Grande Retro Music - Tarjeta Retro Music - Clásico Retro Music - Pequeño Retro Music - Texto + Artista + Artistas + Enfoque de audio denegado + Modificar los ajustes de sonido y los controles del ecualizador + + Automático + + Color base del tema + Refuerzo de Graves + + Biografía + Biografía + Negro + Lista Negra + Desenfoque + Tarjeta con desenfoque - Mantener la pantalla encendida - Tenga en cuenta que habilitar esta función puede afectar la duración de la batería - Cantidad de desenfoque - Cantidad de desenfoque aplicado a los temas de desenfoque, más bajo es más rápido - Retro Music Pro + + No se puede enviar el reporte + Token de acceso inválido. Por favor, contacta con el desarrollador de la aplicación + Los problemas no están habilitados para el repositorio seleccionado. Por favor, contacta con el desarrollador de la aplicación + Se ha producido un error inesperado. Por favor, contacta con el desarrollador de la aplicación + Usuario o contraseña incorrectos + Problemas + Enviar manualmente + Por favor, escribe la descripción del problema + Por favor, introduce tu contraseña de GitHub + Por favor, introduce un título para el problema + Por favor, introduce tu nombre de usuario de GitHub + Ocurrió un error inesperado. Lamento que hayas encontrado este error, si sigue fallando, borra los datos de la aplicación + Subiendo reporte a GitHub... + Enviar usando la cuenta de Github + Cancelar + Tarjeta - Tarjeta coloreada + Circular - Imagen + + Tarjeta coloreada + Tarjeta + + Carrusel + + Efecto carrusel en la ventana de reproducción + + En cascada + Emitir + Lista de cambios + La lista de cambios se encuentra disponible en el canal de Telegram + + Circular + Limpiar + + Borrar datos de la aplicación + Limpiar lista negra + + Limpiar la cola + Limpiar lista %1$s? \u00a1Esto no se puede deshacer!]]> + Cerrar + Color + Color + Colores + + Información del dispositivo copiada al portapapeles + No se pudo crear la lista "No se pudo descargar una portada de \u00e1lbum coincidente" No se pudo restaurar la compra No se pudieron escanear %d archivos + Crear + Se creó la lista reproducción %1$s + Miembros y contribuidores + Estás escuchando %1$s de %2$s + Oscuro + No hay letras + Eliminar lista %1$s?]]> + Eliminar listas + %1$s?]]> + %1$d listas?]]> %1$d canciones?]]> Se eliminaron %1$d canciones + + Profundidad + + Descripción + + Información del dispositivo + ¿Deseas limpiar la lista negra? %1$s de la lista negra?]]> + Donar + Si crees que merezco que me paguen por mi trabajo, puedes dejar algo de dinero aquí + Cómprame: + Descargar desde Last.fm + + Editar + Editar portada + Vacío + Ecualizador + + Error + Preguntas más frecuentes + Favoritos + + Ajustado + Plano + Carpetas + Para ti + Completo + + Tarjeta completa + Cambia el tema y colores de la aplicación Apariencia + Género + Géneros + Bifurca el proyecto en GitHub + Únete a nuestra comunidad de Google Plus, donde puedes pedir ayuda o seguir las actualizaciones de Retro Music + 1 2 3 @@ -142,77 +276,169 @@ 6 7 8 + + Giro + Historial + Inicio + + Giro horizontal + + Imagen + Cambia la configuración de descarga de imágenes de artistas + Añadiste %1$d canciones a la lista %2$s + Instagram Comparte tu configuración de Retro Music para exhibirlo en Instagram + Tasa de bits + Formato Nombre del archivo Ruta de archivo Tamaño + Frecuencia de muestreo + Duración + + Etiquetado + Agregados recientemente + Vamos a reproducir algo + Biblioteca + Licencias + Blanco + Listado de archivos + Cargando productos... + + Inicio de sesión + Letras + + Hecho con ❤️ en India + Material + Mi Nombre + Más reproducidas + Nunca + Nueva foto de portada + Nueva lista + Nueva foto de perfil + %s es el nuevo directorio de inicio + No hay álbumes + No hay artistas + "Reproduce una canción primero e intenta de nuevo" + No se encontró ecualizador + No hay géneros + No se encontraron letras + No hay listas + No se encontraron compras previas + Sin resultados + No hay canciones + Normal + Letras normales + Normal + %s no se encuentra listado en los medios almacenados]]> + Nada para escanear + Notificaciones + Personaliza el estilo de la notificación + Reproduciendo ahora Cola de reproducción actual + Personalizar la ventana de reproducción + Más de 9 temas para la ventana de reproducción + Solo con Wi-Fi + Otro + + Contraseña + Últimos 3 meses + Permiso para acceder al almacenamiento externo denegado + Permisos denegados + Personalizar + Personaliza la ventana de reproducción y controles de interfaz de usuario + Seleccionar del almacenamiento interno + Sencillo + La notificación de reproducción proporciona acciones para reproducir/pausar, etc. Notificación de reproducción + Lista de reproducción vacía + La lista de reproducción está vacía + Nombre de la lista + Listas + + Estilo de detalle de álbum + + Cantidad de desenfoque aplicado a los temas de desenfoque, más bajo es más rápido + Cantidad de desenfoque + Audio Tema Imágenes Pantalla de bloqueo Listas de reproducción + + Pausa la reproducción en cero y la reproduce después de subir el volumen. Aviso: cuando subas el volumen, la música empezará a sonar incluso fuera de la aplicación + Pausar en cero + Tenga en cuenta que habilitar esta función puede afectar la duración de la batería + Mantener la pantalla encendida + + Click para abrir con o sin navegación transparente de la pantalla de reproducción actual + Hacer Clic o Deslizar + "Sólo disponible en Lollipop" + + Efecto \"Snow Fall\" + Utiliza la portada del álbum de la canción que se reproduce como fondo de pantalla de bloqueo Baja el volumen cuando se reproduzca un sonido del sistema o se reciba una notificación + El contenido de las carpetas de la lista negra se oculta de la biblioteca Desenfoca la portada del álbum en la pantalla de bloqueo. Puede causar problemas con aplicaciones y widgets de terceros Efecto carrusel en la portada del álbum en la ventana de reproducción. No funciona en los temas \"Desenfoque\" y \"Tarjeta con desenfoque\" Utiliza el diseño clásico de notificación @@ -221,7 +447,10 @@ Colorea la barra de navegación con el color principal "Colorea la notificaci\u00f3n con el color vibrante de la portada del \u00e1lbum" El color dominante se elegirá de la imagen del álbum o artista + "Añadir controles extra al minireproductor " "Puede causar problemas de reproducción en algunos dispositivos" + Mostrar/Ocultar pestaña de géneros + Mostar/Ocultar banner de pantalla de inicio Puede aumentar la calidad de la portada del álbum, pero a veces puede tardar en cargar. Actívalo solo si tienes problemas con portadas de baja resolución Utiliza los controles de pantalla de bloqueo personalizados de Retro Music Detalles de la licencia para software de código abierto @@ -231,23 +460,27 @@ Empezar a reproducir inmediatamente después de conectar los auriculares El modo aleatorio se desactivará cuando se reproduzca una nueva lista de canciones Muestra los controles de volumen en la ventana de reproducción, si hay suficiente espacio disponible - "Añadir controles extra al minireproductor " - Mostrar/Ocultar pestaña de géneros - Mostar/Ocultar banner de pantalla de inicio + Mostrar portada del álbum - Tipo de títulos de pestañas + Tema de la portada del álbum + Estilo de portada del álbum en reproducción Cuadrícula del álbum Accesos directos coloreados Cuadrícula de artistas Reducir volumen al recibir notificaciones Descarga automática de imágenes de artistas + Lista Negra Desenfocar portada del álbum Elegir ecualizador Diseño clásico de notificación Color adaptativo Notificación coloreada + Controles extra Reproducción sin pausas Tema de la aplicación + Mostrar pestaña de géneros + Cuadrícula de artista en pantalla de inicio + Banner de pantalla de inicio Ignorar las portadas de la biblioteca de medios Intervalo de la lista \"Añadidos Recientemente\" Controles a pantalla completa @@ -255,6 +488,7 @@ Tema de la ventana de reproducción Licencias de código abierto Esquinas redondeadas + Tipo de títulos de pestañas Efecto carrusel Color dominante App a pantalla completa @@ -263,58 +497,106 @@ Aleatorio Controles de volumen Información de usuario - Controles extra - Banner de pantalla de inicio - Mostrar pestaña de géneros - Cuadrícula de artista en pantalla de inicio - Estilo de portada del álbum en reproducción - Estilo de detalle de álbum - En cascada + Color principal El color principal del tema -por defecto es azul grisáceo- temporalmente funciona con colores oscuros + + Perfil + Comprar + *Piensa antes de comprar, no pidas un reembolso + Cola + Calificar app + Te gusta la aplicación? Haznos saber en Google Play Store cómo podemos hacerla aún mejor + Álbumes recientes + Artistas recientes + Eliminar + Eliminar foto del banner + Eliminar portada + Eliminar de la lista negra + Eliminar foto de perfil + Eliminar canción de la lista %1$s de la lista?]]> + Eliminar canciones de la lista + %1$d canciones de la lista?]]> + Renombrar lista + + Reporta un problema + + Reportar un error + Restablecer imagen de artista + Restaurar + Compras previas restauradas. Por favor, reinicia la aplicación para hacer uso de todas las funciones Compras previas restauradas + Restaurando compra... + Ecualizador Retro + + Retro Music Pro + Guardar como archivo + Guardar como archivos + Guardar lista de reproducción a %s + Guardando cambios + Escanear medios + Escaneados %1$d de %2$d archivos + Busca en tu biblioteca... + Seleccionar todos + Seleccionar foto del banner + + Seleccionado + Establecer imagen de artista + + Compartir app + Aleatorio + Simple + Temporizador apagado Temporizador establecido para %d minutos desde ahora + + "Portada Pequeña +" + Social + Canción + Duración de la canción + Canciones + Ordenar por Ascendente Álbum @@ -322,107 +604,101 @@ Fecha Año Descendente + ¡Lo sentimos! Su dispositivo no soporta la entrada de voz + Busca en tu biblioteca + + Recomendaciones + Muestra tu nombre en la pantalla de inicio + Soporte de desarrollo + + Letras Sincronizadas + Ecualizador del Sistema + Telegram Únete al grupo de Telegram para discutir los errores y hacer sugerencias + ¡Gracias! + El archivo de audio + Este mes + Esta semana + Este año + Pequeño + + Título + "Tablero " + ¡Buenas Tardes! ¡Buen Día! ¡Buenas Tardes! ¡Buenos días! Buenas noches + Cuál es tu nombre + Hoy + "Top álbumes " + Artistas más reproducidos + "Pista (2 para pista 2 o 3004 para CD3 pista 4)" + Número de pista + Traducir + Ayúdanos a traducir la aplicación a tu idioma + Twitter Comparte tu diseño con Retro Music - No se pudo reproducir esta canci\u00f3n - A continuación - Actualizar imagen - Actualizando... - Versión - Virtualizador - Búsqueda web - ¿Qué quieres compartir? - Ventana - Establecer %1$s como tono de llamada - %1$d seleccionado - Año - Hecho con ❤️ en India - Borrar datos de la aplicación - Ocurrió un error inesperado. Lamento que hayas encontrado este error, si sigue fallando, borra los datos de la aplicación - Error - Color base del tema - Más de 9 temas para la ventana de reproducción - Efecto carrusel en la ventana de reproducción - Esquinas redondeadas - Tema de la portada del álbum - Circular - Carrusel - Personalizar la ventana de reproducción - Tarjeta completa - Perfil - Biografía - Automático - Etiquetado + No etiquetado - Seleccionado - Profundidad - giro vertical - Giro - Giro horizontal - Pausa la reproducción en cero y la reproduce después de subir el volumen. Aviso: cuando subas el volumen, la música empezará a sonar incluso fuera de la aplicación - Pausar en cero - Lo Nuevo - Recomendaciones - Ajustado - Hacer Clic o Deslizar - Click para abrir con o sin navegación transparente de la pantalla de reproducción actual - Limpiar la cola - Compartir app - Reportar un error - Enviar usando la cuenta de Github - Inicio de sesión - Enviar manualmente - Serás redirigido al sitio web de seguimiento de problemas - Problemas - Título - Descripción + + No se pudo reproducir esta canci\u00f3n + + A continuación + + Actualizar imagen + + Actualizando... + Nombre de usuario - Contraseña - Información del dispositivo - Reporta un problema - Por favor, introduce tu nombre de usuario de GitHub - Por favor, introduce tu contraseña de GitHub - Por favor, introduce un título para el problema - Por favor, escribe la descripción del problema - Subiendo reporte a GitHub... - No se puede enviar el reporte - Usuario o contraseña incorrectos - Token de acceso inválido. Por favor, contacta con el desarrollador de la aplicación - Los problemas no están habilitados para el repositorio seleccionado. Por favor, contacta con el desarrollador de la aplicación - Se ha producido un error inesperado. Por favor, contacta con el desarrollador de la aplicación - Información del dispositivo copiada al portapapeles + + Versión + + giro vertical + + Virtualizador + + Búsqueda web + + ¿Qué quieres compartir? + + Lo Nuevo + + Ventana + + Esquinas redondeadas + + Establecer %1$s como tono de llamada + + %1$d seleccionado + + Año + + Serás redirigido al sitio web de seguimiento de problemas + Los datos de tu cuenta sólo se utilizan para la autenticación - Efecto \"Snow Fall\" - Lista Negra - El contenido de las carpetas de la lista negra se oculta de la biblioteca - Editar - Letras Sincronizadas diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 222f4b50..7c663277 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -1,139 +1,273 @@ - Tienes que seleccionar al menos una categoría - Español Music El color acentuado por defecto es verde + Acerca de + Añadir a favoritos Agregar a la cola de reproducción Agregar a lista de reproducción + Limpiar cola de reproducción Borrar lista de reproducción + Eliminar Borrar del dispositivo + Detalles + Ir al álbum Ir al artista Ir al género Ir al directorio de inicio + Conceder + Tamaño de la cuadricula Tamaño de la cuadricula (Horizontal) + + Nueva lista de reproducción... + Siguiente + Reproducir Reproducir siguiente Reproducir/Pausa + Anterior + Eliminar de favoritos Eliminar de la cola de reproducción Eliminar de la lista de reproducción + Renombrar + Guardar lista de reproducción + Escanear Escanear directorio + Buscar + Iniciar Establecer como tono de llamada Establecer como directorio de inicio + "Configuración" + Compartir + Mezclar todo Lista de reproducción aleatoria + Temporizador de apagado + Ordenar por + Editor de etiquetas + Adaptativo + Agregar + Agregar foto + "Agregar a lista de reproducción" + "Se ha agregado 1 canción a la cola de reproducción" + %1$d canciones agregadas a la cola de reproducción + Álbum + Artista del álbum + El titulo o artista está vacío + Álbumes + Siempre + Ve este cool reproductor de música en: https://play.google.com/store/apps/details?id=%s + Aleatorio Canciones más reproducidas + Retro Music - Grande Retro Music - Tarjeta Retro Music - Clásico Retro Music - Pequeño Retro music - Texto + Artista + Artistas + Enfoque de audio denegado + Modifica los ajustes de sonido y ajusta los controles del ecualizador + + Automático + + Color base del tema + Refuerzo de graves + + Biografía + Biografía + Negro + Lista negra + Desenfoque + Tarjeta desenfocada - Mantener la pantalla encendida - Tenga en cuenta que habilitar esta función puede afectar la duración de la batería - Cantidad de desenfoque - Cantidad de desenfoque aplicado a los temas desenfocados, más bajo es más rápido - Retro Music Pro + + Enviando el reporte a GitHub... + Token de acceso invalido. Por favor, contacta con el desarrollador de la app. + El problema no esta habilitado para el repositorio seleccionado. Por favor, contacta col el desarrollador de la app. + Un error inesperado a ocurrido. Por favor, contacta col el desarrollador de la app. + Usuario o contraseña incorrecta + Problemas + Enviar manualmente + Por favor, describe el problema + Por favor, entra tu contraseña de GitHub Valido + Por favor, escribe el titulo del problema + Por favor, entra tu usuario de GitHub Valido + Ocurrió un error inesperado. Lamento que hayas encontrado este error, si sigue fallando \"Borra los datos de la aplicación\" + Enviando el reporte a GitHub... + Envía usando la cuenta de GitHub + Cancelar + Tarjeta - Tarjeta Coloreada + Circular - Imagen + + Tarjeta Coloreada + Tarjeta + + Carrusel + + Efecto carrusel en la ventana de reproducción + + En cascada + Transmitir + Registro de cambios + Registro de cambios disponible en el canal de Telegram + + Circular + Limpiar + + Borrar datos de la aplicación + Limpiar lista negra + + Limpiar cola de reproducción + Limpiar lista de reproducción %1$s? \u00a1Esto no se puede deshacer!]]> + Cerrar + Color + Color + Colores + + Información del dispositivo copiado al porta-papeles. + No se pudo crear la lista de reproducci\u00f3n. "No se pudo descargar una portada de \u00e1lbum coincidente." No se pudo restaurar la compra. No se pudieron escanear los %d archivos. + Crear + Lista de reproducción %1$s creada + Miembros y contribuidores + Estás escuchando %1$s de %2$s + "Un poco oscuro " + No hay letras + Eliminar lista de reproducción %1$s?]]> + Eliminar listas de reproducción + %1$s?]]> + %1$d de tus playlist? ]]> %1$d canciones?]]> %1$d canciones eliminadas. + + Profundidad + + Descripción + + Información del dispositivo + ¿Quieres limpiar la lista negra? %1$s de la lista negra?]]> + Donar + Si crees que merezco que me paguen por mi trabajo, puedes dejar algo de dinero aquí + Cómprame: + Descargar de Last.fm + Editar portada + Vacio + Ecualizador + + Error + Preguntas más frecuentes + Favoritos + + Fit + Plano + Carpetas + Para ti + Completo + + Tarjeta completa + Cambiar el tema y colores de la aplicación Aspecto y la sensación + Género + Géneros + Haz Fork del proyecto en GitHub + Únase a la comunidad de Google Plus donde puede pedir ayuda o seguir las actualizaciones Retro Music + 1 2 3 @@ -142,77 +276,169 @@ 6 7 8 + + Bisagra + Historial + Inicio + + Giro Horizontal + + Imagen + Cambiar la configuración de descarga de imágenes del artista + %1$d canciones agregadas a la lista de reproducción %2$s. + Instagram Comparte tu configuración de Retro Music en Instagram + Velocidad de bits + Formato Nombre del archivo Ruta del archivo Tamaño + Tasa de muestreo + Duración + + Etiquetado + Añadidos recientemente + Vamos a tocar un poco de música + Biblioteca + Licencias + Blanco claro + Listando archivos + Cargando productos... + + Iniciar Sección + Letras + + Hecho con ❤️ en India + Material + "Nombre " + Más reproducidas + Nunca + Nueva foto del banner + Nueva lista de reproducción + Nueva foto de perfil + %s es el nuevo directorio de inicio. + No hay Álbumes + No hay Artistas + "Primero reproduce una canción, luego intenta de nuevo." + No se encontró ecualizador + No hay Géneros + No se encontró letra + No hay Listas de Reproducción + No se encontraron compras. + Sin resultados + No hay Canciones + Normal + Letras normales + Normal + %s no aparece en la lista de medios.]]> + Nada para escanear. + Notificación + Personalizar el estilo de la notificación + Reproduciendo Cola de reproducción + Personalizar la ventana de reproducción + Más de 9 temas para la ventana de reproducción + Solo con Wi-Fi + Otro + + Contraseña + Más de 3 meses + Permiso de acceso al almacenamiento externo denegado. + Permiso denegado. + Personalizar + Personalizar la ventana de reproducción y los controles de la interfaz + Elegir del almacenamiento local + Simple + La notificación de reproducción proporciona acciones para reproducir/pausar, etc. Notificación de reproducción + Lista de reproducción vacía + La lista de reproducción está vacía + Nombre de la lista de reproducción + Listas de reproducción + + Estilo del detalle del Album + + Cantidad de desenfoque aplicado a los temas desenfocados, más bajo es más rápido + Cantidad de desenfoque + Audio Tema Imágenes Pantalla de bloqueo Listas de reproducción + + Pausar la reproducción cuando se esta en silencio y reproducir cuando se aumenta el volumen. ¡Cuidado! Cuando se aumenta el volumen se empezara la reproducción aunque se este fuera de la app. + Pausar en silencio + Tenga en cuenta que habilitar esta función puede afectar la duración de la batería + Mantener la pantalla encendida + + Toca para abrir con o desliza sin la barra de navegación transparente de la pantalla de reproducción + Toca o desliza + "Solo disponible en Lollipop." + + Efecto de nevada + Usar la portada del álbum de la canción en reproducción como fondo de la pantalla de bloqueo Bajar el volumen cuando se reproduzca un sonido del sistema o se reciba una notificación + Las carpetas en la lista negra, serán ocultado de tu librería. Desenfocar la portada el álbum en la pantalla de bloqueo. Puede causar problemas con aplicaciones y widgets de terceros Efecto carrusel para la portada del álbum en la ventana de reproducción. En los temas \"Tarjeta\" y \"Tarjeta Desenfocada\" no funcionará Usar el diseño de notificación clásico @@ -221,7 +447,10 @@ Colorea la barra de navegación con el color principal "Colorea la notificaci\u00f3n con el color vibrante de la portada del \u00e1lbum" Se tomará el color dominante de la portada del álbum o imagen del artista + Añadir controles extra al mini reproductor "Puede causar problemas de reproducción en algunos dispositivos." + Mostrar/Ocultar pestaña de géneros + Mostrar/Ocultar banner en inicio Puede aumentar la calidad de la portada del álbum, pero provoca tiempos de carga de imágenes más lentos. Solo habilite esto si tiene problemas con portadas de baja resolución Usar los controles personalizados de Retro Music en la pantalla de bloqueo Detalles de licencia para software de código abierto @@ -231,23 +460,27 @@ Comenzar a reproducir inmediatamente se conecten audífonos El modo aleatorio se desactivará cuando se reproduzca una nueva lista de canciones Mostrar controles de volumen si hay suficiente espacio disponible. - Añadir controles extra al mini reproductor - Mostrar/Ocultar pestaña de géneros - Mostrar/Ocultar banner en inicio + Mostrar/Ocultar portada del álbum - Forma de los títulos de las pestañas + Tema de la portada del álbum + Estilo de la caratula en reproducción Cuadricula del álbum Accesos directos de la aplicación coloreados Cuadricula de los artistas Reducir el volumen en pérdida de enfoque Descarga automática de imágenes de artistas + Lista negra Desenfocar portada del álbum Elegir ecualizador Diseño de notificación clásico Color adaptativo Notificación coloreada + Controles extra Reproducción sin interrupciones Tema de la aplicación + Mostrar pestaña de géneros + Cuadricula de los artistas en inicio + Banner de inicio Ignorar las portadas de la biblioteca de medios Intervalo de la lista \"Añadidos Recientemente\" Controles en pantalla completa @@ -255,6 +488,7 @@ Tema de la ventana de reproducción Licencias de código abierto Bordes de las esquinas + Forma de los títulos de las pestañas Efecto carrusel Color dominante Aplicación en pantalla completa @@ -263,58 +497,105 @@ Modo aleatorio Controles de volumen Información del usuario - Controles extra - Banner de inicio - Mostrar pestaña de géneros - Cuadricula de los artistas en inicio - Estilo de la caratula en reproducción - Estilo del detalle del Album - En cascada + Color principal El color principal del tema, por defecto es gris azulado, por ahora funciona con colores oscuros + + Perfil + Comprar + *Piense antes de comprar, no pida un reembolso. + Cola + Califica la aplicación + ¿Te encanta la aplicación? Haznos saber en Google Play Store cómo podemos hacerla aún mejor + Álbumes recientes + Artistas recientes + Eliminar + Eliminar foto del banner + Eliminar portada + Eliminar de la lista negra + Eliminar foto de perfil + Eliminar canción de la lista de reproducción %1$s de la lista de reproducción?]]> + Eliminar canciones de la lista de reproducción + %1$d canciones de la lista de reproducción?]]> + Renombrar lista de reproducción + + Reporta un problema + + Reporta problemas + Reiniciar imagen del artista + Restaurar + Compra anterior restaurada. Por favor, reinicie la aplicación para hacer uso de todas las funciones. Compras anteriores restauradas. + Restaurando compra... + Ecualizador de Reto Music + + Retro Music Pro + Guardar como archivo + Guardar como archivos + Lista de reproducción guardada en %s. + Guardando cambios + Escanear medios + %1$d de %2$d archivos escaneados. + Buscar en tu biblioteca... + Seleccionar todos + Seleccionar foto del banner + + Seleccionado + Establecer imagen del artista + + Comparte la app + Aleatorio + Sencillo + Temporizador cancelado. Temporizador de apagado establecido para %d minutos desde ahora. + + Español + Social + Canción + Duración de la canción + Canciones + Ordenar por Ascendente Álbum @@ -322,107 +603,103 @@ Fecha Año Descendente + ¡Lo siento! Su dispositivo no es compatible con la entrada de voz + Buscar en tu biblioteca + + Sugerencias + Solo mostrar tu nombre en la pantalla de inicio + Apoya el desarrollo + + Letras sincronizadas + Ecualizador del sistema + Telegram Únete al grupo de Telegram para discutir los errores, hacer sugerencias, presumir y más + ¡Gracias! + El archivo de audio + Este mes + Esta semana + Este año + Pequeño + + Titulo + Tablero + Buenas tardes Buen día Buenas tardes Buenos días Buenas noches + ¿Cómo te llamas? + Hoy + Álbumes mas reproducidos + Artistas más reproducidos + "Pista (2 para pista 2 o 3004 para CD3 pista 4)" + Número de pista + Traducir + Ayúdanos a traducir la aplicación a tu lenguaje + Twitter Comparte tu diseño con Retro Music - No se pudo reproducir esta canci\u00f3n. - A continuación - Actualizar imagen - Actualizando... - Versión - Virtualizador - Búsqueda web - ¿Qué quieres compartir? - Ventana - %1$s establecido como tono de llamada. - %1$d seleccionados - Año - Hecho con ❤️ en India - Borrar datos de la aplicación - Ocurrió un error inesperado. Lamento que hayas encontrado este error, si sigue fallando \"Borra los datos de la aplicación\" - Error - Color base del tema - Más de 9 temas para la ventana de reproducción - Efecto carrusel en la ventana de reproducción - Esquinas redondeadas - Tema de la portada del álbum - Circular - Carrusel - Personalizar la ventana de reproducción - Tarjeta completa - Perfil - Biografía - Automático - Etiquetado + Sin etiqueta - Seleccionado - Profundidad - Giro vertical - Bisagra - Giro Horizontal - Pausar la reproducción cuando se esta en silencio y reproducir cuando se aumenta el volumen. ¡Cuidado! Cuando se aumenta el volumen se empezara la reproducción aunque se este fuera de la app. - Pausar en silencio - Novedades - Sugerencias - Fit - Toca o desliza - Toca para abrir con o desliza sin la barra de navegación transparente de la pantalla de reproducción - Limpiar cola de reproducción - Comparte la app - Reporta problemas - Envía usando la cuenta de GitHub - Iniciar Sección - Enviar manualmente - Sera redirigido al sitio web para reportar problemas. - Problemas - Titulo - Descripción + + No se pudo reproducir esta canci\u00f3n. + + A continuación + + Actualizar imagen + + Actualizando... + Nombre de Usuario - Contraseña - Información del dispositivo - Reporta un problema - Por favor, entra tu usuario de GitHub Valido - Por favor, entra tu contraseña de GitHub Valido - Por favor, escribe el titulo del problema - Por favor, describe el problema - Enviando el reporte a GitHub... - Enviando el reporte a GitHub... - Usuario o contraseña incorrecta - Token de acceso invalido. Por favor, contacta con el desarrollador de la app. - El problema no esta habilitado para el repositorio seleccionado. Por favor, contacta col el desarrollador de la app. - Un error inesperado a ocurrido. Por favor, contacta col el desarrollador de la app. - Información del dispositivo copiado al porta-papeles. + + Versión + + Giro vertical + + Virtualizador + + Búsqueda web + + ¿Qué quieres compartir? + + Novedades + + Ventana + + Esquinas redondeadas + + %1$s establecido como tono de llamada. + + %1$d seleccionados + + Año + + Tienes que seleccionar al menos una categoría + + Sera redirigido al sitio web para reportar problemas. + La información de tu cuenta es solo para autenticar tu identidad. - Efecto de nevada - Lista negra - Las carpetas en la lista negra, serán ocultado de tu librería. - Letras sincronizadas - Nueva lista de reproducción... diff --git a/app/src/main/res/values-eu-rES/strings.xml b/app/src/main/res/values-eu-rES/strings.xml index c87a6987..4e8836dd 100644 --- a/app/src/main/res/values-eu-rES/strings.xml +++ b/app/src/main/res/values-eu-rES/strings.xml @@ -1,138 +1,271 @@ - Album txikia Azentu kolorea Gaiaren azentu kolorea. Lehenetsia: teal + Honi buruz + Gogokoetara gehitu Ilaran gehitu Erreprodukzio zerrendan gehitu + Erreprodukzio ilara garbitu Erreprodukzio zerrenda garbitu + Ezabatu Gailutik ezabatu + Xehetasunak + Albumera joan Artistara joan Generora joan Hasierako direktoriora joan + Onartu + Sareta tamaina Sareta tamaina (paisaia) + Hurrengoa + Erreproduzitu Hurrengoa erreproduzitu Erreproduzitu/Pausatu + Aurrekoa + Kendu gogokoetatik Erreprodukzio ilaratik kendu Erreprodukzio zerrendatik kendu + Berrizendatu + Erreprodukzio ilara gorde + Eskaneatu Direktorioa eskaneatu + Bilatu + Hasi Dei-tonu bezala ezarri Hasierako direktorio bezala ezarri + "Ezarpenak" + Partekatu + Nahastu guztiak Nahastu erreprodukzio zerrenda + Lo tenporizadorea + Ordenatze irizpidea + Etiketa editorea + Moldagarria + Gehitu + Argazkia\ngehitu + "Erreprodukzio zerrendan gehitu" + "Abestia erreprodukzio ilaran gehitu da" + %1$d abesti erreproduzkio ilaran gehitu dira + Albuma + Albumeko artista + Izenburua edo artista hutsik dago + Albumak + Beti + Begiratu musika erreproduzitzaile hau: https://play.google.com/store/apps/details?id=%s + Nahastu Pista onenak + Retro music - Handia Retro music - Txartela Retro music - Klasikoa Retro music - Txikia Retro music - Testua + Artista + Artistak + Audio fokatzea ukatua + Aldatu soinu ezarpenak eta doitu nahasgailuaren kontrolak + + Automatikoa + + Oinarrizko kolore gaia + Baxu Bultzada + + Bio + Biografia + Beltza bakarrik + Zerrenda beltza + Lausotzea + Txartel lausotua - Mantendu pantaila pizturik - Gogoan izan eginbide hau aktibatzeak eragina izan dezakeela bateriaren iraupenean - Lausotze maila - Gai lausoetan ezarritako lausotze maila, baxuagoa azkarragoa da - Retro Music Pro + + Ezin izan da txostena bidali + Okerreko sarrera fitxa. Mesedez aplikazioaren garatzailearekin harremanetan jarri + Arazoak ez daude gaituta aukeratutako biltegian. Mesedez aplikazioaren garatzailearekin harremanetan jarri + Ustekabeko akats bat gertatu da. Mesedez aplikazioaren garatzailearekin harremanetan jarri + Okerreko erabiltzaile izena edo pasahitza + Arazoa + Eskuz bidali + Mesedez sartu arazoaren azalpen bat + Mesedez sartu zure baliozko GitHub-eko pasahitza + Mesedez sartu arazoaren titulu bat + Mesedez sartu zure baliozko GitHub-eko erabiltzaile izena + Ustekabeko akats bat gertatu da. Sentitzen dugu akats hau aurkitu izana, huts egiten jarraitzen batu \"Garbitu aplikazioaren datuak\" + Txostena GitHub-era igotzen... + GitHub kontua erabiliz bidali + Ezeztatu + Txartela - Txartel koloreztatua + Zirkularra - Irudia + + Txartel koloreztatua + Txartela + + Karrusela + + Karrusel efektua orain erreproduzitzen pantailan + + Ur jauzi moduan + Igorri + Aldaketa zerrenda + Aldaketa zerrenda Telegrameko kanalean mantentzen da + + Zirkularra + Garbitu + + Garbitu aplikazioaren datuak + Zerrenda beltza garbitu + + Ilara garbitu + Erreprodukzio zerrenda garbitu %1$s erreprodukzio zerrenda garbitu? Hau ezin da desegin!]]> + Itxi + Kolorea + Kolorea + Koloreak + + Gailuaren informazioa arbelean kopiatuta + Ezin izan da erreprodukzio zerrenda sortu "Ezin izan da bat datorren albumaren azalik deskargatu" Ezin izan da erosketa leheneratu Ezin izan dira %d fitxategiak eskaneatu + Sortu + %1$s erreprodukzio zerrenda sortua + Kideak eta laguntzaileak + %2$s-(r)en %1$s entzuten ari zara + Nahiko iluna + Letrarik ez + Erreprodukzio zerrenda ezabatu %1$s erreprodukzio zerrenda ezabatu?]]> + Erreprodukzio zerrendak ezabatu + %1$s abestia ezabatu?]]> + %1$d erreprodukzio zerrenda ezabatu?]]> %1$d abesti ezabatu?]]> %1$d abesti ezabatu dira + + Sakonera + + Azalpena + + Gailuaren informazioa + Zerrenda beltza garbitu nahi duzu? %1$s zerrenda beltzetik ezabatu nahi duzu?]]> + Lagundu diruz + Nire lanagatik ordaindua izan behar dudala pentsatzen baduzu, diru apur bat utzi dezakezu hemen + Erosidazu: + Deskargatu Last.fm-tik + Azala editatu + Hutsik + Nahasgailua + + Akatsa + Ohiko galderak + Gogokoak + + Egokitu + Laua + Karpetak + Zuretzako + Beteta + + Txartel betea + Aldatu applikazioaren gai eta koloreak Itxura + Generoa + Generoak + GitHub-en proiektua zatitu + Batu Google Plus-eko komunitatea laguntza eskatzeko edo Retro Music-en eguneraketak jarraitzeko + 1 2 3 @@ -141,77 +274,169 @@ 6 7 8 + + Bisagra + Historiala + Hasiera + + Iraulketa horizontala + + Irudia + Aldatu artisten irudien deskarga ezarpenak + %1$d abesti gehitu dira %2$s erreprodukzio zerrendan + Instagram Partekatu zure Retro Music-en konfigurazioa Instagram-en + Bit-tasa + Formatua Fitxategiaren izena Fitxategiaren kokalekua Tamaina + Laginketa tasa + Luzera + + Etiketaduna + Gehitutako azkenak + Musika erreproduzitu dezagun + Liburutegia + Lizentziak + Zuria jakina + Fitxategien zerrenda + Produktuak kargatzen... + + Saioa hasi + Letrak + + ❤️-z Indian egina + Material + Nire izena + Gehien erreproduzituak + Inoiz ez + Banner argazki berria + Erreprodukzio zerrenda berria + Profileko argazki berria + %s da hasierako direktorio berria + Albumik ez + Artistarik ez + "Lehenik erreproduzitu abesti bat, saiatu berriro ondoren" + Nahasgailurik ez da aurkitu + Generorik ez + Ez da letrarik aurkitu + Erreprodukzio zerrendarik ez + Ez da erosketarik aurkitu + Emaitzarik ez + Abestirik ez + Normala + Letra normalak + Normala + %s ez dator dendan zerrendatua]]> + Eskaneatzekorik ez + Jakinarazpena + Jakinarazpen estiloa pertsonalizatu + Orain erreproduzitzen Erreprodukzio ilara + Pertsonalizatu orain erreproduzitzen pantaila + 9+ orain erreproduzitzen gai + Wi-Fi-arekin bakarrik + Bestelako + + Pasahitza + Azken 3 hilabeteak + Kanpoko biltegiratzera sarbidea ukatua + Baimenak ukatuak izan dira + Pertsonalizatu + Pertsonalizatu zure orain erreproduzitzen eta UI kontrolak + Tokiko biltegitik hautatu + Arrunta + Erreproduzitzen jakinarazpenak erreproduzitu/pausatu etab. ekintzak eskaintzen ditu Erreproduzitzen jakinarazpena + Erreprodukzio zerrenda hutsa + Erreprodukzio zerrenda hutsik dago + Erreprodukzio zerrendaren izena + Erreprodukzio zerrendak + + Albumaren xehetasunen estiloa + + Gai lausoetan ezarritako lausotze maila, baxuagoa azkarragoa da + Lausotze maila + Audioa Gaia Irudiak Blokeo-pantaila Erreprodukzio zerrendak + + Pausaru zeroan eta erreproduzitu bolumena igotzean. Adi, bolumena igotzean aplikaziotik kanpo egonik ere erreproduzituko da + Pausatu zeroan + Gogoan izan eginbide hau aktibatzeak eragina izan dezakeela bateriaren iraupenean + Mantendu pantaila pizturik + + Orain erreproduzitzen pantailaren nabigazio gardena irekitzeko klikatu, irristatu gardentasunik gabeko nabigaziorako + Klikatu edo irristatu + "Lollipop-en bakarrik eskuragarri" + + Elur efektua + Erabili erreproduzitzen ari den abestiaren azala blokeo-pantailako horma-paper gisa Jaitsi bolumena sistemaren soinuren batek jotzean edo jakinarazpen bat jasotzean + Zerrenda beltzean jarritako edukiak zure liburutegitik ezkutatuko dira Lausotu albumaren azala blokeo-pantailan. Arazoak sor ditzazke hirugarrenen aplikazio edota widgetekin Karrusel efektua erreprodukzio pantailako album azalerako. Kontuan izan Txartela eta Txartel lausotua gaiek ez dutela funtzionatuko Erabili jakinarazpenen diseinu klasikoa @@ -220,7 +445,10 @@ Nabigazio barra kolore nagusian koloreztatu "Jakinarazpena albumaren azalaren kolore nagusian ezarri" Albumaren edo artistaren azaletik kolore menderatzailea hartuko da + Gehitu kontrol gehigarriak erreproduzitzaile txikirako "Erreprodukzio arazoak sor ditzake gailu batzuetan" + Txandakatu genero fitxa + Txandakatu hasierako banner estiloa Album azalaren kalitatea hobetu dezake, baina irudien kargatze-denbora moteltzen du. Soilik bereizmen baxuko azalekin arazoa baduzu aktibatu Retro Music-en pantaila-blokeoko kontrolak erabili Software librerako lizentziaren xehetasunak @@ -230,23 +458,27 @@ Hasi erreproduzitzen entzungailuak konektatzeaz bat Nahasketa modua desaktibatuko da abesti zerrenda berria erreproduzitzean Lekua egonik, erakutsi bolumenaren kontrolak orain erreproduzitzen pantailan - Gehitu kontrol gehigarriak erreproduzitzaile txikirako - Txandakatu genero fitxa - Txandakatu hasierako banner estiloa + Erakutsi albumaren azala - Fitxen titulu modua + Album azalaren gaia + Albumaren azala saltatu Album sareta Koloreztaturiko aplikazio lasterbideak Artista sareta Jaitsi bolumena foku galeran Deskargatu artisten irudiak automatikoki + Zerrenda beltza Lausotu albumaren azala Hautatu nahasgailua Jakinarazpenen diseinu klasikoa Kolore moldagarria Jakinarazpen koloreztatua + Kontrol gehigarriak Tarterik gabeko erreprodukzioa Aplikazioaren gaia + Erakutsi genero fitxa + Hasierako artista sareta + Hasierako bannerra Media dendako azalei ez ikusi egin Gahitutako azkenen erreprodukzio zerrendaren tartea Pantaila osoko kontrolak @@ -254,6 +486,7 @@ Orain erreproduzitzen gaia Software libre lizentziak Izkinako ertzak + Fitxen titulu modua Karrusel efektua Kolore menderatzailea Pantaila osoko aplikazioa @@ -262,58 +495,105 @@ Nahastu modua Bolumen kontrolak Erabiltzaileari buruz - Kontrol gehigarriak - Hasierako bannerra - Erakutsi genero fitxa - Hasierako artista sareta - Albumaren azala saltatu - Albumaren xehetasunen estiloa - Ur jauzi moduan + Kolore nagusia Gaiaren kolore nagusiak, lehentsia urdin-grisa, kolore ilunekin funtzionatzen du oraingoz + + Profila + Erosi + *Pentsatu erosi aurretik, ez eskatu itzulketarik + Ilara + Baloratu aplikazioa + Aplikazioa gustatzen zaizu? Esan iezaguzu Google Play Store-n nola hobetu dezakegun + Azken albumak + Azken artistak + Kendu + Banner argazkia kendu + Azala kendu + Zerrenda beltzetik kendu + Profileko argazkia kendu + Abestia erreprodukzio zerrendatik kendu %1$s abestia erreprodukzio zerrendatik kendu?]]> + Abestiak erreprodukzio zerrendatik kendu + %1$d abesti erreprodukzio zerrendatik kendu?]]> + Erreprodukzio zerrenda berrizendatu + + Arazo baten berri eman + + Eman akatsen berri + Artistaren irudia berrezarri + Leheneratu + Aurreko erosketa leheneratua. Mesedez aplikazioa berrabiarazi ezaugarri guztiak erabiltzeko Aurreko erosketa leheneratua + Erosketa leheneratzen... + Retro Music Nahasgailua + + Retro Music Pro + Gorde fitxategi gisa + Gorde fitxategi gisa + Erreprodukzio zerrenda %s-n gorde da + Aldaketak gordetzen + Eskaneatu media + %2$d-tik %1$d fitxategi eskaneatu dira + Zure liburutegian bilatu... + Hautatu guztiak + Banner argazkia hautatu + + Hautatua + Artistaren irudia ezarri + + Partekatu aplikazioa + Nahastu + Soila + Lo tenporizadorea bertan behera utzi da Lo tenporizadorea %d minuturako ezarri da + + Album txikia + Soziala + Abestia + Abestiaren iraupena + Abestiak + Ordenatze irizpidea Gorakorra Albuma @@ -321,106 +601,101 @@ Data Urtea Beherakorra + Sentitzen dugu! Zure gailuak ez du ahots bidezko idazketa onartzen + Zure liburutegian bilatu + + Iradokizunak + Zure izena bakarrik erakutsi hasiera pantailan + Onartutako garapena + + Letra sinkronizatuak + Sistemako nahasgailua + Telegram Batu Telegram-eko kanala akatsak, iradokizunak etab. kontatzeko + Eskerrik asko! + Audio fitxategia + Hilabete hau + Aste hau + Urte hau + Ñimiñoa + + Titulua + Arbela + Arratsalde on Egun on Arratsalde on Egun on Gabon + Zein da zure izena + Gaur + Album onenak + Artista onenak + "Pista (2, 2. pistarako edo 3004 3. CDko 4. pistarako)" + Pista zenbakia + Itzuli + Lagun iezaguzu aplikazioa zure hizkuntzara itzultzen + Twitter Partekatu zure Retro Music-en diseinua - Ezin izan da abestia erreproduzitu - Jarraian - Irudia eguneratu - Eguneratzen... - Bertsioa - Birtualizatzailea - Web bilaketa - Zer partekatu nahi duzu? - Leihoa - Ezarri %1$s dei-tonu gisa - %1$d hautaturik - Urtea - ❤️-z Indian egina - Garbitu aplikazioaren datuak - Ustekabeko akats bat gertatu da. Sentitzen dugu akats hau aurkitu izana, huts egiten jarraitzen batu \"Garbitu aplikazioaren datuak\" - Akatsa - Oinarrizko kolore gaia - 9+ orain erreproduzitzen gai - Karrusel efektua orain erreproduzitzen pantailan - Ertz biribilduak - Album azalaren gaia - Zirkularra - Karrusela - Pertsonalizatu orain erreproduzitzen pantaila - Txartel betea - Profila - Bio - Automatikoa - Etiketaduna + Etiketa gabe - Hautatua - Sakonera - Iraulketa bertikala - Bisagra - Iraulketa horizontala - Pausaru zeroan eta erreproduzitu bolumena igotzean. Adi, bolumena igotzean aplikaziotik kanpo egonik ere erreproduzituko da - Pausatu zeroan - Zer berri - Iradokizunak - Egokitu - Klikatu edo irristatu - Orain erreproduzitzen pantailaren nabigazio gardena irekitzeko klikatu, irristatu gardentasunik gabeko nabigaziorako - Ilara garbitu - Partekatu aplikazioa - Eman akatsen berri - GitHub kontua erabiliz bidali - Saioa hasi - Eskuz bidali - Arazo bilatzaile webgunera birbidalia izango zara - Arazoa - Titulua - Azalpena + + Ezin izan da abestia erreproduzitu + + Jarraian + + Irudia eguneratu + + Eguneratzen... + Erabiltzaile izena - Pasahitza - Gailuaren informazioa - Arazo baten berri eman - Mesedez sartu zure baliozko GitHub-eko erabiltzaile izena - Mesedez sartu zure baliozko GitHub-eko pasahitza - Mesedez sartu arazoaren titulu bat - Mesedez sartu arazoaren azalpen bat - Txostena GitHub-era igotzen... - Ezin izan da txostena bidali - Okerreko erabiltzaile izena edo pasahitza - Okerreko sarrera fitxa. Mesedez aplikazioaren garatzailearekin harremanetan jarri - Arazoak ez daude gaituta aukeratutako biltegian. Mesedez aplikazioaren garatzailearekin harremanetan jarri - Ustekabeko akats bat gertatu da. Mesedez aplikazioaren garatzailearekin harremanetan jarri - Gailuaren informazioa arbelean kopiatuta + + Bertsioa + + Iraulketa bertikala + + Birtualizatzailea + + Web bilaketa + + Zer partekatu nahi duzu? + + Zer berri + + Leihoa + + Ertz biribilduak + + Ezarri %1$s dei-tonu gisa + + %1$d hautaturik + + Urtea + + Arazo bilatzaile webgunera birbidalia izango zara + Zure kontuaren datuak autentifikaziorako soilik erabiliko dira - Elur efektua - Zerrenda beltza - Zerrenda beltzean jarritako edukiak zure liburutegitik ezkutatuko dira - Letra sinkronizatuak diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 3da4d2ef..dab6baf7 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -1,143 +1,297 @@ - Vous devez sélectionner au moins une catégorie. - Petit album + Équipe, liens sociaux + Couleur d\'accentuation La couleur d\'accentuation du thème, verte par défaut + À propos + Ajouter aux favoris Ajouter à la file d\'attente Ajouter à la playlist + Vider la file d\'attente Vider la playlist + Supprimer Supprimer de l\'appareil + Détails + Aller à l\'album Aller à l\'artiste Aller au genre Aller au dossier de départ + Accorder + Taille de la grille Taille de la grille (paysage) + + Nouvelle liste de lecture… + Suivant + Lecture + Jouer tous les Lire après Lecture / Pause + Précédent + Supprimer des favoris Supprimer de la file d\'attente Supprimer de la liste de lecture + Renommer + Enregistrer la file d\'attente + Scanner Scanner le dossier + Rechercher - Définir + Démarrer Définir en tant que sonnerie Définir comme dossier de départ + "Paramètres" + Partager + Tout aléatoire Playlist en lecture aléatoire + Minuteur de sommeil + Ordre de tri + Éditeur de tag metadata + Adaptatif + Ajouter + + Ajouter paroles + Ajouter\nune photo + "Ajouter à playlist" + + Add time frame lyrics + "1 titre à été ajoutée à la file d'attente." + %1$d titres ont été ajoutés à la file d\'attente. + Album + Artiste de l\'album + Le titre ou l\'artiste est vide. + Albums + Toujours + Hey, jetez un coup d\'œil à ce super lecteur de musique : https://play.google.com/store/apps/details?id=%s + Aléatoire Pistes préférées + Retro Music – Grand Retro Music – Carte Retro Music – Classique Retro Music – Petit Retro music - Texte + Artiste + Artistes + Focus audio refusé. + Changer les paramètres audio et ajuster l\'égaliseur + + Auto + + Couleur de base du thème + Renforcement des basses + + Biographie + Biographie + Juste noir + Liste noire + Flou + Carte floue - Garder l\'écran allumé - Veuillez garder en tête que l\'activation de cette fonctionnalité peut réduire la durée de vie de la batterie - Quantité de flou - Quantité de flou appliqué aux thèmes flous, bas est plus rapide - Retro Music Pro + + Impossible d\'envoyer le rapport de bug + Jeton d\'accès invalide. Veuillez contacter le développeur de l\'application. + Les problèmes ne sont pas activés pour le dépôt sélectionné. Veuillez contacter le développeur de l\'application. + Erreur inopinée. Veuillez contacter le développeur de l\'application. + Nom d\'utilisateur ou mot de passe invalide + Problème + Envoyer manuellement + Veuillez entrer une description du problème + Veuillez entrer votre mot de passe GitHub valide + Veuillez entrer un titre pour le problème + Veuillez entrer votre nom d\'utilisateur GitHub valide + Une erreur imprévue s\'est produite. Nous sommes désolé que vous ayez rencontré ce bug, si l\'application continue de planter, effacez les données de l\'application + Envoi du rapport de bug sur GitHub... + Envoyer en utilisant un compte GitHub + Annuler + Carte - Cartes colorées + Circulaire - Image + + Cartes colorées + Carte + + Carousel + + Effet carousel sur l\'écran de lecture en cours + + En cascade + Caster + Liste des changements + Liste des changements maintenu sur la canal Telegram + + Circulaire + + Classique + Effacer + + Effacer les données d\'application + Effacer la liste noire + + Vider la file d\'attente + Effacer la liste de lecture %1$s ? Cette action ne pourra pas \u00eatre annul\u00e9e !]]> + Fermer + Couleur + Couleur - De Nuit par jour(alpha) + Couleurs + + Compositeur + + Informations sur l\'appareil copiées dans le presse-papier. + La liste de lecture n\'a pas pu \u00eatre cr\u00e9\u00e9e. "Impossible de t\u00e9l\u00e9charger une image d'album qui corresponde." Les achats n\'ont pas pu être restaurés. Les fichiers %d n\'ont pas pu être scanné. + Créer + Liste de lecture %1$s créée. + Membres et contributeurs + Vous écoutez actuellement %1$s par %2$s. + Plutôt Sombre + + De Nuit par jour(alpha) + Pas de Paroles + Supprimer la liste de lecture %1$s ?]]> + Supprimer les listes de lecture + + Supprimer le morceau %1$s ?]]> + + Supprimer les morceaux + %1$d ?]]> %1$d ?]]> - Supprimer le morceau - Supprimer les morceaux %1$d à été supprimé. + + Profondeur + + Description + + Infos sur l\'appareil + + Autoriser la musique Retro pour modifier les paramètres audio + + Set ringtone + Voulez vous vraiment vider la liste noire ? %1$s de la liste noire ?]]> + Faire un don + Si vous pensez que je mérite d\'être payé pour mon travail, vous pouvez me donner quelques dollars ici + Achetez moi : + Télécharger via Last.fm + + Modifier + Modifier la couverture + Vide + Égaliseur + + Erreur + FAQ + Favoris + + Finissez la dernière chanson + + Adapter + Plat + Dossiers + Pour vous + Plein + + Carte complète + Changer le thème et les couleurs de l\'application Apparence + Genre + Genres + Cloner le projet sur GitHub + Rejoignez la communauté Google Plus, où vous pouvez demander de l\'aide ou suivre les mises à jour de Retro Music + 1 2 3 @@ -146,77 +300,201 @@ 6 7 8 + + + + Charnière + Historique + Accueil + + Balayage horizontal + + Image + + Le Gradient de l\'image + Changer les paramètres de téléchargement des photos d\'artistes + %1$d morceaux ont été inséré dans la liste %2$s. + Instagram Partager votre configuration de Retro Music pour la montrer sur Instagram + + Clavier + Débit + Format Nom du fichier Chemin de fichier Taille + Taux d’échantillonnage + Longueur + + Étiqueté + Dernier ajout + + Dernière Chanson + Jouons un peu de musique + Bibliothèque + + Catégories + Licences + Clairement blanc + Listage des fichiers + Chargement des produits… + + Se connecter + Paroles + + Fait avec ❤️ en Inde + Material + + Erreur + + Erreur d\'autorisation + Mon nom + Plus jouées + jamais + Nouvelle bannière photo + Nouvelle liste de lecture + Nouvelle photo de profil + %s est le nouveau dossier de départ. + + Prochaine Chanson + Pas d\'albums + Pas d\'artistes + "Lancez d'abord un morceau, puis réessayez." + Aucun égaliseur trouvé + Aucun genre + Aucune parole trouvée + Aucune liste de lecture + Aucun achat trouvé + Aucun résultat + Aucun morceau + Normal + Paroles normales + Normal + %s n\'est pas repertorié dans le stockage média.]]> + Rien à scanner. + Notification + Personnaliser le style de notification + Lecture en cours File d\'attente + Personnaliser l\'écran de lecture + 9+ thèmes d\'écran de lecture en cours + + Sur + Uniquement via Wi-Fi + + Fonctions de test avancées + Autre + + Mot de passe + 3 derniers mois + + Coller les paroles ici + La permission pour accéder au stockage externe a été refusée. + Permission refusée. + Personnaliser + Personnalisez le lecteur et l\'interface + Sélectionner depuis le stockage + + Choisissez l\'image + + Pinterest + Suivez la page de Pintrest pour la musique Retro. + Simple + La notification de lecture fournit des actions pour la lecture / pause etc. Lecture de la notification + Liste de lecture vide + Cette liste de lecture est vide + Nom de la liste de lecture + Listes de lecture + + Style du détail de l\'album + + Quantité de flou appliqué aux thèmes flous, bas est plus rapide + Quantité de flou + + Filtre de la durée de la chanson + + De style Album Audio + Contrôle Thème Images + Bibliothèque Écran de verrouillage Listes de lecture + + La lecture se met en pause à zéro et se lance lorsque le volume augmente. Attention, lorsque vous augmentez le volume, la musique se lance même si vous êtes en dehors de l\'app. + Pause sur zéro + Veuillez garder en tête que l\'activation de cette fonctionnalité peut réduire la durée de vie de la batterie + Garder l\'écran allumé + + Cliquez pour ouvrir avec ou glisser à sans navigation transparente de l\'écran de lecture + Cliquez ou balayez + "Seulement disponible sur Lollipop." + + Effet chute de neige + Utiliser la couverture d\'album de la piste en cours de lecture comme fond sur l\'écran de verrouillage Baisser le volume quand un son système ou une notification est reçue + Le contenu des dossiers en liste noire est masqué de votre bibliothèque. Flouter la couverture de l\'album sur l\'écran de verrouillage. Cela peut poser des problèmes avec des applications et widgets tiers. Effet carousel pour les couvertures d\'albums sur l\'écran de lecture en cours. Veuillez noter que les thèmes Carte et Carte floutée ne fonctionneront pas Utiliser le design classique pour les notifications @@ -225,8 +503,12 @@ Colorer la barre de navigation avec la couleur primaire "Colorer la notification avec la couleur dominante des couvertures d'albums" La couleur dominante sera choisie depuis la couverture de l\'album ou de l\'artiste + Ajouter des contrôles supplémentaires pour le mini lecteur "Peut causer des problèmes de lecture sur certains appareils." + Activer/désactiver l\'onglet Genres + Changer le style de la bannière sur l\'accueil Peut améliorer la qualité de l\'image d\'album, mais ralenti le chargement des images. N\'activez ceci que si vous avez des problèmes avec les images basse résolution + Configurer la visibilité et l\'ordre des catégories de la librairie. Utiliser les contrôles personnalisés de Retro Music sur l\'écran de verrouillage Détails des licences pour les logiciels open source Coins arrondis pour les bords de l\'application @@ -235,23 +517,27 @@ Commencer immédiatement la lecture lors du branchement d\'un casque Le mode aléatoire se désactivera lors de la lecture d\'une nouvelle liste de morceaux Si vous avez assez de place, affiche les contrôle du volume sur l\'écran de lecture - Ajouter des contrôles supplémentaires pour le mini lecteur - Activer/désactiver l\'onglet Genres - Changer le style de la bannière sur l\'accueil + Afficher la couverture de l\'album - Mode Titres onglets + Thème de la couverture d\'album + Style du balayage de l\'image d\'album Grille d\'albums Raccourcis d\'application colorés Grille d\'artistes Réduire le volume à la perte de focus Télécharger automatiquement les photos des artistes + Liste noire Flouter la couverture d\'album Choisir l\'égalisateur Design de notification classique Couleur adaptative Notification colorée + Contrôles supplémentaires Lecture sans blanc Thème de l\'application + Montrer l\'onglet Genres + Disposition de la grille d\'artistes sur l\'accueil + Bannière d\'accueil Ignorer les couvertures du stockage média Intervalle de dernière liste de lecture ajoutée Contrôles plein-écran @@ -259,6 +545,7 @@ Thème d\'écran de lecture Licences open source Angles arrondis + Mode Titres onglets Effet carousel Couleur dominante App en plein écran @@ -267,210 +554,239 @@ Mode aléatoire Contrôles de volume Informations utilisateur - Contrôles supplémentaires - Bannière d\'accueil - Montrer l\'onglet Genres - Disposition de la grille d\'artistes sur l\'accueil - Style du balayage de l\'image d\'album - Style du détail de l\'album - En cascade + + Obtenir La Prime + Couleur primaire La couleur de thème primaire, par défaut bleu-gris, fonctionne maintenant avec les couleurs sombres + + Maintenant les thèmes de jeu, L\'effet de carrousel, thème de couleur et plus.. + + Profil + Acheter + * Veuillez bien réfléchir avant d\'acheter ! Ne demandez pas de remboursement. + File d\'attente + Noter l\'application + Vous aimez l\'application ? Faites-le nous savoir sur le Play Store afin que nous puissions l\'améliorer davantage + Albums récents + Artistes récents + Supprimer + Retirer la bannière photo + Supprimer la couverture + Retirer de la liste noire + Supprimer la photo de profil + Supprimer le morceau de la liste de lecture %1$s de la liste de lecture ?]]> + Retirer le morceau de la liste de lecture + %1$d morceaux de la liste de lecture ?]]> + Renommer la liste de lecture + + Signaler un problème + + Signaler un bug + + Réinitialiser + Réinitialiser la photo de l\'artiste + Restaurer + Achat précédent restauré. Veuillez redémarrer l\'application pour utiliser toutes les fonctionnalités. Achats précédents restaurés. + Restauration de l\'achat… + Égaliseur Retro Music + + Retro Music Pro + + Enregistrer + Enregistrer en tant que fichier + Enregistrer en tant que fichiers + Liste de lecture enregistrée vers %s + Enregistrement des changements + Scanner le média + Fichier %1$d sur %2$d scanné + Recherche dans votre bibliothèque… + Tout sélectionner + Choisir la bannière photo + + Sélection préréglage + + Sélectionné + + Envoyer le journal du crash + + Définir + Définir photo de l\'artiste + + Définir une photo de profil + + Partager l\'app + Aléatoire + Simple + Minuteur d\'extinction annulé. Extinction dans %d minutes. + + Diapositive + + Petit album + Social + Morceau + Durée du morceau + Morceaux + Ordre de classement Ascendant Album Artiste + Compositeur Date Année Descendant + Désolé, votre appareil ne supporte pas l\'entrée vocale + Rechercher dans votre bibliothèque + + Pile + + Commencer à jouer de la musique. + + Suggestions + N\'afficher que votre nom sur l\'écran d\'accueil + Aider le développement + + Glisser pour déverrouiller + + Paroles synchronisées + Égalisateur système + Telegram Rejoignez le groupe Telegram pour discuter des bugs, faire des suggestions, montrer votre configuration, etc. + Merci ! + Le fichier audio + Ce mois + Cette semaine + Cette année + Petit + + Titre + Tableau de bord + Bon après-midi Bonne journée Bonsoir Bonne journée Bonne soirée + Quel est ton nom + Aujourd\'hui + Top albums + Top artistes + "Morceau (2 pour morceau 2, 3004 pour morceau 4 du CD 3)" + Numéro du morceau + Traduction + Aidez-nous à traduire l\'application dans votre langue + Twitter Partager votre design avec Retro Music + + Non étiqueté + Impossible de lire ce morceau. + À suivre + Mettre à jour l\'image + Mise à jour... + + Mise à niveau vers premium + + Nom d\'utilisateur + version + + Balayage vertical + Virtualisateur + "Recherche internet " - Que souhaitez-vous partager ? - Fenêtre - Définir %1$s comme sonnerie. - %1$d sélectionné - Année - Fait avec ❤️ en Inde - Effacer les données d\'application - Une erreur imprévue s\'est produite. Nous sommes désolé que vous ayez rencontré ce bug, si l\'application continue de planter, effacez les données de l\'application - Erreur - Couleur de base du thème - 9+ thèmes d\'écran de lecture en cours - Effet carousel sur l\'écran de lecture en cours - Bords arrondis - Thème de la couverture d\'album - Circulaire - Carousel - Personnaliser l\'écran de lecture - Carte complète - Profil - Biographie - Auto - Étiqueté - Non étiqueté - Sélectionné - Profondeur - Balayage vertical - Charnière - Balayage horizontal - La lecture se met en pause à zéro et se lance lorsque le volume augmente. Attention, lorsque vous augmentez le volume, la musique se lance même si vous êtes en dehors de l\'app. - Pause sur zéro - Quoi de neuf - Suggestions - Adapter - Cliquez ou balayez - Cliquez pour ouvrir avec ou glisser à sans navigation transparente de l\'écran de lecture - Vider la file d\'attente - Partager l\'app - Signaler un bug - Envoyer en utilisant un compte GitHub - Se connecter - Envoyer manuellement - Vous allez être redirigé vers le site web de suivi des problèmes. - Problème - Titre - Description - Nom d\'utilisateur - Mot de passe - Infos sur l\'appareil - Signaler un problème - Veuillez entrer votre nom d\'utilisateur GitHub valide - Veuillez entrer votre mot de passe GitHub valide - Veuillez entrer un titre pour le problème - Veuillez entrer une description du problème - Envoi du rapport de bug sur GitHub... - Impossible d\'envoyer le rapport de bug - Nom d\'utilisateur ou mot de passe invalide - Jeton d\'accès invalide. Veuillez contacter le développeur de l\'application. - Les problèmes ne sont pas activés pour le dépôt sélectionné. Veuillez contacter le développeur de l\'application. - Erreur inopinée. Veuillez contacter le développeur de l\'application. - Informations sur l\'appareil copiées dans le presse-papier. - Vos données de compte sont utilisées uniquement pour vous authentifier. - Effet chute de neige - Liste noire - Le contenu des dossiers en liste noire est masqué de votre bibliothèque. - Envoyer le journal du crash - Pinterest - Suivez la page de Pintrest pour la musique Retro. - Filtre de la durée de la chanson - Erreur - Erreur d\'autorisation - Classique - Compositeur - Compositeur - Prochaine Chanson - Dernière Chanson - Diapositive - Enregistrer - Choisissez l\'image - Définir une photo de profil - Modifier - Bibliothèque - Glisser pour déverrouiller - Ajouter paroles - Coller les paroles ici - Add time frame lyrics - Paroles synchronisées - Set ringtone - Autoriser la musique Retro pour modifier les paramètres audio - Équipe, liens sociaux - Fonctions de test avancées - Sur - Sélection préréglage - Mise à niveau vers premium - Nouvelle liste de lecture… - Finissez la dernière chanson - Le Gradient de l\'image - Pile - + Accueillir, - Obtenir La Prime - Maintenant les thèmes de jeu, L\'effet de carrousel, thème de couleur et plus.. - Jouer tous les - Commencer à jouer de la musique. - Clavier - Réinitialiser - Catégories - Configurer la visibilité et l\'ordre des catégories de la librairie. - Contrôle - De style Album + + Que souhaitez-vous partager ? + + Quoi de neuf + + Fenêtre + + Bords arrondis + + Définir %1$s comme sonnerie. + + %1$d sélectionné + + Année + + Vous devez sélectionner au moins une catégorie. + + Vous allez être redirigé vers le site web de suivi des problèmes. + + Vos données de compte sont utilisées uniquement pour vous authentifier. diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml index 1e36a8f6..191cf11b 100644 --- a/app/src/main/res/values-hi-rIN/strings.xml +++ b/app/src/main/res/values-hi-rIN/strings.xml @@ -2,66 +2,111 @@ एक्सेंट रंग एक्सेंट विषयवस्तु रंग, डिफ़ॉल्ट हरा है। + इसके बारे में + पसंदीदा में जोड़े कतार में जोड़ें प्लेलिस्ट में जोड़ें + कतार निकाल दे प्लेलिस्ट निकाल दे + हटाएं डिवाइस से हटाएं + विवरण + एल्बम पर जाएं कलाकार पर जाएं शुरू निर्देशिका पर जाएं + अनुदान + ग्रीड आकार ग्रीड आकार (परीसदृश्य) + अगला + चलाएं अगला चलाएं चलाएं/रोकें + पिछला + पसंदीदा में से निकाले कतार में से निकले प्लेलिस्ट में से निकालें + नाम बदलें + कतार सहेजें + छाने + खोजें + सेट रिंगटोन के रूप में सेट करें शुरू निर्देशिका के रूप में सेट करें + "सेटिंग" + शेयर + सभी शफ़ल करें शफ़ल प्लेलिस्ट + स्लीप टाइमर + टैग एडिटर + जोड़ें + फ़ोटो\nजोड़ें + "प्लेलिस्ट में जोड़ें" + "कतार मे 1 शीर्षक जोड़ा गया है।" + कतार मे %1$d शीर्षक जोड़ा गया है। + एल्बम + एल्बम कलाकार + शीर्षक या कलाकार खाली है + एल्बम + हमेशा + इस बढ़िया म्यूजिक प्लेयर को यहां देखें:https://play.google.com/store/apps/details?id=%s + शफ़ल टॉप गीत + रेट्रो म्यूजिक - बिग रेट्रो म्यूजिक - कार्ड रेट्रो म्यूजिक - क्लासिक + कलाकार + कलाकार + जीवनी + सिर्फ काला + ब्लैकलिस्ट + वर्तमान टाइमर को रद्द करें + चेंजलाग + साफ़ + साफ़ + Ghar diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml deleted file mode 100644 index 0d2c4cc4..00000000 --- a/app/src/main/res/values-hi/strings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index e372c5fa..4b21024a 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -1,139 +1,275 @@ - Mali album Naglašena boja Naglašena boja teme, zadana je plavo zelena + O aplikaciji + Dodaj u omiljene Dodaj u red čekanja Dodaj na popis naslova + Očisti red čekanja Očisti popis naslova + Izbriši Izbriši s uređaja + Detalji + Odi na album Idi na izvođača Idi na žanr Idi na početni direktorij + Dopusti + Veličina rešetke Veličina rešetke (polja) + Dalje + Reproduciraj Reproduciraj sljedeće Reproduciraj/pauziraj + Prethodno + Ukloni iz favorita Ukloni iz reda reprodukcije Ukloni sa popisa naslova + Preimenuj + Spremi red reproduciranja + Skeniraj Skeniraj direktorij + Traži + Započni Postavi kao zvuk zvona Postavi kao početni direktorij + "Postavke" + Podijeli + Izmješaj sve Izmiješaj popis naslova + Brojač za spavanje + Način sortiranja + Uređivač oznaka + Prilagodljivo + Dodaj + Dodaj\nsliku + "Dodaj na popis naslova" + "Dodana 1 pjesma na red reprodukcije." + Dodano %1$d pjesama na red reprodukcije. + Album + Izvođač albuma + Naziv ili izvođač su prazni. + Albumi + Uvijek + Hej, pogledajte ovaj cool reproduktor glazbe: https://play.google.com/store/apps/details?id=%s + Izmiješaj Najslušanije pjesme + Retro Music - Velik Retro Music - Kartica Retro Music - Klasičan Retro Music - Malen Retro Music - Tekst + Izvođač + Izvođači + Fokus zvuka je odbijen. + Promijenite postavke zvuka i kontrole ekvalizatora + + Automatski + + Temeljna boja teme + Pojačalo Bassa + + Biografija + Biografija + Samo crna + Crni popis + Zamagljenje + Zamagljena kartica - Drži zaslon uključenim - Imajte na umu da omogućavanje ove značajke može utjecati na trajanje baterije - Količina zamagljenja - Količina zamagljenja koja se primjenjuje na teme, manje je brže - Retro Music Pro + + Nije moguće poslati izvješće + Pristupni token nije valjan. Molimo kontaktirajte razvojnog programera aplikacije. + Problemi nisu omogućeni za odabrani repozitorij. Molimo kontaktirajte razvojnog programera aplikacije. + Dogodila se neočekivana pogreška. Molimo kontaktirajte razvojnog programera aplikacije. + Krivo korisničko ime ili lozinka + Problem + Pošalji ručno + Molimo unesite opis problema + Molimo unesite vašu valjanu GitHub lozinku + Molimo unesite naslov problema + Molimo unesite vaše valjano GitHub korisničko ime + Dogodila se neočekivana pogreška. Žao nam je što ste pronašli ovu pogrešku, ako se aplikacija + nastavi rušiti \"Očisti podatke aplikacije\" + Učitavanje izvješća na GitHub... + Pošalji putem GitHub računa + Odustani + Kartica - Obojena kartica + Kružno - Slika + + Obojena kartica + Kartica + + Vrtuljak + + Efekt ringišpila za zaslon reprodukcije + + Kaskadno + Emitiraj + Popis promjena + Popis promjena održavan na Telegramu + + Kružno + Očisti + + Očisti podatke aplikacije + Očisti crnu popis + + Očisti red čekanja + Očisti popis naslova %1$s? Ovo se ne mo\u017ee poni\u0161titi!]]> + Zatvori + Boja + Boja + Boje + + Informacije o uređaju su kopirane u međuspremnik. + Stvaranje popisa naslova nije uspjelo. "Preuzimanje odgovaraju\u0107eg omota albuma nije uspjelo." Vraćanje kupnje nije uspjelo. Skeniranje %d datoteke nije uspjelo. + Stvori + Popis naslova %1$s je stvoren. + Članovi i dobrinositelji + Trenutno slušaš %1$s od %2$s. + Otprilike mračna + Nema Teksta + Izbriši popis naslova %1$s?]]> + Izbriši popise naslova + %1$s?]]> + %1$d popisa naslova?]]> %1$d pjesama?]]> Izbrisano je %1$d pjesama. + + Dubina + + Opis + + Informacije o uređaju + Želite li očistiti crni popis? %1$s sa crnog popisa?]]> + Doniraj + Ako mislite da zaslužujem biti plaćen za svoj posao, možete mi ostaviti nešto novca ovdje + Kupite mi: + Preuzmi sa Last.fm-a + + Uredi + Uredi omot + Prazno + Ekvalizator + + Pogreška + Često postavljena pitanja + Favoriti + + Podesi + Ravno + Mape + Za vas + Puno + + Potpuna kartica + Promijenite temu i boje aplikacije Izgled i osjećaj + Žanr + Žanri + Forkaj projekt na GitHubu + Pridružite se Google plus zajednici, gdje možete pitati za pomoć ili pratiti ažuriranja Retro Musica + 1 2 3 @@ -142,77 +278,169 @@ 6 7 8 + + Šarka + Povijest + Početna + + Horizontalni okret + + Slika + Promijenite postavke preuzimanja slika izvođača + Dodano je %1$d pjesama na popis naslova %2$s. + Instagram Podjelite svoju Retro Music postavu na Instagramu + Brzina prijenosa + Format Naziv datoteke Put datoteke Veličina + Brzina uzorkovanja + Dužina + + Označeno + Posljednje dodano + Reproducirajmo malo glazbe + Biblioteka + Licence + Jasno bijela + Popisivanje datoteka + Učitavanje proizvoda... + + Prijava + Tekst + + Napravljeno sa ❤️ u Indiji + Materijal + Moje ime + Najslušanije + Nikad + Nova slika naslovnice + Novi popis naslova + Nova slika profila + %s je novi početni direktorij. + Nema albuma + Nema izvođača + "Prvo reproducirajte pjesmu, zatim pokušajte ponovo." + Ekvalizator nije pronađen + Nema žanrova + Tekst nije pronađen + Nema popisa naslova + Kupnja nije pronađena. + Nema rezultata + Nema pjesama + Normalno + Normalni tekst + Normalno + %s nije na popisu medijske pohrane.]]> + Nema stavki za skeniranje. + Obavijest + Prilagodite stil obavijesti + Zaslon reprodukcije Red reprodukcije + Prilagodite zaslon reprodukcije + 9+ tema za zaslon reprodukcije + Samo na Wi-Fi-u + Ostalo + + Lozinka + Prošla 3 mjeseca + Dopuštenje za pristup eksternoj memoriji odbijeno. + Dopuštenja odbijena. + Prilagodba + Prilagodite vaš zaslon reprodukcije i kontrole sučelja + Odaberi sa lokalne pohrane + Jasno + Obavijest reprodukcije pruža mogućnosti reprodukcije/pauziranja itd. Obavijest reprodukcije + Prazan popis naslova + Popis naslova je prazan + Naziv popisa naslova + Popisi naslova + + Stil detalja albuma + + Količina zamagljenja koja se primjenjuje na teme, manje je brže + Količina zamagljenja + Zvuk Tema Slike Zaključani zaslon Playliste + + Pauzirajte reprodukciju na nuli i započnite ju nakon podizanja glasnoće. Budite oprezni prilikom podizanja glasnoće jer se reprodukcija nastavlja čak i izvan aplikacije + Pauziraj na nuli + Imajte na umu da omogućavanje ove značajke može utjecati na trajanje baterije + Drži zaslon uključenim + + Dodirnite za otvaranje ili klizanje bez prozirne navigacije zaslona za reprodukciju + Klik ili klizanje + "Dostupno samo na Lollipop-u." + + Efekt padanja snijega + Koristite omot albuma trenutne pjesme kao pozadinu zaključanog zaslona. Smanjuje glasnoću kada je reproduciran zvuk sustava ili kad je stigla obavijest + Sadržaj mapa na crnom popisu će biti skriven iz vaše biblioteke. Zamagljuje omot albuma na zaključanom zaslonu. Može uzrokovati probleme s widgetima i aplikacijama treće strane. Efekt ringišpila za omot albuma na zaslonu reprodukcije. Zapamtite da teme Kartica i Zamagljena Kartica neće raditi Koristite klasični dizajn obavijesti @@ -221,7 +449,10 @@ Boja navigacijsku traku u primarnu boju "Boja obavijest u istaknutu boju albuma" Najdominantnija boja će biti odabrana iz omota albuma ili izvođača. + Dodajte dodatne kontrole za mini reproduktor "Može uzrokovati probleme sa reprodukcijom na nekim uređajima." + Uključite/isključite karticu žanra + Uključite/isključite način naslovnice na početnoj stranici Može povećati kvalitetu omota albuma, ali uzrokuje sporije učitavanje slika. Omogućite ovo samo ako imate problema sa omotima niske rezolucije Koristite Retro Music prilagođene kontrole zaklj. zaslona Detalji o licenci za softver otvorenog koda @@ -231,23 +462,27 @@ Započni reprodukciju odmah nakon što su slušalice povezane Nasumični naćin će biti isključen prilikom sviranja novog popisa pjesama Ako ima dovoljno prostora, prikazati će se kontrole glasnoće na zaslonu reprodukcije - Dodajte dodatne kontrole za mini reproduktor - Uključite/isključite karticu žanra - Uključite/isključite način naslovnice na početnoj stranici + Prikaži omot albuma - Način oznaka na karticama + Teme omota albuma + Preskakanje omota albuma Rešetka albuma Obojeni prečaci aplikacije Rešetka izvođača Smanji glasnoću pri gubitku fokusa Automatsko preuzimanje slika izvođača + Crni popis Zamagli prevlaku albuma Odaberi ekvalizator Klasični dizajn obavijesti Prilagodljiva boja Obojena obavijest + Dodatne kontrole Reprodukcija bez prekida Tema aplikacije + Prikaži karticu žanra + Rešetka izvođača na početnoj stranici + Naslovnica na početnoj stranici Ignoriraj omote iz medijske pohrane Interval zadnje dodanih popisa naslova Kontrole preko cjelog zaslona @@ -255,6 +490,7 @@ Tema zaslona reprodukcije Licence otvorenog koda Rubovi uglova + Način oznaka na karticama Efekt ringišpila Dominantna boja Aplikacija preko cijelog zaslona @@ -263,58 +499,105 @@ Način mješanja Kontrole glasnoće Informacije o Korisniku - Dodatne kontrole - Naslovnica na početnoj stranici - Prikaži karticu žanra - Rešetka izvođača na početnoj stranici - Preskakanje omota albuma - Stil detalja albuma - Kaskadno + Primarna boja Primarna boja teme, zadano je plavo-siva, zasad radi s tamnim bojama + + Profil + Kupi + *Razmisli prije kupnje, ne pitaj za povrat novca. + Red + Ocijeni aplikaciju + Volite ovu aplikaciju? Javite nam to na Google Play trgovini kako bi smo vam poboljšali iskustvo + Nedavni albumi + Nedavni izvođači + Ukloni + Ukloni sliku naslovnice + Ukloni omot + Ukloni sa crnog popisa + Ukloni sliku profila + Ukloni pjesmu s popisa naslova %1$s sa popisa naslova?]]> + Ukloni pjesme sa popisa naslova + %1$d pjesama sa popisa naslova?]]> + Preimenuj popis naslova + + Prijavi pogrešku + + Prijavi pogrešku + Resetiraj sliku izvođača + Vrati + Vrati prošlu kupnju. Molimo vas ponovno pokrenite aplikaciju da biste koristili sve značajke. Bivše kupnje vraćene. + Vraćanje kupnje... + Retro Music Ekvalizator + + Retro Music Pro + Spremi kao datoteku + Spremi kao datoteke + Popis naslova je spremljen u %s. + Spremanje promjena + Skeniraj medije + Skenirano %1$d od %2$d datoteka. + Pretraži svoju biblioteku... + Odaberi sve + Odaberi sliku naslovnice + + Odabrano + Postavi sliku izvođača + + Podijeli aplikaciju + Izmiješaj + Jednostavno + Brojač za spavanje je otkazan. Brojač za spavanje je postavljen za %d minuta od sada. + + Mali album + Društveno + Pjesma + Trajanje pjesme + Pjesme + Red sortiranja Uzlazno Album @@ -322,108 +605,101 @@ Datum Godina Silazno + Žao mi je! Tvoj uređaj ne podržava unos govora + Pretraži svoju biblioteku + + Preporuke + Prikažite samo svoje ime na početnoj stranici + Podrži razvijanje + + Sinkroniziran tekst + Sustavski ekvalizator + Telegram Pridružite se Telegram grupi da biste raspravili o pogreškama, dali preporuke, te još mnogo toga + Hvala ti! + Zvučna datoteka + Ovaj mjesec + Ovaj tjedan + Ove godine + Sitno + + Naziv + Kontrolna ploča + Dobar dan Dobar dan Dobra večer Dobro jutro Laku noć + Kako se zoveš + Danas + Najslušaniji albumi + Najslušaniji izvođači + "Pjesma (2 za 2. pjesmu ili 3004 za 3. CD 4. pjesmu)" + Broj pjesme + Prevedi + Pomozite nam prevesti našu aplikaciju na svoj jezik + Twitter Podjeli svoj dizajn sa Retro Music-om - Nije mogu\u0107e reproducirati ovu pjesmu. - Sljedeće - Ažuriraj sliku - Ažuriranje... - Verzija - Virtualizator - Web pretraživanje - Što želite podijeliti? - Prozor - Postavi %1$s kao zvuk zvona. - %1$d odabran - Godina - Napravljeno sa ❤️ u Indiji - Očisti podatke aplikacije - Dogodila se neočekivana pogreška. Žao nam je što ste pronašli ovu pogrešku, ako se aplikacija - nastavi rušiti \"Očisti podatke aplikacije\" - Pogreška - Temeljna boja teme - 9+ tema za zaslon reprodukcije - Efekt ringišpila za zaslon reprodukcije - Zaobljeni kutovi - Teme omota albuma - Kružno - Vrtuljak - Prilagodite zaslon reprodukcije - Potpuna kartica - Profil - Biografija - Automatski - Označeno + Neoznačeno - Odabrano - Dubina - Vertikalni okret - Šarka - Horizontalni okret - Pauzirajte reprodukciju na nuli i započnite ju nakon podizanja glasnoće. Budite oprezni prilikom podizanja glasnoće jer se reprodukcija nastavlja čak i izvan aplikacije - Pauziraj na nuli - Što je novo - Preporuke - Podesi - Klik ili klizanje - Dodirnite za otvaranje ili klizanje bez prozirne navigacije zaslona za reprodukciju - Očisti red čekanja - Podijeli aplikaciju - Prijavi pogrešku - Pošalji putem GitHub računa - Prijava - Pošalji ručno - Biti će te preusmjereni na web stranicu za praćenje pogrešaka. - Problem - Naziv - Opis + + Nije mogu\u0107e reproducirati ovu pjesmu. + + Sljedeće + + Ažuriraj sliku + + Ažuriranje... + Korisničko ime - Lozinka - Informacije o uređaju - Prijavi pogrešku - Molimo unesite vaše valjano GitHub korisničko ime - Molimo unesite vašu valjanu GitHub lozinku - Molimo unesite naslov problema - Molimo unesite opis problema - Učitavanje izvješća na GitHub... - Nije moguće poslati izvješće - Krivo korisničko ime ili lozinka - Pristupni token nije valjan. Molimo kontaktirajte razvojnog programera aplikacije. - Problemi nisu omogućeni za odabrani repozitorij. Molimo kontaktirajte razvojnog programera aplikacije. - Dogodila se neočekivana pogreška. Molimo kontaktirajte razvojnog programera aplikacije. - Informacije o uređaju su kopirane u međuspremnik. + + Verzija + + Vertikalni okret + + Virtualizator + + Web pretraživanje + + Što želite podijeliti? + + Što je novo + + Prozor + + Zaobljeni kutovi + + Postavi %1$s kao zvuk zvona. + + %1$d odabran + + Godina + + Biti će te preusmjereni na web stranicu za praćenje pogrešaka. + Vaši podatci o računu su korišteni samo za autentikaciju. - Efekt padanja snijega - Crni popis - Sadržaj mapa na crnom popisu će biti skriven iz vaše biblioteke. - Uredi - Sinkroniziran tekst diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 4b7278f4..919ba048 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -2,134 +2,244 @@ A hangsúly színe Az akcentus téma színe alapértelmezés szerint színtiszta + Rólunk + Add hozzá a kedvencekhez Add a lejátszási sorhoz Lejátszási listához adni… + Lejátszási sor törlése Lejátszási listát törlése + Törlés Törlés eszközről + Részletek + Ugrás az albumhoz Ugrás az előadóhoz Menj a műfajhoz Ugrás a könyvtár indításához + Engedélyezés + Rácsméret Rácsméret (Forditott) + Következő + Lejátszás Lejátszás következőnek Lejátszás / Szünet + Előző + Eltávolítás a kedvencekből Eltávolítás a lejátszási sorból Eltávolítás a lejátszási listáról + Átnevezése + Lejátszási sor mentése + Letapogatás Szkennelési könyvtár + Keresés + Start Beállítás csengőhangként Beállítás kezdőkönyvtárként + "Beállítások" + Ossza meg + Összes keverése Lejátszási lista keverése + Ébresztő óra + Sorrend + Címkeszerkesztő + AdaptÍv + Hozzáad + Fénykép\nhozzáadása + "Lejátszási listához adni" + "1 cím lett hozzáadva a lejátszási sorhoz." + %1$d címsort hozzáadott a lejátszási sorhoz. + Album + Album előadó + A cím vagy az előadó üres. + Albumok + Mindig + Hé, nézd meg ezt a Retro Zenelejátszót: https://play.google.com/store/apps/details?id=%s + Keverés Legjobb zeneszámok + Retro music - Nagy Retro music - Kártya Retro music - Klasszikus Retro music - Kicsi + Előadó + Előadók + Az audiofókusz megtagadva. + Módosítsa a hangbeállításokat és állítsa be az equalizer vezérlőket + + Autó + + Kiinduló szín témája + Basszuskiemelés + + Bio + Életrajz + Csak Fekete + Feketelista + Elhomályosít + Elhomályosított Kártya - Tartsa bekapcsolva a képernyőt - Vedd figyelembe hogy ha bekapcsolod ezt gyorsabban fog merülni a telefonod. - Elhomályosodás mértéke - Elhomályosodás mértéke homályos témákhoz, alacsonyabb a gyorsabb + + Egy váratlan hiba történt. Találtál egy hibát, ha nem hagyja abba a fagyást, \"App adat törlése\" + Mégse + Kártya - Színes Kártya + Kör alakú - Kép + + Színes Kártya + Kártya + + Körhinta + + Kőrhinta effekt a most játszik képernyőn + + Növelés + Cast + Változási napló + A Changelog a Telegram csatornán működik + + Kör alakú + Tisztitás + + App adat törlése + Törölje a feketelistát + Törölje a lejátszási listát %1$s lej\u00e1tsz\u00e1si list\u00e1t? Ezt nem lehet visszavonni!]]> + Bezárás + Szín + Szín + Színek + Lej\u00e1tsz\u00e1si lista l\u00e9trehoz\u00e1sa nem siker\u00fclt. "Nem siker\u00fclt lek\u00e9rni a megfelel\u0151 albumbor\u00edt\u00f3t." A vásárlást nem sikerült visszaállítani. Nem sikerült beolvasni %d fájlt. + Létrehozás + Létrehozott lejátszási lista %1$s + Tagok és támogatók + Jelenleg hallgat %1$s által %2$s + Kinda Sötét + Nincs dalszöveg + Lejátszási lista törlése %1$s lejátszási listát?]]> + Lejátszási listák törlése + %1$s dalt?]]> + %1$d lejátszási listát?]]> %1$d zenét?]]> Törölte a %1$d zenét. + Szeretné törölni a feketelistát? %1$s a feketelistáról?]]> + Támogatás + Ha úgy gondolja, hogy megérdemlem fizetni a munkámért, hagyhatsz néhányat pénzt itt + Vegyél nekem egy: + Letöltés a Last.fm-ről + Borító szerkesztése + Üres + Hangszínszabályzó + + Hiba + GYIK + Kedvencek + Lapos + Mappák + Neked + Teljes + + Teljes kártya + Módosítsa az alkalmazás témáját és színeit Nézz és élvezd + Műfaj + Műfajok + Szerezd meg a projektet a githubban + Csatlakozzon a Google Plus közösséghez, ahol segítséget kérhet, vagy követheti a Retro Zene Alkalmazás frissítéseit + 1 2 3 @@ -138,75 +248,149 @@ 6 7 8 + Előzmény + Krzdőlap + + Kép + A művészképek letöltésének megváltoztatása + %1$d dalt betett a %2$s lejátszási listába. + Instagram Ossza meg a Retro Zene beállításait az Instagram példányban + Bitrát + Formátum Fájl név Fájl elérési út Méret + Mintavételi arány + Hossz + + Címkézve + Utoljára hozzáadva + Játsszunk le egy zenét + Könyvtár + Licencek + Világos fehér + Listázási fájlok + A termékek betöltése ... + Dalszöveg + + ❤️-el készítve Indiából + Materiál + Nevem + Legjobb számok + Soha + Új banner fotó + Új lejátszási lista + Új profilfotó + %s az új indítókönyvtár. + Nincsenek albumok + Nincs előadó + "Először játssz le egy dalt, majd próbálkozzon újra." + Nem találtunk hangszínszabályzott. + Nincsenek műfajok + Nem található dalszöveg + Nincs lejátszási lista + Nincs vásárlás. + Nincs eredmény + Nincs dal + Normál + Normál dalszövegek + Normál + %s nem szerepel a médiában.]]> + Nincs szkennelve. + Értesítés + Értesítési stílus testreszabása + Most lejátszott Sorban áll + Most játszik képernyő személyre szabása + 9+ most játszik témák + Csak Wi-Fi-n + Egyéb + 3 hónapnál túl + A külső tárolási hozzáférés engedélyezése tiltva. + Engedélyek megtagadva. + Megszemélyesít + A most lejátszott és felhasználói felület testreszabása + Válasszon a helyi tárolóból + Egyszerű + A lejátszási értesítés lejátszási/szüneteltetési intézkedéseket tartalmaz. Értesítés lejátszása + Üres lejátszási lista + A lejátszási lista üres + Lejátszási lista neve + Lejátszási listák + + Elhomályosodás mértéke homályos témákhoz, alacsonyabb a gyorsabb + Elhomályosodás mértéke + Hang Általános Képek Zárképernyő Lejátszási listák + + Vedd figyelembe hogy ha bekapcsolod ezt gyorsabban fog merülni a telefonod. + Tartsa bekapcsolva a képernyőt + "Csak a Lollipopon elérhető." + A jelenlegi zeneszámok albumborítóját zárolt háttérképként használja. Értesítések, navigáció stb. Blokkolja az album borítóját a zárolás képernyőjén. Problémákat okozhat harmadik féltől származó alkalmazásokkal és kütyükkel. @@ -217,7 +401,10 @@ Színezi a navigációs sávot az elsődleges színben. "Sz\u00ednek az \u00e9rtes\u00edt\u00e9st az albumbor\u00edt\u00f3 \u00e9l\u00e9nk sz\u00edn\u00e9ben." A legtöbb domináns színt az album vagy az előadó borítója veszi fel. + Extra irányítás a mini lejátszóhoz "Egyes eszközökön lejátszási problémákat okozhat." + Műfaj lap kapcsolása + Kezdőlap banner stílusának kapcsolása Növelheti az album borításminőségét, de lassabb kép betöltési időt eredményez. Csak akkor engedélyezze ezt, ha problémái vannak az alacsony felbontású művekkel kapcsolatban. Retro zeneszámok zárolása a képernyőn. A nyílt forráskódú szoftverek licence részletei @@ -227,11 +414,10 @@ Indítsa el a lejátszást, amikor a fejhallgató csatlakoztatva van. A véletlen sorrendű mód kikapcsol, ha új számlistát játszik le Ha van szabad hely a képernyőn engedélyezett hangerőszabályzókkal - Extra irányítás a mini lejátszóhoz - Műfaj lap kapcsolása - Kezdőlap banner stílusának kapcsolása + Az album borítójának megjelenítése - Lap címek módja + Album borító téma + Most játszik album borító stílusa Album rács stílusa Színes alkalmazás parancsikonok Előadói rács stílusa @@ -242,8 +428,12 @@ Klasszikus értesítési terv Adaptív szín Színes értesítés + Extra vezérlők Gapless lejátszás Általános téma + Mutasd a műfaj lapot + Kezdőlapi előadó rács + Kezdőlap banner Figyelmen kívül hagyja a médiatárolók fedelét Utoljára hozzáadott lejátszási lista intervallum Teljes képernyős vezérlők @@ -251,6 +441,7 @@ Megjelenés Nyílt forráskódú licencek Sarokélek + Lap címek módja Carousel hatás Domináns szín Teljes képernyős alkalmazás @@ -259,57 +450,95 @@ Kevert mód Hangerőszabályzók Felhasználói adatok - Extra vezérlők - Kezdőlap banner - Mutasd a műfaj lapot - Kezdőlapi előadó rács - Most játszik album borító stílusa - Növelés + Elsődleges szín Az elsődleges téma színe, alapértelmezés szerint kék szürke, jelenleg sötét színekkel működik + + Profil + Vásárlás + *Gondolja vásárolása előtt, ne kérjen visszatérítést. + Sorban áll + Értékeld az alkalmazást + Szereted ezt az app-ot a Google Play áruházban, hogy jobb élményt nyújtsunk + Legutóbbi albumok + Legújabb előadók + Eltávolítás + Banner fotó törlése + Borító eltávolítása + Eltávolítás a feketelistáról + Profilfotó eltávolítása + Távolítsa el a dalt a lejátszási listáról %1$s dalt a lejátszási listából?]]> + A dalok eltávolítása a lejátszási listáról + %1$d dalt a lejátszási listából?]]> + Lejátszási lista átnevezése + Az előadó képének visszaállítása + Visszaállítás + Az előző vásárlás helyreállítása. Kérjük, indítsa újra az alkalmazást az összes funkció használatához. Korábbi vásárlások visszaállítása. + A vásárlás visszaállítása ... + Retro Zene Hangszínszabályzó + Mentés fájlként + Fájl mentése másként + Mentett lejátszási lista a következőhöz: %s + A változtatások mentése + Média szkennelés + %2$d fájlt %1$d szkennelt. + Keresés a könyvtárban ... + Minden kiválasztása + Banner fotó kiválasztása + + Kiválaszott + Állítsa be az előadó képét + Keverés + Egyszerű + Az elalváskapcsoló kikapcsolva. Az elalvási időzítő beállítása %d perc múlva. + Közösségi + Dal + A dal időtartama + Dalok + Sorrend Növekvő Album @@ -317,66 +546,87 @@ Dátum Év Csökkenő + Sajnálom! A készülék nem támogatja a beszédet + Keresés a könyvtárban + Csak mutassa meg a nevét a kezdőképernyőn + Támogatás fejlesztése + Szinkronizált dalszövegek + Rendszer kiegyenlítő + Telegram Csatlakozz a Telegram csoporthoz hogy megbeszélhesd a hibákat, ajánlásokat tegyél, bemutass valamit stb... + Köszönöm! + Az audio fájl + Ebben a hónapban + Ezen a héten + Egy éve + Apró + Irányítópult + Jó napot Jó nap Jó estét Jó reggelt Jó éjszakát + Mi a neved? + Ma + Legjobb albumok + Legjobb előadok + "Sáv (2 a 2. vagy a 3004-es számhoz a CD3 4. sávjához)" + Sáv száma + Fordítás + Segítsen nekünk az alkalmazás nyelvének fordításához + Twitter oldal Ossza meg tervét a RetroMusicApp segítségével - Nem lehetett j\u00e1tszani ezt a dalt. - A következő - Kép frissítése - Frissítés... - Verzió - Virtualizáló - Webes keresés - Mit szeretne megosztani? - Ablak - Állítsa be a (z) %1$s csengőhangot. - %1$d kiválasztása - Év - ❤️-el készítve Indiából - App adat törlése - Egy váratlan hiba történt. Találtál egy hibát, ha nem hagyja abba a fagyást, \"App adat törlése\" - Hiba - Kiinduló szín témája - 9+ most játszik témák - Kőrhinta effekt a most játszik képernyőn - Lekerekített sarkak - Album borító téma - Kör alakú - Körhinta - Most játszik képernyő személyre szabása - Teljes kártya - Profil - Bio - Autó - Címkézve + Címkézetlen - Kiválaszott + + Nem lehetett j\u00e1tszani ezt a dalt. + + A következő + + Kép frissítése + + Frissítés... + + Verzió + + Virtualizáló + + Webes keresés + + Mit szeretne megosztani? + + Ablak + + Lekerekített sarkak + + Állítsa be a (z) %1$s csengőhangot. + + %1$d kiválasztása + + Év diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index 6e32907e..2384cd20 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -1,145 +1,296 @@ - Anda harus memilih setidaknya satu kategori - Album kecil + Tim, link sosial + Warna Aksen Warna tema aksen, Default adalah biru kehijauan + Tentang + Tambahkan ke favorit Tambahkan ke antrean pemutar Tambahkan ke daftar putar + Bersihkan antrean pemutar Bersihkan daftar putar + Hapus Hapus dari perangkat + Rincian + Ke album Ke artis Pergi ke Genre Pergi ke direktori awal + Izinkan + Jumlah kisi Ukuran kisi (lanskap) + + Daftar putar baru + Selanjutnya + Putar Putar selanjutnya Putar/jeda + Sebelumnya + Hapus dari favorit Hapus dari antrean pemutar Hapus dari daftar putar + Ganti nama + Simpan antrean pemutar + Pindai Pindai direktori + Cari - Atur + Mulai Setel sebagai nada dering Setel sebagai direktori awal + "Pengaturan" + Bagikan + Acak semua Acak daftar putar + Pengatur waktu tidur + Sortir + Editor tag + Adaptif + Tambah + + Tambah lirik + Tambah\nFoto + "Tambahkan ke daftar putar" + + Tambah frame waktu lirik + "1 judul ditambahkan ke antrian pemutar" + %1$d ditambahkan ke antrean putar + Album + Album artis + Judul atau artis kosong + Album + Selalu + Hei lihat pemutar musik keren ini di: https://play.google.com/store/apps/details?id=%s + Acak Lagu teratas + Retro Musik - Besar Retro musik - Kartu Retro musik - Klasik Retro music - kecil Retro music - Teks + Artis + Artis + Fokus audio ditolak + Ubah pengaturan suara dan sesuaikan equalizer + + Otomatis + + Berdasarkan warna tema + Bass boost + + Bio + Biografi + Hanya Hitam + Daftar hitam + Buram + Kartu blur - Biarkan layar tetap menyala - Membiarkan fitur ini aktif mungkin akan berpengaruh pada daya baterai - Tingkat blur - Tingkat blur diaplikasikan pada tema blur, lebih rendah membuat lebih cepat - Retro Music Pro + + Tidak dapat mengirimkan laporan + Token akses tidak valid. Mohon hubungi pengembang apl. + Masalah tidak diaktifkan untuk repositori yang dipilih. Mohon hubungi pengembang apl. + Terjadi kesalahan tak terduga. Mohon hubungi pengembang apl. + Nama pengguna atau kata sandi salah + Isu + Kirimkan secara manual + Mohon masukkan deskripsi dari isu tersebut + Mohon masukkan kata sandi GitHub yang valid + Mohon masukkan judul isu + Mohon masukkan nama akun GitHub yang valid + Terjadi kesalahan tidak terduga. Maaf kamu mengalami masalah ini, jika +tetap bermasalah, \"Hapus data Aplikasi\" + Mengunggah laporan ke GitHub + Kirim menggunakan akun GitHub + Batalkan + Kartu - Kartu Berwarna + Bulat - Gambar + + Kartu Berwarna + Kartu + + Carousal + + Efek carousel pada layar sedang diputar + + Tersusun kebawah + Cast + Catatan perubahan + Catatan perubahan ada di aplikasi Telegram + + Melengkung + + Klasik + Bersihkan + + Hapus data aplikasi + Bersihkan daftar hitam + + Hapus antrian + Bersihkan daftar putar %1$s? Ini tidak bisa dibatalkan]]> + Tutup + Warna + Warna + Warna + + Komposer + + Info perangkat telah disalin ke clipboard. + Tidak dapat membuat daftar putar "Tidak dapat mengunduh sampul album yang Cocok" Tidak dapat mengembalikan pembelian Tidak dapat memindai %d file + Buat + Daftar putar %1$s dibuat + Member dan kontribusi + Sedang mendengarkan + Agak gelap + Tidak ada lirik + Hapus daftar putar %1$s?]]> + Hapus daftar putar + + Hapus lagu %1$s?]]> + + Hapus lagu + %1$d daftar putar?]]> %1$d lagu?]]> - Hapus lagu - Hapus lagu Lagu %1$d dihapus + + Kedalaman + + Deskripsi + + Info perangkat + + Izinkan Retro Music untuk mengubah pengaturan suara + + Atur nada dering + Bersihkan daftar hitam? %1$s dari Daftar hitam?]]> + Donasi + Jika anda rasa saya berhak dibayar untuk karya saya, anda dapat berdonasi disini + Belikan saya: + Unduh dari Last.fm + + Edit + Ubah sampul + Kosong + Ekualiser + + Error + Tanya-Jawab + Favorit + + Pas + Datar + Folder + Untuk anda + Penuh + + Kartu penuh + Ubah tema dan warna dari aplikasi Tampilan + Aliran + Genre + Fork the project on github + Gabung di komunitas Google plus, anda dapat bertanya ataupun mengikuti pembaruan dari aplikasi Retro Music + 1 2 3 @@ -148,77 +299,190 @@ anda dapat berdonasi disini 6 7 8 + + Engsel + Riwayat + Beranda + + Balik horizontal + + Gambar + Ubah pengaturan pengunduhan gambar artis + Lagu %1$d dimasukan ke daftar putar %2$s + Instagram Bagikan pengaturan Retro Musicmu di Instagram untuk menunjukannya + Bitrate + Format Nama berkas Direktori berkas Ukuran + Tingkat pengambilan sampel + Durasi + + Berlabel + Terakhir ditambahkan + + Lagu terakhir + Mari putar sebuah lagu + Pustaka + + Kategori pustaka + Lisensi + Putih jelas + Pengurutan berkas + Memuat produk... + + Masuk + Lirik + + Dibuat dengan cinta ❤️ di India + Material + + Kesalahan + + Kesalahan perizinan + Nama saya + Sering dimainkan + Jangan pernah + Banner foto baru + Daftar putar baru + Foto profil baru + %s adalah direktori awal yang baru. + + Lagu selanjutnya + Tidak ada album + Tidak ada artis + "Putar lagu lebih dahulu, lalu coba lagi" + Equalizer tidak ditemukan + Tidak ada genre + Lirik tidak ditemukan + Tidak ada daftar putar + Pembelian tidak ditemukan + Tidak ada hasil + Tidak ada lagu + Normal + Lirik normal + Normal + %s tidak ada di daftar media]]> + Tak ada apapun untuk dipindai + Pemberitahuan + Sesuaikan gaya pemberitahuan + Sedang diputar Sedang memutar antrean + Kostumisasi layar sedang diputar + 9+ gaya sedang diputar + Hanya melalui Wi-Fi + + Fitur percobaan lanjutan + Lainnya + + Kata sandi + 3 bulan lalu + + Tempel lirik di sini + Izin untuk mengakses penyimpanan eksternal ditolak. + Izin ditolak. + Personalisasi + Sesuaikan sedang diputar dan tampilan kontrol + Pilih dari penyimpanan lokal + + Pilih gambar + + Pinterest + Ikuti laman Pinterest untuk inspirasi desain Retro Music + Plain + Notifikasi pemutar menyediakan tindakan untuk mainkan/jeda, dll. Notifikasi pemutar + Kosongkan daftar putar + Daftar putar kosong + Nama daftar putar + Daftar putar + + Gaya detail album + + Tingkat blur diaplikasikan pada tema blur, lebih rendah membuat lebih cepat + Tingkat blur + + Saring durasi lagu + Audio Tema Gambar Layar kunci Daftar putar + + Jeda saat volume sedang nol dan putar setelah menaikan volume. Peringatan, ketika anda menaikan volume, musik akan mulai berputar, bahkan jika anda berada di luar aplikasi + Jeda saat volume nol + Membiarkan fitur ini aktif mungkin akan berpengaruh pada daya baterai + Biarkan layar tetap menyala + + Klik atau geser untuk membuka layar sedang diputar + Klik atau geser + "Hanya tersedia di Lollipop" + + Efek salju jatuh + Menggunakan sampul album lagu yang sedang diputar sebagai wallpaper layar kunci Volume lebih rendah ketika suara sistem diputar atau terdapat notifikasi baru + Konten folder yang telah di blacklist disembunyikan dari pustaka. Blur sampul album di layar kunci. Dapat menyebabkan masalah dengan aplikasi pihak ketiga dan widget. Efek carousel di sampul album yang sedang diputar. Ingat bahwa Kartu dan Kartu Blur takkan bekerja. Gunakan desain notifikasi klasik @@ -227,8 +491,12 @@ anda dapat berdonasi disini Warna bar navigasi primer "Warna notifikasi berdasarkan warna dominan sampul album" Warna paling dominan akan dipilih sampul album atau artis. + Tambahkan kontrol tambahan untuk pemutar mini "Dapat menyebabkan masalah pemutaran pada beberapa perangkat." + Toggle tab genre + Toggle gaya banner beranda Dapat meningkatkan kualitas sampul album tetapi menyebabkan waktu pemuatan gambar lebih lambat. Hanya aktifkan ini jika Anda memiliki masalah dengan gambar resolusi rendah. + Atur visibilitas dan perintah dari kategori pustaka. Kontrol layar kunci Retro Music. Rincian Lisensi untuk sumber terbuka aplikasi Tepi pojok untuk jendela, album seni dll. @@ -237,23 +505,27 @@ anda dapat berdonasi disini Putar segera setelah headphones terhubung. Mode acak akan non-aktif ketika memutar lagu baru dari daftar Jika ada ruang di layar yang sedang diputar, aktifkan kontrol volume - Tambahkan kontrol tambahan untuk pemutar mini - Toggle tab genre - Toggle gaya banner beranda + Tampilkan sampul album - Mode tab judul + Tema sampul album + Gaya sampul album ketika memainkan Gaya grid album Pintasan aplikasi berwarna Gaya grid artis Kurangi volume ketika hilang fokus Otomatis unduh gambar artis + Blacklist Blur sampul album Pilih equalizer Desain notifikasi klasik Warna adaptif Notifikasi berwarna + Kontrol tambahan Pemutaran tanpa jeda Tema Umum + Tampilkan tab genre + Grid artis pada beranda + Banner beranda Abaikan sampul Media Store Interval daftar putar terbaru Kontrol layar penuh @@ -261,6 +533,7 @@ anda dapat berdonasi disini Tampilan Lisensi sumber terbuka Tepi pojok + Mode tab judul Efek Carousel Warna dominan Layar penuh aplikasi @@ -269,195 +542,226 @@ anda dapat berdonasi disini Mode acak Kontrol volume Info pengguna - Kontrol tambahan - Banner beranda - Tampilkan tab genre - Grid artis pada beranda - Gaya sampul album ketika memainkan - Gaya detail album - Tersusun kebawah + Warna primer Warna tema utama, warna baku biru abu-abu, untuk saat ini berfungsi dengan warna gelap + + Profil + Beli + *Pikirkan sebelum membeli, jangan minta pengembalian uang. + Antrean + Nilai aplikasi + Sukai aplikasi ini, beri tahu kami di Google Play Store untuk memberikan pengalaman yang lebih baik + Album terbaru + Artis terbaru + Hapus + Hapus foto banner + Hapus sampul + Hapus dari daftar hitam + Hapus foto profil + Hapus lagu dari daftar putar %1$s dari daftar putar?]]> + Hapus lagu dari daftar putar + %1$d dari daftar putar?]]> + Ganti nama daftar putar + + Laporkan isu + + Laporkan bug + + Setel ulang + Setel ulang gambar artis + Pulihkan + Pembelian dipulihkan. Mulai kembali aplikasi agar semua fitur dapat digunakan Pembelian dipulihkan. + Memulihkan pembelian... + Retro Music Equalizer + + Retro Music Pro + + Simpan + Simpan berkas sebagai + Simpan file sebagai + Daftar putar disimpan ke %s. + Menyimpan perubahan + Pindai media + %1$d dari %2$d selesai dipindai. + Cari di pustaka... + Pilih semua + Pilih foto banner + + Pilih Preset + + Terpilih + + Kirim catatan kerusakan + + Atur + Setel gambar artis + + Atur foto profil + + Bagikan Apl + Acak + Sederhana + Waktu tidur dibatalkan. Pewaktu tidur diatur %d menit dari sekarang. + + Slide + + Album kecil + Sosial + Lagu + Durasi lagu + Lagu + Sortir Meningkat Album Artis + Komposer Tanggal Tahun Menurun + Maaf! Perangkat anda tidak mendukung input suara + Cari + + Saran + Hanya tampilkan nama anda di beranda + Dukung kami + + Geser untuk membuka + + Lirik yang disinkronkan + Equalizer Sistem + Telegram Gabung ke grup Telegram untuk mendiskusikan maslah, membuat permintaan, memamerkan dan lainnya + Terima kasih! + Berkas audio + Bulan ini + Pekan ini + Tahun ini + Kecil + + Judul + Dasbor + Selamat sore Selamat siang Selamat malam Selamat pagi Selamat malam + Siapa namamu + Hari ini + Album teratas + Artis teratas + "Trek (2 untuk trek 2 atau 3004 untuk CD3 trek 4)" + Nomor trek + Terjemahkan + Help us translating app to your language + Halaman Twitter Bagikan desain anda dengan RetroMusicApp - Tidak dapat memutar lagu ini. - Selanjutnya - Perbarui gambar - Memperbarui… - Versi - Virtualisasi - Pencarian web - Apa yang ingin anda bagikan? - Jendela - Atur %1$s sebagai nada dering. - %1$d dipilih - Tahun - Dibuat dengan cinta ❤️ di India - Hapus data aplikasi - Terjadi kesalahan tidak terduga. Maaf kamu mengalami masalah ini, jika -tetap bermasalah, \"Hapus data Aplikasi\" - Error - Berdasarkan warna tema - 9+ gaya sedang diputar - Efek carousel pada layar sedang diputar - Sudut melengkung - Tema sampul album - Melengkung - Carousal - Kostumisasi layar sedang diputar - Kartu penuh - Profil - Bio - Otomatis - Berlabel + Tidak berlabel - Terpilih - Kedalaman - Balik vertikal - Engsel - Balik horizontal - Jeda saat volume sedang nol dan putar setelah menaikan volume. Peringatan, ketika anda menaikan volume, musik akan mulai berputar, bahkan jika anda berada di luar aplikasi - Jeda saat volume nol - Apa yang baru - Saran - Pas - Klik atau geser - Klik atau geser untuk membuka layar sedang diputar - Hapus antrian - Bagikan Apl - Laporkan bug - Kirim menggunakan akun GitHub - Masuk - Kirimkan secara manual - Anda akan diteruskan ke situs web pelacak masalah. - Isu - Judul - Deskripsi + + Tidak dapat memutar lagu ini. + + Selanjutnya + + Perbarui gambar + + Memperbarui… + Nama pengguna - Kata sandi - Info perangkat - Laporkan isu - Mohon masukkan nama akun GitHub yang valid - Mohon masukkan kata sandi GitHub yang valid - Mohon masukkan judul isu - Mohon masukkan deskripsi dari isu tersebut - Mengunggah laporan ke GitHub - Tidak dapat mengirimkan laporan - Nama pengguna atau kata sandi salah - Token akses tidak valid. Mohon hubungi pengembang apl. - Masalah tidak diaktifkan untuk repositori yang dipilih. Mohon hubungi pengembang apl. - Terjadi kesalahan tak terduga. Mohon hubungi pengembang apl. - Info perangkat telah disalin ke clipboard. + + Versi + + Balik vertikal + + Virtualisasi + + Pencarian web + + Apa yang ingin anda bagikan? + + Apa yang baru + + Jendela + + Sudut melengkung + + Atur %1$s sebagai nada dering. + + %1$d dipilih + + Tahun + + Anda harus memilih setidaknya satu kategori + + Anda akan diteruskan ke situs web pelacak masalah. + Data akun anda hanya digunakan untuk otentikasi - Efek salju jatuh - Blacklist - Konten folder yang telah di blacklist disembunyikan dari pustaka. - Kirim catatan kerusakan - Pinterest - Ikuti laman Pinterest untuk inspirasi desain Retro Music - Saring durasi lagu - Kesalahan - Kesalahan perizinan - Klasik - Komposer - Komposer - Lagu selanjutnya - Lagu terakhir - Slide - Simpan - Pilih gambar - Atur foto profil - Edit - Geser untuk membuka - Tambah lirik - Tempel lirik di sini - Tambah frame waktu lirik - Lirik yang disinkronkan - Atur nada dering - Izinkan Retro Music untuk mengubah pengaturan suara - Tim, link sosial - Fitur percobaan lanjutan - Pilih Preset - Daftar putar baru - Setel ulang - Kategori pustaka - Atur visibilitas dan perintah dari kategori pustaka. diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 1e52820c..77ca8fd0 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -1,50 +1,71 @@ - Warna aksen Warna aksen, warna bawaan adalah pink. Tentang + Tambahkan sebagai favorit Tambahkan ke antrian Tambahkan ke daftar putar... + Bersihkan antrian + Hapus Hapus dari perangkat + Rincian + Lihat album Lihat artis Lihat direktori awal + Izinkan + Ukuran kotak Ukuran kotak (lansekap) + Selanjutnya + Putar Putar selanjutnya Putar/Jeda + Sebelumnya + Hapus dari favorit Hapus dari antrian Hapus dari daftar putar + Ubah nama + Pindai + Cari + Atur Atur sebagai nada dering Atur sebagai direktori awal + "Setelan" + Bagikan + Acak semua Acak daftar putar + Sunting Tag "Tambahkan ke daftar putar" "1 judul ditambahkan ke antrian." + %1$d judul ditambahkan ke antrian. Album + Artis album + Judul atau artis kosong. Album @@ -53,6 +74,7 @@ Acak + Retro music - Besar Retro music - Klasik @@ -84,11 +106,13 @@ Hapus daftar putar %1$s?]]> + Hapus daftar putar + %1$s?]]> + %1$d daftar putar?]]> %1$d lagu?]]> - %1$d lagu dihapus. Donasi @@ -112,11 +136,14 @@ %1$d lagu dimasukkan ke daftar putar %2$s. Birate + Format Nama fail Lokasi fail Ukuran + Rasio sampling + Durasi Terakhir ditambahkan @@ -138,14 +165,21 @@ Tidak pernah Daftar putar baru... + %s adalah direktori awal Tidak ada album + Tidak ada artis + "Putar lagu dahulu, lalu coba lagi." + Tidak ada ekualizer ditemukan. + Tidak ada daftar putar + Tak ada hasil + Tidak ada lagu Pemberitahuan @@ -161,6 +195,7 @@ Pilih dari penyimpanan lokal Daftar putar kosong + Nama daftar putar Daftar putar @@ -168,7 +203,9 @@ Suara Gambar Layarkunci + "Hanya tersedia pada Lollipop." + Menggunakan gambar album sebagai latar layarkunci. Pemberitahuan, navigasi, dll. Kaburkan gambar album pada layarkunci. Dapat menyebabkan masalah pada apl pihak ketiga dan widget. @@ -179,6 +216,7 @@ "Dapat menyebabkan masalah pada beberapa perangkat." Meningkatkan kualitas gambar album namun memperlambat waktu muat. Aktifkan ini hanya jika ada masalah dengan gambar album resolusi rendah. Lengkungan pojok jendela dan gambar album. + Perlihatkan gambar album Pintasan apl berwarna Kurangi volume saat kehilangan fokus @@ -199,16 +237,18 @@ Nilai aplikasi Hapus + Hapus gambar album + Hapus lagu dari daftar putar %1$s dari daftar putar?]]> + Hapus lagu dari daftar putar + %1$d lagu dari daftar putar?]]> Ubah nama daftar putar - Simpan sebagai fail - Daftar putar tersimpan ke %s. Menyimpan perubahan @@ -226,6 +266,7 @@ Urutan sortir Maaf! Perangkat anda tidak mendukung input suara + Cari di perpustakaan Dukungan pengembangan @@ -249,8 +290,8 @@ Apa yang ingin anda bagikan? Atur %1$s sebagai nada dering. + %1$d dipilh Tahun - diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index e5640f53..d9c2737a 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -1,143 +1,297 @@ - Seleziona almeno una categoria. - Album piccolo + Team e pagine social + Colore dominante Il colore di accento del tema, verde acqua è il predefinito + Informazioni + Aggiungi ai preferiti Aggiungi alla coda Aggiungi alla playlist + Cancella coda Svuota la playlist + Rimuovi Cancella dal dispositivo + Dettagli + Vai all\'album Vai all\'artista Vai al genere Torna al percorso iniziale + Concedi + Dimensione griglia Dimensione griglia (orizzontale) + + Nuova playlist + Successivo + Riproduci + Riproduci tutti Riproduci successivo Riproduci/Pausa + Precedente + Rimuovi dai preferiti Rimuovi dalla coda Rimuovi dalla playlist + Rinomina + Salva coda + Scansiona Scansiona cartella + Cerca - Imposta + Inizia Imposta come suoneria Imposta come percorso iniziale + "Impostazioni" + Condividi + Riproduzione casuale Riproduzione casuale playlist + Timer sonno + Ordina per + Modifica tag + Adattivo + Aggiungi + + Aggiungi testi + Aggiungi immagine + "Aggiungi alla playlist" + + Aggiungi testi sincronizzati + "Aggiunto un brano alla coda." + Aggiungi %1$d brani alla coda. + Album + Artista album + Il titolo o l\'artista sono vuoti + Album + Sempre + Hey, dai un\'occhiata a questo bel lettore musicale a: + Casuale Tracce migliori + Retro music - Grande Retro Music - Card Retro Music - Classico Retro Music - Piccolo Retro music - Testo + Artista + Artisti + Focalizzazione audio negata. + Modifica le impostazioni audio e regola i controlli dell\'equalizzatore + + Auto + + Colore base del tema + Bass Boost + + Bio + Biografia + Solo nero + Blacklist + Sfocatura + Card sfocata - Mantieni lo schermo acceso - Ricorda che abilitando questa opzione la batteria potrebbe risentirne - Quantità di sfocatura - Quantità di sfocatura applicata per i temi con sfocatura, minore è più veloce - Retro Music Pro + + Impossibile inviare il rapporto + Accesso fallito. Per favore contatta lo sviluppatore dell\'app. + I problemi non sono abilitati per la repository selezionata. Per favore contatta lo sviluppatore dell\'app. + Si è verificato un errore inaspettato. Per favore contatta lo sviluppatore dell\'app. + Nome utente o password errati + Problema + Invia manualmente + Inserisci una descrizione del problema + Inserisci la tua password GitHub + Inserisci un titolo al problema + Inserisci il tuo nome utente GitHub + Si è verificato un errore imprevisto. Mi dispiace, se continua a bloccarsi \"Cancella i dati\" dell\'app o inviami un\'email + Caricando il rapporto su GitHub... + Invia con l\'account GitHub + Annulla + Card - Card colorata + Circolare - Immagine + + Card colorata + Card + + Carosello + + Effetto scorrimento sulla schermata di riproduzione + + Cascata + Forma + Ultime modifiche + Per visualizzare le ultime modifiche, entra nel canale Telegram + + Circolare + + Classico + Vuoto + + Cancella i dati dell\'app + Cancella blacklist + + Cancella coda + Cancella playlist % 1 $ s ? Questo non pu\u00f2 essere annullato!]]> + Chiudi + Colore + Colore - Chiaro Scuro (alpha) + Colori + + Compositore + + Info dispositivo copiate negli appunti. + Impossibile creare la playlist. "Impossibile scaricare una copertina di album corrispondente." Impossibile ripristinare l\'acquisto. Impossibile scansionare %d file. + Crea + Playlist creata + Membri e contributori + Ascoltando attualmente %1$s di %2$s. + Tipo buio + + Chiaro Scuro (alpha) + Nessun testo + Elimina playlist %1$s?]]> + Elimina playlist + + Elimina canzone %1$s?]]> + + Elimina brani + %1$d playlist?]]> %1$d brani?]]> - Elimina canzone - Elimina brani Eliminati %1$d brani + + Profondità + + Descrizione + + Info dispositivo + + Consenti a Retro Music di modificare le impostazioni audio + + Imposta suoneria + Vuoi cancellare la blacklist? %1$s dalla blacklist?]]> + Dona + Se pensi che io meriti di essere pagato per il mio lavoro, puoi lasciarmi qualche soldo qui + Pagami un: + Scarica da Last.fm + + Modifica + Modifica copertina + Vuoto + Equalizzatore + + Errore + FAQ + Preferiti + + Termina ultimo brano + + Adatta + Piatto + Cartelle + Per te + Pieno + + Scheda intera + Cambia il tema e i colori dell\'app Aspetto + Genere + Generi + Sviluppa il progetto su GitHub + Unisciti alla community di Google Plus, dove puoi chiedere aiuto o seguire gli aggiornamenti di Retro Music + 1 2 3 @@ -146,77 +300,201 @@ 6 7 8 + + + + Cerniera + Cronologia + Home + + Flip orizzontale + + Immagine + + Immagine sfumata + Modifica le impostazioni di download delle immagini + Inseriti %1$d brani nella playlist %2$s. + Instagram Condividi la tua configurazione di RetroMusic per mostrarla su Instagram + + Tastiera + Bitrate + Formato Nome del file Percorso del file Dimensione + Frequenza di campionamento + Lunghezza + + Etichettato + Ultimi aggiunti + + Ultimo brano + Suoniamo un po\' di musica + Raccolta + + Categorie della raccolta + Licenze + Bianco puro + Elenco dei file + Caricamento prodotti... + + Accedi + Testi + + Made with ❤️ in India + Material + + Errore + + Errore di autorizzazione + Nome + I più riprodotti + Mai + Nuova immagine copertina + Nuova playlist + Nuova foto del profilo + %s è la nuova directory di avvio + + Brano successivo + Nessun album + Nessun artista + "Prima riproduci un brano, poi riprova." + Nessun equalizzatore trovato + Nessun genere + Nessun testo trovato + Nessuna playlist + Nessun acquisto trovato. + Nessun risultato + Nessun brano + Normale + Testi normali + Normale + %s non è presente nel Media Store.]]> + Niente da rilevare + Notifica + Modifica lo stile delle notifiche + In riproduzione Coda in riproduzione + Personalizza la schermata riproduzione + Più di 9 schermate di riproduzione + + Acceso + Solo tramite Wi-fi + + Funzionalità avanzate + Altro + + Password + Ultimi 3 mesi + + Incolla i testi qui + Autorizzazione ad accedere all\'archiviazione esterna negata. + Autorizzazione negata. + Personalizza + Personalizza i comandi riproduzione + Scegli dalla memoria locale + + Scegli immagine + + Pinterest + Segui la pagina Pinterest per ispirazioni sul design di Retro Music + Piatto + La notifica di riproduzione fornisce azioni per riproduzione/pausa ecc. Notifica di riproduzione + Playlist vuota + La playlist è vuota + Nome playlist + Playlist + + Stile dettagli album + + Quantità di sfocatura applicata per i temi con sfocatura, minore è più veloce + Quantità di sfocatura + + Filtro durata brano + + Stile album Audio + Controlli Tema Immagini + Raccolta Schermata di blocco Playlist + + Mette in pausa la riproduzione a zero e riprende aumentando il volume. Attenzione: quando aumenti il volume la riproduzione inizia anche all\'esterno dell\'app + Pausa a zero + Ricorda che abilitando questa opzione la batteria potrebbe risentirne + Mantieni lo schermo acceso + + Premi per aprire o scorri nella schermata di riproduzione + Premi o scorri + "Disponibile solo con Lollipop" + + Effetto neve + Imposta la copertina del brano riprodotto come sfondo del blocco schermo Riduce il volume quando viene riprodotto un suono di sistema o viene ricevuta una notifica + Il contenuto delle cartelle nella blacklist non compare nella raccolta. Sfoca la copertina dell\'album sulla schermata di blocco. Può causare problemi con app e widget di terze parti Effetto scorrimento della copertina nella schermata in riproduzione. Non funziona con i temi Scheda e Scheda sfocata Usa il design classico delle notifiche @@ -225,8 +503,12 @@ Colora la barra di navigazione con il colore primario "Colora la notifica con il colore principale della copertina dell'album" Il colore dominante verrà selezionato dall\'album o dalla copertina dell\'artista + Aggiungi controlli extra nel mini player "Può causare problemi di riproduzione su alcuni dispositivi" + Attiva la scheda Genere + Attiva banner nella home Può aumentare la qualità delle copertine degli album, ma causa un rallentamento nel caricamento delle immagini. Abilita solo se hai problemi con la bassa qualità delle copertine + Configura la visibilità e l\'ordine delle categorie Usa i comandi di Retro Music nella schermata di blocco Dettagli licenza per il software open source Arrotonda i bordi dell\'app @@ -235,23 +517,27 @@ Inizia la riproduzione subito dopo aver collegato le cuffie La modalità casuale viene disattivata quando si riproduce un nuovo elenco di brani Se c\'è spazio sufficiente, mostra i controlli del volume nella schermata in riproduzione - Aggiungi controlli extra nel mini player - Attiva la scheda Genere - Attiva banner nella home + Mostra la copertina dell\'album - Modalità titoli schede + Tema copertina dell\'album + Modalità cambio copertina dell\'album Griglia album Scorciatoie app colorate Griglia artista Riduzione volume con perdita di focalizzazione audio Scarica automaticamente immagini artista + Blacklist Copertina dell\'album sfocata Scegli un equalizzatore Design classico per le notifiche Colore adattivo Notifica colorata + Controlli extra Riproduzione senza interruzioni Tema generale + Mostra scheda Genere + Griglia schermata artista + Home banner Ignora le copertine del Media Store Intervallo playlist ultimi aggiunti Controlli a schermo intero @@ -259,6 +545,7 @@ Tema schermata riproduzione Licenze open source Angoli arrotondati + Modalità titoli schede Effetto scorrimento Colore dominante Applicazione a schermo intero @@ -267,209 +554,238 @@ Modalità casuale Controlli volume Info utente - Controlli extra - Home banner - Mostra scheda Genere - Griglia schermata artista - Modalità cambio copertina dell\'album - Stile dettagli album - Cascata + + Ottieni premium + Colore primario Il colore primario del tema, blu-grigio di default, per ora funziona con colori scuri + + Temi in riproduzione, effetto scorrimento e molto altro... + + Profilo + Acquista + * Pensaci prima di acquistare, non chiedere il rimborso. + Coda + Valuta l\'app + Adori quest\'app? Facci sapere sul Play Store come possiamo renderla ancora migliore + Album recenti + Artisti recenti + Rimuovi + Rimuovi la foto del banner + Rimuovi copertina + Rimuovi dalla blacklist + Rimuovi la foto profilo + Rimuovi il brano dalla playlist %1$s dalla playlist?]]> + Rimuovi brani dalla playlist + %1$d dalla playlist?]]> + Rinomina playlist + + Segnala un problema + + Segnala bug + + Ripristina + Ripristina immagine artista + Ripristina + Acquisto precedente ripristinato. Riavvia l\'app per utilizzare tutte le funzionalità. Acquisti precedenti ripristinati. + Ripristino acquisto... + Equalizzatore di Retro Music + + Retro Music Pro + + Salva + Salva come file + Salva come file + Playlist salvata in %s. + Salvataggio modifiche + Scansiona media + Scansionati %1$d di %2$d file. + Cerca nella tua raccolta... + Seleziona tutto + Seleziona la foto del banner + + Seleziona preimpostato + + Selezionato + + Invia registro errori + + Imposta + Imposta immagine artista + + Imposta una foto profilo + + Condividi app + Casuale + Semplice + Timer sonno cancellato. Timer sonno impostato per %d minuti da ora. + + Scorri + + Album piccolo + Social + Brano + Durata brano + Brani + Ordina per Crescente Album Artista + Compositore Data Anno Decrescente + Il tuo dispositivo non supporta l\'input vocale + Cerca nella tua raccolta + + Pila + + Inizia a riprodurre musica. + + Suggerimenti + Mostra il tuo nome nella schermata home + Sostieni lo sviluppo + + Scorri per sbloccare + + Testi sincronizzati + Equalizzatore di sistema + Telegram Unisciti al gruppo Telegram per discutere dei bug, dare suggerimenti e molto altro + Grazie! + Il file audio + Questo mese + Questa settimana + Quest\'anno + Piccolo + + Titolo + Dashboard + Buon pomeriggio Buona giornata Buonasera Buongiorno Buonanotte + Qual è il tuo nome + Oggi + Album migliori + Artisti migliori + "Traccia (2 per traccia 2 o 3004 per CD3 traccia 4)" + Numero traccia + Traduci + Aiutaci traducendo l\'app nella tua lingua + Twitter Condividi il tuo design con Retro Music - Impossibile riprodurre il brano. - Prossimo - Aggiorna immagine - Aggiornamento... - Versione - Virtualizer - Ricerca web - Cosa vuoi condividere? - Finestra - %1$s impostata come suoneria. - %1$d selezionato - Anno - Made with ❤️ in India - Cancella i dati dell\'app - Si è verificato un errore imprevisto. Mi dispiace, se continua a bloccarsi \"Cancella i dati\" dell\'app o inviami un\'email - Errore - Colore base del tema - Più di 9 schermate di riproduzione - Effetto scorrimento sulla schermata di riproduzione - Angoli arrotondati - Tema copertina dell\'album - Circolare - Carosello - Personalizza la schermata riproduzione - Scheda intera - Profilo - Bio - Auto - Etichettato + Senza etichetta - Selezionato - Profondità - Flip verticale - Cerniera - Flip orizzontale - Mette in pausa la riproduzione a zero e riprende aumentando il volume. Attenzione: quando aumenti il volume la riproduzione inizia anche all\'esterno dell\'app - Pausa a zero - Novità - Suggerimenti - Adatta - Premi o scorri - Premi per aprire o scorri nella schermata di riproduzione - Cancella coda - Condividi app - Segnala bug - Invia con l\'account GitHub - Accedi - Invia manualmente - Verrai reindirizzato al sito web dei problemi. - Problema - Titolo - Descrizione - Nome utente - Password - Info dispositivo - Segnala un problema - Inserisci il tuo nome utente GitHub - Inserisci la tua password GitHub - Inserisci un titolo al problema - Inserisci una descrizione del problema - Caricando il rapporto su GitHub... - Impossibile inviare il rapporto - Nome utente o password errati - Accesso fallito. Per favore contatta lo sviluppatore dell\'app. - I problemi non sono abilitati per la repository selezionata. Per favore contatta lo sviluppatore dell\'app. - Si è verificato un errore inaspettato. Per favore contatta lo sviluppatore dell\'app. - Info dispositivo copiate negli appunti. - I dati del tuo account vengono utilizzati solo per l\'autenticazione. - Effetto neve - Blacklist - Il contenuto delle cartelle nella blacklist non compare nella raccolta. - Invia registro errori - Pinterest - Segui la pagina Pinterest per ispirazioni sul design di Retro Music - Filtro durata brano - Errore - Errore di autorizzazione - Classico - Compositore - Compositore - Brano successivo - Ultimo brano - Scorri - Salva - Scegli immagine - Imposta una foto profilo - Modifica - Raccolta - Scorri per sbloccare - Aggiungi testi - Incolla i testi qui - Aggiungi testi sincronizzati - Testi sincronizzati - Imposta suoneria - Consenti a Retro Music di modificare le impostazioni audio - Team e pagine social - Funzionalità avanzate - Acceso - Seleziona preimpostato + + Impossibile riprodurre il brano. + + Prossimo + + Aggiorna immagine + + Aggiornamento... + Passa a premium - Nuova playlist - Termina ultimo brano - Immagine sfumata - Pila - + + Nome utente + + Versione + + Flip verticale + + Virtualizer + + Ricerca web + Benvenuto. - Ottieni premium - Temi in riproduzione, effetto scorrimento e molto altro... - Riproduci tutti - Inizia a riprodurre musica. - Tastiera - Ripristina - Categorie della raccolta - Configura la visibilità e l\'ordine delle categorie - Controlli - Stile album + + Cosa vuoi condividere? + + Novità + + Finestra + + Angoli arrotondati + + %1$s impostata come suoneria. + + %1$d selezionato + + Anno + + Seleziona almeno una categoria. + + Verrai reindirizzato al sito web dei problemi. + + I dati del tuo account vengono utilizzati solo per l\'autenticazione. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 5f6f83eb..c681223b 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -1,139 +1,288 @@ - 小さなアルバム + 我々のチームとソーシャルリンク + アクセントカラー テーマのアクセントカラー、既定は青緑色です。 + このアプリについて + お気に入りに追加 再生キューに追加 プレイリストに追加… + 再生キューをクリア プレイリストを削除 + 削除 デバイスから削除 + 詳細 + アルバムに移動 アーティストに移動 ジャンルに移動 最初のディレクトリに移動 + 承諾 + グリッドサイズ グリッドサイズ(土地) + + 再生 次に再生する 再生/一時停止 + + お気に入りから削除 再生キューから削除 プレイリストから削除 + 名前を変更 + 再生キューを保存 + スキャン ディレクトリをスキャン + 検索 - 決定 + 開始 着信音に設定 最初のディレクトリとして設定する + "設定" + 共有 + すべてシャッフル プレイリストをシャッフル + スリープタイマー + 順番をソート + 音楽タグエディター + アダプティブ + 追加 + + 歌詞を追加 + 写真を\n追加 + "プレイリストに追加" + + 歌詞に時間枠を組み入れる + "1曲が再生キューに追加されました" + %1$d 曲が再生キューに追加されました + アルバム + アルバム アーティスト + 不明なタイトルまたはアーティスト + アルバム + 常に + クールな音楽プレイヤーをチェックしよう: https://play.google.com/store/apps/details?id=%s + シャッフル トップ曲 + レトロミュージック - ビッグ レトロミュージック - カード レトロミュージック - クラシック レトロミュージック - 小 Retro music - テキスト + アーティスト + アーティスト + オーディオのフォーカスが拒否されました。 + サウンド設定を変更し、イコライザーコントロールを調整する + + 自動 + + ベースカラーテーマ + 低音ブースト + + バイオグラフィー + バイオグラフィー + + ブラックリスト + ぼかし + ブラーとカード - 画面をオンのままにする - この機能をオンにすると、バッテリー寿命に影響する可能性があります - ぼかしの強さ - ブラーを使用するテーマを使用した際のブラーの強さを設定します。低いほど処理が早くなります - Retro Music Pro + + レポートを送信できませんでした + 無効なトークン:アプリの開発者に連絡してください + 選択されたリポジトリで問題が有効になっていません。開発者に連絡してください + 予期しないエラーが発生しました。開発者に連絡してください。 + ユーザー名かパスワードが違います + 問題 + 手動で送信 + 問題の説明を入力してください + 有効なGitHubのパスワードを入力してください + 問題のタイトルを入力してください + 有効なGitHubアカウントのユーザー名を入力してください + 予期しないエラーが発生しました。申し訳ございません。 +このバグが何度も発生する場合は、端末のアプリ設定より「データを削除する(Androidバージョンによって異なります)」を実行するか、概要をメールで送信してください。 + GitHubにレポートをアップロード中... + GitHubアカウントを使って送信 + キャンセル + カード - 色付きのカード + - 画像 + + 色付きのカード + カード + + カルーセル + + 再生中画面でのカルーセル効果 + + 重ねて表示 + キャスト + パッチノート + 電報チャネルで変更ログが維持されています + + + + クラシック + 削除 + + アプリのデータを削除 + ブラックリストを削除 + + キューを削除 + プレイリストを削除 %1$s \u3092\u524a\u9664\u3057\u307e\u3059\u304b? \u3053\u306e\u64cd\u4f5c\u306f\u5fa9\u5143\u3067\u304d\u307e\u305b\u3093!]]> + 閉じる + カラフル + カラフル + + + 作曲家 + + 端末情報をコピー + \u30d7\u30ec\u30a4\u30ea\u30b9\u30c8\u306e\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 "\u9069\u5207\u306a\u30a2\u30eb\u30d0\u30e0\u30a2\u30fc\u30c8\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f" 購入の復元に失敗しました %d のファイルをスキャンできませんでした + 作成 + プレイリストを作成しました %1$s + メンバーと貢献者 + 現在、 %1$s によって %2$s で聴いています。 + ちょっと暗い + 歌詞がありません + プレイリストを削除 %1$s を削除しますか?]]> + プレイリストを削除 + %1$s を削除しますか?]]> + %1$d を削除しますか?]]> %1$d 曲を削除しますか?]]> %1$d 曲を削除しました + + 深さ + + 説明 + + 端末の情報 + + Retro Musicにオーディオ設定の変更を許可する + + 着信音に設定 + ブラックリストを削除しますか? %1$s をブラックリストから削除しますか?]]> + 寄付します + 私が自分の仕事に払う価値があると思うなら、あなたはここにお金を残すことができます + 俺を購入: + Last.fm からダウンロード + + 編集 + カバーを編集 + 空の + イコライザー + + エラー + よくある質問 + お気に入り + + フィット + フラット + フォルダ + あなたのために + いっぱい + + 全体のカード + このアプリのテーマや色を変更します 見た目と操作感 + ジャンル + ジャンル + GitHubでプロジェクトにフォークする + Google Plus コミュニティに参加してヘルプや Retro Music のアップデート情報を受け取ろう + @@ -142,77 +291,188 @@ + + ヒンジ + 履歴 + ホーム + + 水平方向に反転 + + 画像 + アーティスト画像のダウンロード設定を変更する + プレイリスト %2$s に %1$d 曲を追加しました + Instagram 君のRetro Music設定を共有してInstagramにショーケースしましょう + ビットレート + フォーマット ファイルの名前 ファイルパス サイズ + サンプリングレート + 長さ + + ラベル付き + 最後に追加された + + 前の曲 + 何か再生しよう + ライブラリ + ライセンス + はっきり白 + リスティングファイル + 商品の読み込み中... + + ログイン + 歌詞 + + Made with ❤️ in India + マテリアル + + エラー + + 権限が付与されていません + 名前 + 最も再生された + 決して + 新しいバナー画像 + 新しいプレイリスト + 新しいプロフィール画像 + %s は新しい開始ディレクトリです。 + + 次の曲 + アルバムがありません + アーティストがありません + "音楽再生してから、再度お試しください" + イコライザが見つかりませんでした + ジャンルがありません + 歌詞が見つかりませんでした + プレイリストがありません + 購入が見つかりません。 + 結果なし + 曲がありません + 通常 + 通常の歌詞 + 通常 + %s がリストされたされていません。]]> + スキャン対象がありません + 通知 + 通知スタイルを変更 + 再生中 再生中のキュー + 再生中の画面をカスタマイズ + 9種類以上の再生中テーマ + Wi-Fi時のみ + + 高度な試験的機能 + その他 + + パスワード + 過去3ヶ月 + + ここに歌詞を入力してください + 外部ストレージへのアクセスが拒否されました + 許可が拒否されました + 個人用設定 + 再生中のUI画面をカスタマイズ + ローカルストレージから選択 + + 画像を選択 + + Pinterest + PintrestでRetro Musicのデザインのインスピレーションを感じましょう! + プレーン + 再生中の通知は再生/停止の操作が利用できます 再生中の通知 + 空のプレイリスト + プレイリストが空です + プレイリストの名前 + プレイリスト + + アルバムのディテールスタイル + + ブラーを使用するテーマを使用した際のブラーの強さを設定します。低いほど処理が早くなります + ぼかしの強さ + + 曲の長さをフィルター + オーディオ テーマ 画像 ロック画面 プレイリスト + + 音量がゼロになると自動的に音楽が一時停止し、再び音量を上げると音楽が再生されます。※あなたがアプリ外で音量を上げると、Retro Musicも再生を開始します。 + 音量をゼロで一時停止 + この機能をオンにすると、バッテリー寿命に影響する可能性があります + 画面をオンのままにする + + 現在再生中の画面に移動せずに、クリックまたはスライドして開く + クリックもしくはスライド + "Lollipop バージョンでのみ利用できます" + + スノーフォールエフェクト + 再生中のジャケットをロック画面の壁紙に適用する システムでサウンドが再生されたとき、または通知が受信されたときに一時的に音量を下げる + ブラックリストに登録されたフォルダの内容はコレクションには表示されません。 ロック画面のジャケットをぼかします。他のアプリやウィジェットに問題を及ぼす可能性があります 再生中のジャケットにスライドエフェクトを適用する。この設定を適用するとカードテーマの設定は自動的にオフになります 古い通知デザインを使用する @@ -221,7 +481,10 @@ ナビゲーションバーにプライマリカラーを適用します "\u30b8\u30e3\u30b1\u30c3\u30c8\u304b\u3089\u62bd\u51fa\u3055\u308c\u305f\u8272\u3067\u901a\u77e5\u3092\u7740\u8272\u3059\u308b" 全体の色はアルバムジャケットまたはアーティストの画像から選択されます + ミニプレイヤー専用のコントロールボタンを追加する "一部のデバイスでは再生に問題が発生する場合があります" + ジャンルタブを切り替える + ホーム画面を切り替える アルバムジャケットのクオリティを上げますが、読み込みに時間がかかる場合があります。低解像度の画像で問題がある場合に有効です。 Retro Musicのカスタムされたロック画面を使用する オープンソースライセンスの詳細 @@ -231,23 +494,27 @@ ヘッドフォンが接続されたら自動で再生を開始する 新しいリストの楽曲を再生する時にシャッフルは自動的にオフになります 再生画面に十分なスペースがある場合に音量コントロールを追加する - ミニプレイヤー専用のコントロールボタンを追加する - ジャンルタブを切り替える - ホーム画面を切り替える + アルバムジャケットを表示 - タブのラベルモード + アルバムカバーのテーマ + アルバムジャケットをスキップ アルバムの間隔 色のついたアプリショートカット アーティストの間隔 フォーカスロス時に音量を下げる アーティスト画像を自動でダウンロードする + ブラックリスト アルバムジャケットにぼかしを適用する イコライザーを選択 古い通知デザイン アダプティブカラー 色付きの通知 + 追加のコントロール ギャップレス再生 アプリのテーマ + ジャンルタブを表示 + アーティストの間隔 + ホーム画面 Media Store のカバーを無視する 最後に追加されたプレイリストの間隔 フルスクリーンコントロール @@ -255,6 +522,7 @@ 再生中のテーマ オープンソースライセンス コーナーと角 + タブのラベルモード カルーセルエフェクト 全体の色 フルスクリーンアプリ @@ -263,191 +531,221 @@ シャッフルモード ボリュームコントロール ユーザー情報 - 追加のコントロール - ホーム画面 - ジャンルタブを表示 - アーティストの間隔 - アルバムジャケットをスキップ - アルバムのディテールスタイル - 重ねて表示 + プライマリカラー "プライマリカラーはデフォルトではブルーグレーに設定されています。現在はダークモードでのみ動作します。 " + + プロフィール + 購入 + 購入後に返金を求めないようにお願い申し上げます。 + キュー + アプリを評価する + このアプリを気に入りましたか?アプリをより良いものにするために、Google Play Storeで問題の報告と意見をよろしくお願いします。 + 最近のアルバム + 最近のアーティスト + 削除 + バナー画像を削除する + ジャケットを削除 + ブラックリストから削除 + プロフィール画像を削除 + プレイリストから曲を削除 %1$s をプレイリストから削除しますか?]]> + プレイリストから曲を削除する + %1$d をプレイリストから削除しますか?]]> + プレイリストの名前を変更 + + 問題を報告 + + 不具合を報告する + アーティスト画像をリセット + 復元 + 購入を復元しました。アプリを再起動してフルバージョンをご堪能ください! 購入を復元しました + 購入を復元しています... + Retro Music イコライザ + + Retro Music Pro + + 保存 + ファイルとして保存 + ファイルとして保存 + %s にプレイリストを保存しました + 変更を保存中 + メディアをスキャン + %2$d のうち、%1$d がスキャンされました + ライブラリを検索しています... + すべて選択 + バナー画像を選択してください + + 選択された + + クラッシュログを送信する + + 決定 + アーティスト画像を設定 + + プロフィール画像を設定 + + アプリを共有する + シャッフル + シンプル + スリープタイマーがキャンセルされました スリープタイマーは %d 分後に設定されました。 + + スライド + + 小さなアルバム + ソーシャル + + 曲の長さ + + 順番をソート 昇順 アルバム アーティスト + 作曲家 日付 降順 + ごめんなさい! このデバイスは音声入力に対応しておりません + ライブラリを検索 + + 改善を提案 + ホームに名前が表示されます + 開発を支援 + + スワイプしてアンロック + + 連動した歌詞 + システムのイコライザ + Telegram Telegram のグループに参加して、バグについて話し合ったり、提案したりしましょう + ありがとう! + オーディオファイル + 今月 + 今週 + 今年 + 小さい + + 主題 + ダッシュボード + こんにちは 良い一日を こんばんは おはようございます おやすみなさい + あなたの名前はなんですか? + 今日 + トップアルバム + トップアーティスト + "トラック(トラック2の場合は「truck 2」、CD3でtruck4の場合は 「3004」)" + トラック番号 + 翻訳 + 翻訳を手伝ってください! + ツイッター あなたのデザインを皆に共有しましょう - \u3053\u306e\u66f2\u3092\u518d\u751f\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f - - 画像を更新 - 更新中... - バージョン - バーチャライザー - ウェブで検索 - 何を共有しますか? - ウィンドウ - %1$s をあなたの着信音として設定しました - %1$d が選択されました - - Made with ❤️ in India - アプリのデータを削除 - 予期しないエラーが発生しました。申し訳ございません。 -このバグが何度も発生する場合は、端末のアプリ設定より「データを削除する(Androidバージョンによって異なります)」を実行するか、概要をメールで送信してください。 - エラー - ベースカラーテーマ - 9種類以上の再生中テーマ - 再生中画面でのカルーセル効果 - 角を丸める - アルバムカバーのテーマ - - カルーセル - 再生中の画面をカスタマイズ - 全体のカード - プロフィール - バイオグラフィー - 自動 - ラベル付き + ラベル付きでない - 選択された - 深さ - 垂直方向に反転 - ヒンジ - 水平方向に反転 - 音量がゼロになると自動的に音楽が一時停止し、再び音量を上げると音楽が再生されます。※あなたがアプリ外で音量を上げると、Retro Musicも再生を開始します。 - 音量をゼロで一時停止 - 更新内容 - 改善を提案 - フィット - クリックもしくはスライド - 現在再生中の画面に移動せずに、クリックまたはスライドして開く - キューを削除 - アプリを共有する - 不具合を報告する - GitHubアカウントを使って送信 - ログイン - 手動で送信 - issue trackerのウェブサイトに転送されます - 問題 - 主題 - 説明 + + \u3053\u306e\u66f2\u3092\u518d\u751f\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f + + + + 画像を更新 + + 更新中... + ユーザー名 - パスワード - 端末の情報 - 問題を報告 - 有効なGitHubアカウントのユーザー名を入力してください - 有効なGitHubのパスワードを入力してください - 問題のタイトルを入力してください - 問題の説明を入力してください - GitHubにレポートをアップロード中... - レポートを送信できませんでした - ユーザー名かパスワードが違います - 無効なトークン:アプリの開発者に連絡してください - 選択されたリポジトリで問題が有効になっていません。開発者に連絡してください - 予期しないエラーが発生しました。開発者に連絡してください。 - 端末情報をコピー + + バージョン + + 垂直方向に反転 + + バーチャライザー + + ウェブで検索 + + 何を共有しますか? + + 更新内容 + + ウィンドウ + + 角を丸める + + %1$s をあなたの着信音として設定しました + + %1$d が選択されました + + + + issue trackerのウェブサイトに転送されます + あなたのアカウントは認証にのみ使用されます - スノーフォールエフェクト - ブラックリスト - ブラックリストに登録されたフォルダの内容はコレクションには表示されません。 - クラッシュログを送信する - Pinterest - PintrestでRetro Musicのデザインのインスピレーションを感じましょう! - 曲の長さをフィルター - エラー - 権限が付与されていません - クラシック - 作曲家 - 作曲家 - 次の曲 - 前の曲 - スライド - 保存 - 画像を選択 - プロフィール画像を設定 - 編集 - スワイプしてアンロック - 歌詞を追加 - ここに歌詞を入力してください - 歌詞に時間枠を組み入れる - 連動した歌詞 - 着信音に設定 - Retro Musicにオーディオ設定の変更を許可する - 我々のチームとソーシャルリンク - 高度な試験的機能 diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index ade4f9cb..a52f7d3b 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -2,115 +2,194 @@ 강조 색상 강조 색상을 지정합니다. 기본값은 녹색입니다. + 정보 + 즐겨찾기에 추가 재생 대기열에 추가 재생목록에 추가... + 재생 대기열 비우기 재생목록 비우기 + 삭제 기기에서 삭제 + 세부 정보 + 해당 앨범으로 이동 해당 아티스트로 이동 초기 디렉터리로 이동 + 허용 + 격자 크기 격자 크기 (가로) + 다음 + 재생 다음 곡 재생 재생/일시정지 + 이전 + 즐겨찾기에서 제거 재생 대기열에서 제거 재생목록에서 제거 + 이름 바꾸기 + 재생 대기열 저장 + 스캔 + 검색 + 지정 벨소리로 설정 초기 디렉터리로 설정 + "설정" + 공유 + 모든 곡 무작위 재생 재생목록 무작위 재생 + 수면 타이머 + 태그 편집기 + 추가 + 사진\n추가 + "재생목록에 추가" + "재생 대기열에 1곡이 추가되었습니다." + 재생 대기열에 %1$d곡이 추가되었습니다. + 앨범 + 앨범 아티스트 + 제목 또는 아티스트가 없습니다. + 앨범 + 항상 + 이 멋진 뮤직 플레이어를 한 번 써보세요!: https://play.google.com/store/apps/details?id=%s + 무작위 자주 재생한 음악 + Retro music - 대형 Retro music - 카드 Retro music - 클래식 Retro music - 소형 + 아티스트 + 아티스트 + 오디오 포커스가 거부되었습니다. + 소리 설정 및 이퀄라이저 조정 + 바이오그래피 + 저스트 블랙 + 블랙리스트 + 흐림 효과 + 블러 카드 - RetroMusic Pro 구매 + 현재 타이머 취소 + 카드 + 변경 사항 + 변경 사항은 Telegram을 통해 확인할 수 있습니다 + 비우기 + 블랙리스트 비우기 + 재생목록 비우기 %1$s \uc7ac\uc0dd\ubaa9\ub85d\uc744 \ube44\uc6b0\uc2dc\uaca0\uc2b5\ub2c8\uae4c? \uc774 \uc791\uc5c5\uc740 \ucde8\uc18c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!]]> + 색상 + 색상 + 색상 + \uc7ac\uc0dd\ubaa9\ub85d\uc744 \ub9cc\ub4e4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. "\uc774 \uc568\ubc94\uacfc \uc77c\uce58\ud558\ub294 \uc568\ubc94 \ucee4\ubc84\ub97c \ub2e4\uc6b4\ub85c\ub4dc\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4." 구매내역을 복구할 수 없습니다. %d개의 파일을 스캔하지 못했습니다. + 만들기 + %1$s 재생목록을 만들었습니다. + 현재 %2$s의 %1$s를 듣는 중입니다. + 카인다 다크 + 가사 없음 + 재생목록 삭제 %1$s 재생목록을 삭제하시겠습니까?]]> + 재생목록 삭제 + %1$s 노래를 삭제하시겠습니까?]]> + %1$d개의 재생목록을 삭제하시겠습니까?]]> %1$d개의 노래를 삭제하시겠습니까?]]> %1$d개의 노래를 삭제했습니다. + 블랙리스트를 비우시겠습니까? %1$s 항목을 제거하시겠습니까?]]> + 기부하기 + 제 작업에 대한 대가를 받을 자격이 있다고 생각하신다면 여기서 저를 위해 소액을 기부할 수 있습니다. + 사주세요! + Last.fm에서 다운로드 + 비어 있음 + 이퀄라이저 + 즐겨찾기 + 플랫 + 폴더 + 당신을 위해 + 전체 + 앱의 여러 가지 색상 변경 외관 + 장르 + 장르 + 1 2 3 @@ -119,67 +198,120 @@ 6 7 8 + 기록 + + %2$s 재생목록에 %1$d개의 노래를 추가했습니다. + 비트레이트 + 형식 파일 이름 파일 경로 크기 + 샘플링 레이트 + 길이 + 최근 추가된 목록 + 아무거나 재생해보죠! + 라이브러리 + 라이선스 + 클리어리 화이트 + 파일 목록 생성 + 제품을 불러오는 중... + 가사 + 내 이름 + 자주 재생한 음악 + 아니오 + 새 재생목록 + 이제 %s 디렉터리가 새 초기 디렉터리입니다. + 앨범 없음 + 아티스트 없음 + "먼저 노래를 재생하고 다시 시도해 보십시오." + 이퀄라이저가 없습니다. + 장르 없음 + 가사 없음 + 재생목록 없음 + 구매내역을 찾을 수 없습니다. + 결과 없음 + 노래 없음 + 일반 + %s은(는) 미디어 저장소에 없는 항목입니다.]]> + 스캔할 것이 없습니다. + 알림 + 알림 스타일 변경 + 지금 재생 중 현재 재생 대기열 + Wi-Fi에서만 + 기타 + 이전 3개월 + 외부 저장소 접근 권한이 거부되었습니다. + 권한이 거부되었습니다. + 개인화 + 지금 재생 중 화면과 UI 변경 + 로컬 저장소에서 선택 + 단색 + 재생 알림은 재생/일시 정지 등에 대한 작업을 제공합니다. 재생 중 알림 + 빈 재생목록 + 재생목록이 비어 있음 + 재생목록 이름 + 재생목록 + 오디오 일반 이미지 잠금 화면 재생목록 + "안드로이드 롤리팝에서만 사용할 수 있습니다." + 현재 재생 중인 노래의 앨범 커버를 잠금 화면 배경화면으로 사용합니다. 알림, 탐색 등 잠금 화면의 앨범 커버에 흐림 효과를 적용합니다. 서드 파티 앱 및 위젯에서 문제가 생길 수 있습니다. @@ -199,6 +331,7 @@ 몰입 모드 이어폰이 연결되면 바로 음악을 재생합니다. 음악 재생 화면에서 공간이 있을 시 볼륨 컨트롤을 보입니다 + 앨범 커버 표시 앱 바로가기 색상 틴트 알림이 올 때 볼륨 감소 @@ -223,77 +356,140 @@ 자동 재생 볼륨 조절 사용자 정보 + 주 색상 테마의 주 색상을 선택합니다. 기본값은 회청색입니다. + 구매 + 대기열 + 앱 평가 + 앱이 마음에 드신다면 Google Play 스토어에 평가를 남겨주세요. + 지난 앨범 + 지난 아티스트 + 제거 + 커버 제거 + 블랙리스트에서 제거 + 노래를 재생목록에서 제거 %1$s 노래를 재생목록에서 제거하시겠습니까?]]> + 노래를 재생목록에서 삭제 + %1$d개의 노래를 재생목록에서 삭제하시겠습니까?]]> + 재생목록 이름 바꾸기 + 아티스트 이미지 초기화 + 복원 + 지난 구매를 복원했습니다. 모든 기능을 사용하기 위해선 앱을 재시작해 주세요. 이전 구매 내역을 복원했습니다. + 구매 복원 중... + Retro 이퀄라이저 + + RetroMusic Pro 구매 + 파일로 저장 재생목록을 %s 위치에 파일로 저장했습니다. + 변경 사항 저장 + %2$d개 파일 중 %1$d개 파일을 스캔했습니다. + 라이브러리에서 검색… + 아티스트 이미지 설정 + 무작위 재생 + 심플 + 수면 타이머가 취소되었습니다. 수면 타이머가 지금으로부터 %d분 후로 설정되었습니다. + 노래 + 노래 길이 + 노래 + 정렬 순서 + 음성 입력을 지원하지 않는 기기입니다 + 라이브러리 검색 + 홈 화면에 사용자의 이름을 보여줍니다. + 개발 지원 + 감사합니다! + 오디오 파일 + 이번 달 + 이번 주 + 올해 + 작음 + 대시보드 + 좋은 저녁입니다 좋은 하루입니다 좋은 저녁입니다 좋은 아침이에요 좋은 밤이에요 + 이름이 무엇인가요? + 오늘 + 인기 앨범 + 인기 아티스트 + "트랙 (트랙 2는 2, CD3의 트랙 4는 3004)" + 트랙 번호 + 번역 + \uc774 \ub178\ub798\ub97c \uc7ac\uc0dd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. + 다음 곡으로 재생 + 이미지 갱신 + 갱신 중... + 버전 + 웹 검색 + 무엇을 공유하시겠습니까? + + %1$s을(를) 벨소리로 설정했습니다. + %1$d개 항목 선택됨 + 연도 diff --git a/app/src/main/res/values-ms/strings.xml b/app/src/main/res/values-ms/strings.xml index 4d87b942..abc6ddae 100644 --- a/app/src/main/res/values-ms/strings.xml +++ b/app/src/main/res/values-ms/strings.xml @@ -2,104 +2,176 @@ Warna aksen Warna tema aksen, tetapan asalnya adalah hijau + Mengenai + Tambahkan ke kegemaran Tambahkan ke baris gilir main Tambahkan ke senarai main... + Kosongkan baris gilir main Kosongkan senarai main + Padam Padamkan daripada peranti + Butiran + Pergi ke album Pergi ke seniman Pergi ke direktori mula + Keizinan + Saiz grid Saiz grid (landskap) + Seterusnya + Main Mainkan seterusnya Main/Jeda + Sebelumnya + Keluarkan daripada kegemaran Keluarkan daripada baris gilir main Keluarkan daripada senarai main + Namakan semula + Simpan baris gilir main + Imbas + Cari + Tetapkan Tetapkan sebagai nada dering Tetapkan sebagai direktori mula + "Seting" + Kongsi + Kocok semua Kocok senarai main + Pemasa tidur + Penyunting tag + Tambah + Tambah \ngambar + "Tambahkan ke senarai main" + "1 judul ditambah ke baris gilir." + %1$d judul ditambah ke baris gilir. + Album + Seniman album + Judul atau seniman adalah kosong. + Album + Sentiasa + Hai. Cuba lihat pemain muzik hebat ini di: https://play.google.com/store/apps/details?id=%s + Kocok Runut teratas + Retro Music - Besar Retro Music - Kad Retro Music - Klasik Retro Music - Kecil + Seniman + Seniman + Fokus audio dinafikan. + Biografi + Cuma hitam + Senarai hitam + Batalkan pemasa semasa + Log perubahan + Log perubahan dikelolakan daripada aplikasi Telegram + Kosongkan + Kosongkan senarai hitam + Kosongkan senarai main %1$s? Perbuatan ini tidak boleh diundurkan!]]> + Warna + Tidak dapat mencipta senarai main. "Tidak dapat memuat turun kulit album yang sepadan." Tidak dapat mengimbas %d fail. + Cipta + Senarai main %1$s dicipta. + Sedang mendengar %1$s oleh %2$s. + Macam gelap + Tiada seni kata + Padam senarai main %1$s?]]> + Padam senarai main + %1$s?]]> + %1$d senarai main?]]> %1$d lagu?]]> %1$d lagu dipadamkan. + Adakah anda ingin mengosongkan senarai hitam? %1$s daripada senarai hitam?]]> + Sumbang + Jika anda rasa saya layak untuk menerima bayaran bagi hasil kerja saya, anda boleh memberi sumbangan di sini. + Belikan saya + Muat turun daripada Last.fm + Kosong + Penyama + Kegemaran + Rata + Folder + Untuk anda + Penuh + Genre + 1 2 3 @@ -108,60 +180,108 @@ 6 7 8 + Sejarah + Utama + %1$d lagu ditambahkan ke dalam senarai main %2$s. + Kadar bit + Format Nama fail Laluan fail Saiz + Kadar pensampelan + Panjang + Terakhir ditambah + Mari mainkan sesuatu + Semak seimbas + Lesen + Sememangnya putih + Fail senarai + Memuatkan produk... + Seni kata + Nama saya + Runut teratas saya + Tidak pernah + Senarai main baru + %s ialah direktori mula yang baru + Tiada album + Tiada seniman + "Mainkan lagu dahulu, kemudian cuba lagi." + Tiada penyama dijumpai. + Tiada genre + Tiada seni kata dijumpai + Tiada senarai main + Tiada hasil + Tiada lagu + Normal + %s tidak disenaraikan dalam gedung media.]]> + Tiada apa-apa untuk diimbas + Pemberitahuan + Kini memainkan baris gilir + Hanya dengan Wi-Fi + 3 bulan lepas + Keizinan untuk mencapai storan luar dinafikan. + Keizinan ditolak. + Pilih daripada storan tempatan + Biasa + Pemberitahuan main menyediakan tindakan untuk main/jeda dan lain-lain. Pemberitahuan main + Senarai main kosong + Senarai main kosong + Nama senarai main + Senarai main + Audio Imej Skrin kunci Senarai main + "Hanya tersedia pada Lollipop." + Menggunakan kulit album lagu semasa sebagai hias latar skrin kunci Pemberitahuan, pandu arah dan lain-lain. Kaburkan kulit album pada skrin kunci. Ini boleh menyebabkan masalah dengan aplikasi dan widget pihak ketiga. @@ -180,6 +300,7 @@ Dayakan ini untuk mod terendam Mainkan muzik apabila fon kepala disambungkan Mendayakan kawalan kelantangan jika terdapat ruang pada skrin kini dimainkan + Tunjukkan kulit album Pintasan aplikasi berwarna Kurangkan kelantangan jika kehilangan fokus @@ -203,68 +324,121 @@ Automain Kawalan kelantangan Maklumat pengguna + Warna utama Warna tema utama, tetapan asalnya adalah putih + Baris gilir + Nilaikan aplikasi + Sukakan aplikasi ini. Beritahu kami di Gedung Google Play untuk menyediakan pengalaman yang lebih baik + Alih keluar + Alih keluar kulit + Keluarkan daripada senarai hitam + Keluarkan lagu daripada senarai main %1$s daripada senarai main?]]> + Keluarkan lagu daripada senarai main + %1$d lagu daripada senarai main?]]> + Namakan semula senarai main + Tetapkan semula imej seniman + Pembelian sebelumnya dipulihkan. + Penyama Retro + Simpan sebagai fail Senarai main yang disimpan ke %s. + Menyimpan perubahan + %1$d daripada %2$d fail diimbas. + Cari pustaka anda... + Tetapkan imej seniman + Kocok + Ringkas + Pemasa tidur dibatalkan. Pemasa tidur ditetapkan untuk %d minit dari sekarang. + Lagu + Tempoh lagu + Lagu + Isih susunan + Maaf, peranti anda tidak menyokong input ucapan. + Cari pustaka anda + Hanya tunjukkan nama anda pada skrin utama + Sokong pembangunan + Terima kasih! + Fail audio + Bulan ini + Minggu ini + Tahun ini + Kecil + Papan pemuka + Selamat tengah hari Selamat siang Selamat petang Selamat pagi Selamat malam + Siapakah nama anda + Hari ini + "Runut (2 untuk runut 2 atau 3004 untuk CD3 runut 4)" + Nombor runut + Terjemah + Tidak dapat memainkan lagu ini. + Seterusnya + Kemas kini imej + Mengemas kini... + Versi + Carian web + Apakah yang anda ingin kongsikan? + Tetapkan %1$s sebagai nada dering anda. + %1$d dipilih + Tahun diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 392c534f..c76ed717 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -2,151 +2,271 @@ Accent kleur De accent kleur, standaard naar groen + Over + Toevoegen aan favorieten Voeg toe aan afspeel wachtrij Voeg toe aan afspeellijst... + Afspeel wachtrij legen Leeg afspeellijst + Verwijder Verwijder van apparaat + Details + "Ga naar album " Ga naar artiest Ga naar begin directory + Geef toestemming + Raster grootte Raster grootte (land) + Volgende + "Afspelen. " "Volgende afspelen " Afspelen/pauzeren + Vorige + "Verwijder van favorieten " Verwijder van afspeel wachtrij Verwijder van afspeellijst + Hernoem + Afspeel wachtrij opslaan + Scan + Zoek + Instellen Stel in als ringtone Stel in als begin directory + "Instellingen" + Delen + Shuffle alles Shuffle afspeellijst + Slaap timer + Tags aanpassen + Toevoegen + Foto toevoegen + "Toevogen aan afspeellijst" + "1 titel aan afspeel wachtrij toegevoegd." + %1$d titels toegevoegd aan afspeel wachtrij + Album + Album artiest + De titel of artiest mist + Albums + Altijd + Hey, bekijk deze coole muziekspeler op:https://play.google.com/store/apps/details?id=%s + Shuffle Top tracks + Retro music - Groot Retro music - Kaart Retro music - Klassiek Retro music - Klein + Artiest + Artiesten + "Geluid focus geweigerd " + Biografie + Gewoon zwart + Zwarte lijst + Annuleer huidige timer + Changelog + Changelog onderhouden in Telegram + Legen + Leeg zwarte lijst + Leeg afspeellijst %1$s? Dit kan niet ongedaan gemaakt worden!]]> + Kleuren + Kon geen afspeellijst maken. "Kon geen matchende album cover downloaden." Kon %d files niet scannen. + Aanmaken + Afspeellijst %1$s aangemaakt. + Nu luisterend naar %1$s van %2$s. + + Soort van donker + Geen lyrics + Afspeellijst verwijderen %1$s verwijderen?]]> + Afspeellijsten verwijderen + %1$s?]]> + %1$d?]]> %1$d?]]> Liedjes %1$d verwijderd. + Wil je de zwarte lijst leegmaken? %1$s verwijderen van de zwarte lijst?]]> + Doneren + Als je vindt dat ik het verdien om geld te krijgen voor mijn werk, dan kun je hier een paar euro\'s doneren. + + Koop mij een + Downloaden van Last.fm + Leeg + Equalizer + Favorieten + Plat + Mappen - Genre - Geschiedenis - Start + Vol + + Genre + + Geschiedenis + + Start + %1$d liedjes toegevoegd aan afspeellijst %2$s. - Laat gewoon je naam zien op het startscherm + Bitrate + Formaat Bestandsnaam Bestandslocatie Grootte + Sampling rate + Duur + Laatst toegevoegd + Laten we iets afspelen + Bibliotheek + Licenties + Clearly wit + Luister bestanden + Podcasts laden... + Lyrics + Mijn naam + Mijn top tracks + Nooit + Nieuwe afspeellijst + %s is de nieuwe start folder + Geen albums + Geen artiesten + "Laat eerst een liedje afspelen, probeer dan opniew." + Geen equalizer gevonden. + Geen lyrics gevonden + Geen afspeellijsten + Geen resultaten + Geen liedjes + + Normaal + %s staat niet in de media store]]> + Niets om te scannen + Notificatie + Nu afspeel wachtrij + Alleen Wi-Fi + Laatste 3 maanden + Permissie voor toegang tot extern opslag is afgewezen + Permissies afgewezen + Kies van local storage + + Vlak + De afspeel notificatie bied acties om af te spelen/pauzeren etc. Afspeel notificatie + Lege afspeellijst + Afspeellijst is leeg + Naam afspeellijst + Afspeellijsten + Geluid Afbeeldingen Vergrendelscherm Afspeellijsten + "Alleen beschikbaar op Lollipop" + Gebruik de huidige cover als vergrendelscherm achtergrond. Notificaties, bediening etc. Vervaagt de album cover op het vergrendelscherm. Kan problemen veroorzaken met apps van derde en widgets/ @@ -157,10 +277,14 @@ "Kleurt de notificatie in de kleur van de album cover" "Kan afspeelproblemen veroorzaken op sommige toestellen" Kan album cover kwaliteit verbeteren, maar veroorzaakt langere laadtijden. Alleen aanzetten als je problemen hebt met lage resolutie artworks + Zet besturing knoppen aan op vergrendelscherm Licentie details voor open source software Afgeronde hoeken voor scherm, album illustratie etc. + Aan/uitzetten tabblad titels Zet dit aan voor immersive mode + Wanneer headphones ingeplugd zijn, afspelen start automatisch Als er ruimte is in het nu afspelen scherm, zet volume knoppen aan + Laat album cover zien Gekleurde app snelkoppelingen Beperk volume bij verliezen focus @@ -168,7 +292,6 @@ Vervaag album cover Klassiek notificatie design Aangepaste kleur - Soort van donker Gekleurde notificatie Afspelen zonder pauzes Basis thema @@ -180,76 +303,119 @@ Open source licenties Afgeronde hoeken Volledig scherm app + Tabblad titels + Automatisch afspelen Volume knoppen Gebruikers info + Primaire kleur + Wachtrij + App beoordelen + Vind je deze app leuk? Laat het ons weten in de Google Play Store om de ervaring te verbeteren + Verwijderen + Verwijder cover + Verwijder van zwarte lijst + Verwijder liedje van afspeellijst %1$s van de afspeellijst?]]> + Verwijder liedjes van afspeellijst + %1$d van de afspeellijst?]]> + Hernoem afspeellijst + + Reset artiest afbeelding + Teruggezette aankopen + Retri equalizer + Opslaan als bestand Afspeellijst opgeslagen in %s. + Aanpassingen opslaan + %1$d van de %2$d bestanden gescant + Zoek in je biebliotheek + + Stel artiest afbeelding in + Shuffle + + Simpel + Slaap timer geannuleerd Slaap timer ingesteld in %d minuten vanaf nu + Liedje + Duur liedje + Nummers + "Volgorde " + Sorry! Je apparaat ondersteunt geen spraak invoer + Zoek door je bibliotheek + + Laat gewoon je naam zien op het startscherm + Ondersteun ontwikkelaars + Bedankt! + Het geluidsbestand + Deze maand + Deze week + Dit jaar + Dashbord - Vandaag - "Nummer (2 voor nummer 2 of 3004 voor CD3 nummer 4)" - Track nummer - Vertalen - "Kon dit nummer niet afspelen " - Volgende - Update afbeelding - Bijwerken... - Versie - Web zoekopdracht - Wat wil je delen? - Wat is je naam - Stel %1$s in als ringtone - %1$d geselecteerd - Jaar - Reset artiest afbeelding - Stel artiest afbeelding in - Koop mij een - Vlak - Goede nacht - Goede avond + Goedemiddag - Goedemorgen Goededag - Simpel - Wanneer headphones ingeplugd zijn, afspelen start automatisch - Automatisch afspelen - Aan/uitzetten tabblad titels - Tabblad titels - Normaal - Zet besturing knoppen aan op vergrendelscherm - - - - + Goede avond + Goedemorgen + Goede nacht + + Wat is je naam + + Vandaag + + "Nummer (2 voor nummer 2 of 3004 voor CD3 nummer 4)" + + Track nummer + + Vertalen + + "Kon dit nummer niet afspelen " + + Volgende + + Update afbeelding + + Bijwerken... + + Versie + + Web zoekopdracht + + Wat wil je delen? + + Stel %1$s in als ringtone + + %1$d geselecteerd + + Jaar diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 83ccf273..15ac130e 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -1,142 +1,295 @@ - Musisz zaznaczyć przynajmniej jedną kategorię - Mały album + Zespół, media społecznościowe + Kolor akcentu Kolor akcentu motywu, domyślnie morski + O aplikacji + Dodaj do ulubionych Dodaj do kolejki Dodaj do playlisty + Wyczyść kolejkę Wyczyść playlistę + Usuń Usuń z urządzenia + Szczegóły + Przejdź do albumu Przejdź do artysty Idź do gatunku Przejdź do katalogu startowego + Przyznaj + Rozmiar siatki Rozmiar siatki (poziomo) + + Nowa playlista + Następny + Odtwarzaj + Odtwórz wszystko Odtwarzaj następne Odtwarzanie/Pauza + Poprzedni + Usuń z ulubionych Usuń z kolejki odtwarzania Usuń z playlisty + Zmień nazwę + Zapisz kolejkę + Skanuj Przeszukaj katalog + Szukaj - Ustaw + Rozpocznij Ustaw jako dzwonek Ustaw jako katalog startowy + "Ustawienia" + Udostępnij + Losowo wszystko Playlista losowo + Wyłącznik czasowy + Sortowanie + Edytor tagów + Adaptacyjny + Dodaj + + Dodaj tekst utworu + Dodaj\nzdjęcie + "Dodaj do playlisty" + + Dodaj znaczniki czasowe do tekstu + "Dodano 1 tytuł do kolejki odtwarzania" + Dodano %1$d tytułów do kolejki + Album + Artysta albumu + Pole tytuł lub artysta jest puste. + Albumy + Zawsze + Hej sprawdź ten fajny odtwarzacz muzyki na: https://play.google.com/store/apps/details?id=%s + Losowo Najczęściej odtwarzane utwory + Retro music - Duży Retro music - Karta Retro music - Klasyczny Retro music - mały Retro music - Tekst + Artysta + Artyści + Odrzucono fokus dźwiękowy. + Dostosuj ustawienia dźwięku i equalizera + + Automatyczny + + Bazowy kolor motywu + Wzmocnienie Bassu + + Biografia + Biografia + Po prostu czarny + Czarna lista + Rozmycie + Rozmyta Karta - Pozostaw ekran włączony - Ta opcja może mieć wpływ na zużycie baterii - Wartość rozmycia - Ilość rozmycia dla motywów, mniejsza ilość jest szybsza - Retro Music Pro + + Nie udało się wysłać raportu + Niepoprawny token dostępu. Proszę się skontaktować z twórcą aplikacji. + Problemy nie zostały włączone dla wybranego repozytorium. Proszę się skontaktować z twórcą aplikacji. + Wystąpił nieoczekiwany błąd. Proszę skontaktować się z twórcą aplikacji. + Zła nazwa użytkownika lub hasło + Problem + Wyślij ręcznie + Proszę opisać problemu + Proszę wpisać poprawne hasło GitHub + Proszę wpisać tytuł problemu + Proszę wpisać poprawną nazwę użytkownika GitHub + Wystąpił nieoczekiwany błąd. Wyczyść dane podręczne lub - jeśli błąd pojawi się ponownie - wyślij nam maila. + Wrzucanie raportu na GitHub... + Wyślij przez konto GitHub + Anuluj + Karta - Kolorowa Karta + Okrągły - Obraz + + Kolorowa Karta + Karta + + Karuzela + + Efekt karuzeli na ekranie Teraz odtwarzane + + Kaskadowy + Strumieniowanie + Lista zmian + Lista zmian zarządzana z aplikacji Telegram + + Okrągły + + Klasyczny + Wyczyść + + Wyczyść dane aplikacji + Wyczyść czarną listę + + Wyczyść kolejkę + Wyczyść playlistę %1$s? Ta czynno\u015b\u0107 nie mo\u017ce zosta\u0107 cofni\u0119ta!]]> + Zamknij + Kolor + Kolor + Kolory + + Kompozytor + + Skopiowano informacje o urządzeniu do schowka + Nie mo\u017cna utworzy\u0107 playlisty. "Nie mo\u017cna pobra\u0107 dopasowanej ok\u0142adki albumu" Nie można przywrócić zakupów. Nie można przeskanować %d plików. + Utwórz + Stworzono playlistę %1$s. + Członkowie i współpracownicy + Aktualnie odtwarzane %1$s wykonawcy %2$s. + Dość ciemny + Brak tekstu + Usuń playlistę %1$s?]]> + Usuń listy odtwarzania + + Usuń utwór %1$s?]]> + + Usuń utwory + %1$d ?]]> %1$d ?]]> - Usuń utwór - Usuń utwory Usunięto %1$d utworów. + + Głębia + + Opis + + Informacje o urządzeniu + + Pozwól Retro Music na modyfikację ustawień dźwięku + + Ustaw jako dzwonek + Czy chcesz wyczyścić czarną listę? %1$s z czarnej listy?]]> + Wesprzyj nas + Jeżeli uważasz, że zasługuje na zapłatę za moją pracę możesz zostawić tu drobną sumę + Kup mi: + Pobierz z Last.fm + + Edytuj + Edytuj okładkę + Pusto + Korektor dźwięku + + Błąd + FAQ + Ulubione + + Dokończ ostatnią piosenkę + + Dopasuj + Płaski + Foldery + Dla Ciebie + Pełne + + Pełna karta + Zmień motyw i kolory aplikacji Wygląd i zachowanie interfejsu + Gatunek + Gatunki + Zobacz kod na GitHubie + Dołącz do społeczności Google Plus by uzyskać informacje o aktualizacjach i pomoc + 1 2 3 @@ -145,77 +298,199 @@ 6 7 8 + + Zawias + Historia + Strona główna + + Obrót poziomy + + Obraz + + Obraz gradientowy + Zmień ustawienia pobierania obrazka wykonawcy + Dodano %1$d utworów do listy odtwarzania %2$s. + Instagram Udostępnij swój setup aplikacji Retro Music na Instagramie + + Klawiatura + Bitrate + Format Nazwa pliku Ścieżka pliku Rozmiar + Częstotliwość próbkowania + Długość + + Wszystkie podpisy + Ostatnio dodane + + Ostatni utwór + Odtwórzmy jakąś muzykę + Biblioteka + + Kategorie biblioteki + Licencje + Śnieżno biały + Listowanie plików + Ładowanie... + + Zaloguj się + Tekst utworu + + Stworzone z ❤️ w Indiach + Materialistyczny + + Błąd + + Błąd uprawnień + Moje imię + Najczęściej odtwarzane + Nigdy + Nowe zdjęcie banera + Nowa lista odtwarzania + Nowe zdjęcie profilowe + %s jest nowym katalogiem startowym. + + Następny utwór + Brak albumów + Brak artystów + "Odtwórz jakiś utwór i spróbuj ponownie." + Nie znaleziono korektora dźwięku. + Brak gatunków + Nie znaleziono tekstu utworu + Brak list odtwarzania + Nie znaleziono zakupów. + Brak wyników. + Brak utworów + Normalne + Normalny tekst utworu + Normalny + %s nie znajduje się w magazynie multimediów.]]> + Nic do skanowania. + Powiadomienie + Zmień wygląd powiadomień + Teraz odtwarzane Kolejka teraz odtwarzanych + Dostosuj panel aktualnie odtwarzanych + 9+ motywów Teraz odtwarzane + + Włącz + Tylko przez Wi-Fi + + Zaawansowane funkcje eksperymentalne + Inne ustawienia + + Hasło + Przez 3 miesiące + + Wklej tekst utworu tutaj + Odmowa dostępu do pamięci zewnętrznej. + Odmowa dostępu. + Personalizuj + Dostosuj interfejs \"Teraz odtwarzane\" + Wybierz z pamięci lokalnej + + Wybierz obraz + + Pinterest + Śledź stronę Retro Music na Pintrest po więcej inspiracji + Wyraźny + Powiadomienie odtwarzania pokazuje przyciski play/pauza itp. Powiadomienie odtwarzania + Pusta lista odtwarzania + Lista odtwarzania jest pusta + Nazwa listy odtwarzania + Listy odtwarzania + + Styl detali albumu + + Ilość rozmycia dla motywów, mniejsza ilość jest szybsza + Wartość rozmycia + + Filtruj długość utworów + + Styl okładki Dźwięk + Przyciski kontrolne Motyw Obrazki + Biblioteka Ekran blokady Listy odtwarzania + + Zatrzymuje odtwarzanie przy zerowym poziomie głośności i wznawia po jego zwiększeniu. Kiedy zwiększysz głośność, odtwarzanie rozpocznie się nawet gdy jesteś poza aplikacją + Zatrzymaj przy wyłączonym dźwięku + Ta opcja może mieć wpływ na zużycie baterii + Pozostaw ekran włączony + + Kliknij aby otworzyć z lub przesunąć do przezroczystej nawigacji ekranu teraz odtwarzane + Kliknij albo przesuń + "Dostępne tylko na Androidzie Lolipop" + + Efekt spadającego śniegu + Używaj okładki aktualnie odtwarzanego albumu jako tapety ekranu blokady Zmniejsz głośność kiedy dostajesz powiadomienia + Zawartość czarnej listy jest ukryta w twojej bibliotece. Rozmazuj okładkę albumu na ekranie blokady. Może powodować problemy z aplikacjami i widżetami innych firm Efekt karuzeli na okładce obecnie odtwarzanego albumu. Zwróć uwagę, że motyw karty i rozmycia nie zadziała Użyj klasycznego wyglądu powiadomień. @@ -224,8 +499,12 @@ Koloruje pasek nawigacji kolorem wiodącym. "Koloruje powiadomienie dominuj\u0105cym kolorem ok\u0142adki albumu." Najbardziej dominujący kolor zostanie wybrany z okładki albumu lub wykonawcy. + Dodaj ekstra przyciski do małego odtwarzacza "Może powodować problemy z odtwarzaniem na niektórych urządzeniach." + Przełącz kartę gatunku + Przełącz styl banera strony głównej Może zwiększyć jakość okładki albumu, ale powoduje spowolnienie ładowania obrazu. Włącz tę opcję tylko jeśli masz problemy z okładkami o niskiej rozdzielczości. + Skonfiguruj widoczność i kolejność kategorii w bibliotece. Sterowanie Retro na zablokowanym ekranie. Szczegóły licencji oprogramowania open source Zaokrąglone krawędzie okna, okładek albumów itp. @@ -234,23 +513,27 @@ Zacznij odtwarzanie po podłączanie zestawu słuchawkowego Odtwarzanie losowe zostanie wyłączone podczas odtwarzania nowej listy utworów Włącz sterowanie głośnością na ekranie \"teraz odtwarzane\" - Dodaj ekstra przyciski do małego odtwarzacza - Przełącz kartę gatunku - Przełącz styl banera strony głównej + Pokaż okładkę albumu - Wygląd tytułów kart + Wygląd okładki albumu + Przesuwanie okładki albumu Siatka albumów Kolorowe skróty aplikacji Siatka wykonawców Zmniejsz głośność przy braku skupienia Automatycznie pobierz obrazki wykonawców + Czarna lista Rozmaż okładkę albumu Wybierz korektor dźwięku Klasyczny wygląd powiadomień Kolor adaptacyjny Kolorowe powiadomienia + Dodatkowe sterowanie Odtwarzanie bez przerw Motyw główny + Pokaż kartę gatunku + Siatka wykonawców strony głównej + Baner strony głównej Ignoruj okładki z Media Store Ostatnio dodany interwał listy odtwarzania Sterowanie pełno ekranowe @@ -258,6 +541,7 @@ Wygląd Licencje Open Source Narożne krawędzie + Wygląd tytułów kart Efekt karuzeli Kolor dominujący Aplikacja pełnoekranowa @@ -266,208 +550,238 @@ Tryb losowy Sterowanie głośnością Informacje użytkownika - Dodatkowe sterowanie - Baner strony głównej - Pokaż kartę gatunku - Siatka wykonawców strony głównej - Przesuwanie okładki albumu - Styl detali albumu - Kaskadowy + + Kup Premium + Kolor podstawowy Główny kolor motywu, domyślnie niebieski, działa teraz z ciemnymi kolorami + + Efekt karuzeli, kolorowe motywy i wiele więcej... + + Profil + Kup + *Zastanów się przed zakupem, nie proś o zwrot. + Kolejka + Oceń aplikację + Uwielbiasz tą aplikację? Daj nam znać w sklepie Google Play co o niej sądzisz i co powinniśmy poprawić. + Ostatnie albumy + Ostatni artyści + Usuń + Usuń zdjęcie banera + Usuń okładkę + Usuń z czarnej listy + Usuń zdjęcie profilowe + Usuń utwór z listy odtwarzania %1$s z listy odtwarzania?]]> + Usuń te utwory z listy odtwarzania + %1$d z listy odtwarzania?]]> + Zmień nazwę listy odtwarzania + + Zgłoś problem + + Zgłoś błąd + + Zresetuj + Zresetuj obrazek wykonawcy + Przywróć + Przywrócono poprzedni zakup. Zrestartuj aplikacje aby korzystać z wszystkich funkcji. Przywrócono poprzednie zakupy. + Przywracanie zakupu... + Korektor dźwięku Retro + + Retro Music Pro + + Zapisz + Zapisz jako plik + Zapisz jako + Zapisz listę odtwarzania do %s. + Zapisywanie zmian + Skanuj media + Zeskanowano %1$d z plików %2$d. + Przeszukaj bibliotekę... + Zaznacz wszystko + Wybierz zdjęcie banera + + Wybierz zdefiniowane + + Zaznaczone + + Zgłoś awarię + + Ustaw + Ustaw obrazek wykonawcy + + Ustaw zdjęcie profilowe + + Udostępnij aplikację + Losowo + Prosty + Wyłącznik czasowy wyłączony. Wyłącznik czasowy ustawiony na %d minut. + + Slajd + + Mały album + Społeczność + Utwór + Długość utworu + Utwory + Porządek sortowania Rosnąco Album Artysta + Kompozytor Dane Rok Malejąco + Przepraszamy! Twoje urządzenie nie obsługuje wprowadzania głosowego + Przeszukaj swoją bibliotekę + + Stos + + Rozpocznij odtwarzanie + + Sugestie + Po prostu pokaż tylko swoje imię na ekranie głównym + Wspieraj rozwój + + Przesuń, aby odblokować + + Synchronizowany tekst utworu + Systemowy korektor dźwięku + Telegram Dołącz do grupy Telegram, aby zgłosić błędy, zasugerować zmiany i inne + Dziękuję! + Pliki dźwiękowy + Ten miesiąc + Ten tydzień + Ten rok + Mały + + Tytuł + Dashboard + Miłego popołudnia Dzień dobry Dobry wieczór Dzień dobry Dobry wieczór + Jak masz na imię? + Dzisiaj + Najczęściej odtwarzane albumy + Najczęściej odtwarzani artyści + "Ścieżka (2 dla ścieżki 2 lub 3004 dla ścieżki CD3 4)" + Numer utworu + Przetłumacz + Pomóż nam tłumaczyć aplikację na swój język + Strona na Twitterze Podziel się swoim designem z Retro Music - Nie mo\u017cna odtworzy\u0107 utworu. - Następne - Zaktualizuj obrazek - Aktualizowanie... - Wersja - Wirtualizacja - Przeszukaj sieć - Co chciałbyś udostępnić? - Okno - Ustaw %1$s jako dzwonek. - Wybrano %1$d - Rok - Stworzone z ❤️ w Indiach - Wyczyść dane aplikacji - Wystąpił nieoczekiwany błąd. Wyczyść dane podręczne lub - jeśli błąd pojawi się ponownie - wyślij nam maila. - Błąd - Bazowy kolor motywu - 9+ motywów Teraz odtwarzane - Efekt karuzeli na ekranie Teraz odtwarzane - Zaokrąglone rogi - Wygląd okładki albumu - Okrągły - Karuzela - Dostosuj panel aktualnie odtwarzanych - Pełna karta - Profil - Biografia - Automatyczny - Wszystkie podpisy + Niepodpisane - Zaznaczone - Głębia - Obrót pionowy - Zawias - Obrót poziomy - Zatrzymuje odtwarzanie przy zerowym poziomie głośności i wznawia po jego zwiększeniu. Kiedy zwiększysz głośność, odtwarzanie rozpocznie się nawet gdy jesteś poza aplikacją - Zatrzymaj przy wyłączonym dźwięku - Co nowego - Sugestie - Dopasuj - Kliknij albo przesuń - Kliknij aby otworzyć z lub przesunąć do przezroczystej nawigacji ekranu teraz odtwarzane - Wyczyść kolejkę - Udostępnij aplikację - Zgłoś błąd - Wyślij przez konto GitHub - Zaloguj się - Wyślij ręcznie - Będziesz przekierowany do strony ze zgłoszeniami. - Problem - Tytuł - Opis - Nazwa użytkownika - Hasło - Informacje o urządzeniu - Zgłoś problem - Proszę wpisać poprawną nazwę użytkownika GitHub - Proszę wpisać poprawne hasło GitHub - Proszę wpisać tytuł problemu - Proszę opisać problemu - Wrzucanie raportu na GitHub... - Nie udało się wysłać raportu - Zła nazwa użytkownika lub hasło - Niepoprawny token dostępu. Proszę się skontaktować z twórcą aplikacji. - Problemy nie zostały włączone dla wybranego repozytorium. Proszę się skontaktować z twórcą aplikacji. - Wystąpił nieoczekiwany błąd. Proszę skontaktować się z twórcą aplikacji. - Skopiowano informacje o urządzeniu do schowka - Informacje o twoim koncie są używane tylko do autoryzacji. - Efekt spadającego śniegu - Czarna lista - Zawartość czarnej listy jest ukryta w twojej bibliotece. - Zgłoś awarię - Pinterest - Śledź stronę Retro Music na Pintrest po więcej inspiracji - Filtruj długość utworów - Błąd - Błąd uprawnień - Klasyczny - Kompozytor - Kompozytor - Następny utwór - Ostatni utwór - Slajd - Zapisz - Wybierz obraz - Ustaw zdjęcie profilowe - Edytuj - Biblioteka - Przesuń, aby odblokować - Dodaj tekst utworu - Wklej tekst utworu tutaj - Dodaj znaczniki czasowe do tekstu - Synchronizowany tekst utworu - Ustaw jako dzwonek - Pozwól Retro Music na modyfikację ustawień dźwięku - Zespół, media społecznościowe - Zaawansowane funkcje eksperymentalne - Włącz - Wybierz zdefiniowane + + Nie mo\u017cna odtworzy\u0107 utworu. + + Następne + + Zaktualizuj obrazek + + Aktualizowanie... + Sięgnij po wersję Premium - Nowa playlista - Dokończ ostatnią piosenkę - Obraz gradientowy - Stos + + Nazwa użytkownika + + Wersja + + Obrót pionowy + + Wirtualizacja + + Przeszukaj sieć + Witaj, - Kup Premium - Efekt karuzeli, kolorowe motywy i wiele więcej... - Odtwórz wszystko - Rozpocznij odtwarzanie - Klawiatura - Zresetuj - Kategorie biblioteki - Skonfiguruj widoczność i kolejność kategorii w bibliotece. - Przyciski kontrolne - Styl okładki + + Co chciałbyś udostępnić? + + Co nowego + + Okno + + Zaokrąglone rogi + + Ustaw %1$s jako dzwonek. + + Wybrano %1$d + + Rok + + Musisz zaznaczyć przynajmniej jedną kategorię + + Będziesz przekierowany do strony ze zgłoszeniami. + + Informacje o twoim koncie są używane tylko do autoryzacji. diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 276666b5..956aacf4 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -1,144 +1,297 @@ - Você precisa selecionar ao menos uma categoria. - "Português -" + Time, links sociais + Cor de destaque A cor de destaque do tema, o padrão é verde + Sobre + Adicionar aos favoritos Adicionar à lista de reprodução Adicionar à lista + Limpar a atual fila de reprodução Remover todos os itens da playlist + Excluir Excluir do dispositivo + Detalhes + Ir para o álbum Ir para o artista Ir para o gênero Ir para o diretório inicial + Permitir + Tamanho da grade Tamanho da grade (horizontal) + + Nova lista de reprodução + Próxima + Reproduzir + Reproduzir tudo Reproduzir a próxima Reproduzir/Pausar + Anterior + Remover dos favoritos Remover da fila de reprodução Remover da playlist + Renomear + Salvar fila de reprodução + Escanear Escanear diretório + Pesquisar - Definir + Iniciar Definir como toque Definir como diretório inicial + "Configurações" + Compartilhar + Misturar todas Embaralhar playlist + Temporizador + Ordem de classificação + Editor de TAG + Adaptável + Adicionar + + Adicionar letras + Adicionar foto + "Adicionar à lista" + + Adicione tempo de enquadramento das letras + "Uma música foi adicionada à fila de reprodução" + Foram adicionadas %1$d músicas na fila de reprodução + Álbum + Álbum do artista + O título ou artista está vazio + Álbuns + Sempre + Ei, confira este reprodutor de música legal em: https://play.google.com/store/apps/details?id=%s + Aleatório Músicas favoritas + Música Retrô-Grande Música Retrô-Cartão Música Retrô-Clássico Música Retrô-Pequeno Música Retrô-Texto + Artista + Artistas + Foco de áudio negado + Altere as configurações de som e ajuste os controles do equalizador + + Automático + + Baseado na cor do tema + Aumento de graves + + Biografia + Biografia + Apenas preto + Lista negra + Desfocado + Cartão desfocado - Manter a tela ligada - Tenha em mente que ativar este recurso pode afetar a duração da bateria - Quantidade de desfoque - Quantidade de desfoque aplicada a temas de desfoque, menor é mais rápido - Retro Music Pro + + Não é possível enviar o relatório + Token de acesso inválido. Entre em contato com o desenvolvedor do aplicativo + Os problemas não estão ativados para o repositório selecionado. Entre em contato com o desenvolvedor do aplicativo. + Um erro inesperado ocorreu. Entre em contato com o desenvolvedor do aplicativo. + Nome do usuário ou senha incorreta + Questão + Enviar manualmente + Por favor, insira uma descrição do problema + Por favor, digite sua senha válida do GitHub + Por favor, insira um título do problema + Por favor, digite seu nome de usuário válido do GitHub + Um erro inesperado ocorreu. Se você tentar novamente e o erro persistir, use a opção \"Limpar dados do aplicativo\" ou envie-nos um e-mail + Enviando relatório para o GitHub... + Enviar usando uma conta do GitHub + Cancelar + Cartão - Cartão colorido + Circular - Imagem + + Cartão colorido + Cartão + + Carrossel + + Efeito carrossel na tela de reprodução + + Cascata + Transmitir + Lista de mudanças + Lista de mudanças mantida no Canal no Telegram + + Circular + + Clássico + Limpar + + Limpar dados do aplicativo + Limpar lista negra + + Limpar fila + Limpar playlist %1$s? Isso n\u00e3o pode ser desfeito!]]> + Fechar + Cor + Cor - Day Night(alpha) + Cores + + Compositor + + Informações do dispositivo copiado para a área de transferência. + N\u00e3o foi poss\u00edvel criar a playlist "N\u00e3o foi poss\u00edvel baixar uma capa do \u00e1lbum correspondente" Não foi possível restaurar a compra Não foi possível escanear %d arquivos + Criar + A playlist %1$s foi criada + Membros e contribuidores + Atualmente ouvindo %1$s por %2$s. + Meio escuro + + Day Night(alpha) + Sem letras + Excluir playlist %1$s?]]> + Excluir playlists + + Excluir música %1$s?]]> + + Excluir músicas + %1$d playlists?]]> %1$d músicas?]]> - Excluir música - Excluir músicas %1$d músicas foram excluídas. + + Profundidade + + Descrição + + Informação do dispositivo + + Permite que o Retro Music modifique as configurações de áudio + + Definir toque + Você quer limpar a lista negra? %1$s da lista negra?]]> + Doar + Se você acha que eu mereço ser recompensado pelo meu trabalho, você pode me deixar algum dinheiro aqui + Compre-me um: + Baixar do Last.fm + + Editar + Editar capa + Vazio + Equalizador + + Erro + Perguntas frequentes + Favoritos + + Terminar a última música + + Em forma + Plano + Pastas + Para você + Tela cheia + + Cartão cheio + Alterar o tema e as cores do aplicativo Aparência + Gênero + Gêneros + Fork o projeto no GitHub + Participe da comunidade do Google+, onde você pode pedir ajuda ou seguir as atualizações do Retro Music + 1 2 3 @@ -147,77 +300,201 @@ 6 7 8 + + + + Dobradiça + Histórico + Início + + Giro horizontal + + Imagem + + Imagem degradê + Alterar as configurações de download das imagens dos artistas + %1$d músicas adicionadas na playlist %2$s. + Instagram Compartilhe seu perfil do Retro Music para mostrá-lo no Instagram + + Teclado + Taxa de bits + Formato Nome do arquivo Caminho do arquivo Tamanho + Taxa de amostragem + Comprimento + + Rotulado + Mais recentes + + Última música + Vamos reproduzir alguma música + Biblioteca + + Categorias da biblioteca + "Licenças " + Claramente branco + Listando arquivos... + Carregando produtos... + + Entrar + Letras + + Feito com ❤️ na Índia + Material + + Erro + + Erro de permissão + Nome + Mais tocadas + Nunca + Nova foto do mural + Nova playlist + "Nova foto de perfil " + %s é o novo diretório inicial + + Próxima música + Sem álbuns + Sem artistas + "Reproduza uma música primeiro e tente novamente" + Nenhum equalizador encontrado + Sem gêneros + Nenhuma letra encontrada + Sem playlists + Nenhuma compra encontrada. + Sem resultados + Sem músicas + Normal + Letras normais + Normal + %s não está listado no armazenamento de mídia]]> + Nada para escanear. + Notificação + Personalizar o estilo de notificação + Reproduzindo agora Reproduzindo agora na fila + Personalizar tela de reprodução + Incríveis 9 temas para a interface do reprodutor + + Ligado + Apenas com Wi-Fi + + Recursos avançados em teste + Outro + + Senha + Últimos 3 meses + + Cole as letras aqui + Permissão para acessar o armazenamento externo negada + Permissões negadas. + Personalizar + Personalizar os controles em Reproduzindo agora e Interface do Usuário + Escolha do armazenamento local + + Escolha a imagem + + Pinterest + Siga a página do Pinterest para inspiração de design do Retro Music + Liso + A notificação de reprodução fornece ações para reprodução/pausa, etc Notificação de reprodução + Playlist vazia + A playlist está vazia + Nome da playlist + Playlists + + Estilo de detalhe do álbum + + Quantidade de desfoque aplicada a temas de desfoque, menor é mais rápido + Quantidade de desfoque + + Filtrar duração da música + + Estilo do álbum Áudio + Controles Tema Imagens + Biblioteca Tela de bloqueio Playlists + + Pausa a reprodução quando o volume é zerado e reproduz novamente quando o volume aumentar. Também funciona fora do aplicativo + Pausar quando o volume for zerado + Tenha em mente que ativar este recurso pode afetar a duração da bateria + Manter a tela ligada + + Clique para abrir ou deslizar sem a navegação transparente da tela que está sendo reproduzida agora + Clique ou deslize + "Disponível apenas no Android Lollipop" + + Efeito de neve caindo + Usar a capa do álbum da música em reprodução como papel de parede na tela de bloqueio Diminua o volume quando um som do sistema for reproduzido ou uma notificação for recebida + O conteúdo das pastas na lista negra está oculto da sua biblioteca. Desfoque a capa do álbum na tela de bloqueio. Pode causar problemas com aplicativos e widgets de terceiros Efeito carrossel para a imagem do álbum na tela de reprodução. Note que nos temas \"Cartão\" e \"Cartão desfocado\" não irá funcionar Use o design de notificação clássico @@ -226,8 +503,12 @@ Colore a barra de navegação na cor primária "Colore a notifica\u00e7\u00e3o na cor vibrante da capa do \u00e1lbum" A cor mais dominante será escolhida da capa do álbum/artista + Adicionar botões extras para o mini reprodutor "Pode causar problemas de reprodução em alguns dispositivos" + Alternar aba de gêneros + Alternar o estilo do mural inicial Pode aumentar a qualidade da capa do álbum, mas diminui a velocidade de carregamento da capa do álbum. Ative isso apenas se você tiver problemas com capas de baixa resolução + Configurar visibilidade e ordem de categorias da biblioteca. Usar controles personalizados do Retro Music na tela de bloqueio Detalhes da licença para software de código aberto Arredondar as bordas do aplicativo @@ -236,23 +517,27 @@ Comecar a reproduzir imediatamente quando os fones de ouvido forem conectados O modo aleatório será desativado ao reproduzir uma nova lista de músicas Se houver espaço suficiente, mostre os controles de volume na tela que está sendo reproduzida - Adicionar botões extras para o mini reprodutor - Alternar aba de gêneros - Alternar o estilo do mural inicial + Exibir a capa do álbum - Modo de títulos nas abas + Tema da capa do álbum + Pular a capa do álbum Grade do álbum Colorir os atalhos do aplicativo Grade do artista Reduza o volume na perda de foco Baixar automaticamente as imagens dos artistas + Lista negra Desfocar a capa do álbum Escolha o equalizador Design de notificação clássico Cor adaptável Notificações coloridas + Controles extras Reprodução contínua Tema do aplicativo + Exibir a aba de gêneros + Grade de artistas na tela inicial + Mural na tela inicial Ignorar capas do Armazenamento de Mídia Intervalo da playlist \"Mais recentes\" Controles em tela cheia @@ -260,6 +545,7 @@ Tema da tela \"Reproduzindo agora\" Licenças de código aberto Bordas arredondadas + Modo de títulos nas abas Efeito carrossel Cor dominante Aplicativo em tela cheia @@ -268,209 +554,239 @@ Modo aleatório Controles do volume Informação do usuário - Controles extras - Mural na tela inicial - Exibir a aba de gêneros - Grade de artistas na tela inicial - Pular a capa do álbum - Estilo de detalhe do álbum - Cascata + + Obtenha o Premium + Cor primária A cor principal do tema por padrão é cinza azulado, por enquanto funciona com cores escuras + + Temas do reproduzindo agora, Efeito carrossel, Tema de cor e mais... + + Perfil + Comprar + *Pense antes de comprar, não pergunte por reembolso! + Fila + Avalie o aplicativo + Adorou este aplicativo? Informe-nos na Google Play Store como podemos melhorar o aplicativo + Álbuns recentes + Artistas recentes + Remover + Remover foto do mural + Remover capa + Remover da lista negra + Remover foto do perfil + Remover música da playlist %1$s da playlist?]]> + Remover músicas da playlist + %1$d músicas da playlist?]]> + Renomear playlist + + Reportar um problema + + Reportar erro + + Resetar + Restaurar imagem do artista + Restaurar + Compra anterior restaurada. Por favor, reinicie o aplicativo para fazer uso de todos os recursos. Compras anteriores foram restauradas. + Restaurando compra... + Equalizador do Retro Music + + Retro Music Pro + + Salvar + Salvar como arquivo + Salvar como arquivos + Playlist salva para %s + Salvando alterações... + Escanear mídia + Escaneados %1$d dos %2$d arquivos + Pesquisar na sua biblioteca ... + Selecionar tudo + Selecione a foto do mural + + Selecionar predefinição + + Selecionado + + Enviar log de falha + + Definir + Definir imagem do artista + + Definir uma foto de perfil + + Compartilhar o aplicativo + Aleatório + Simples + Temporizador cancelado Temporizador definido para %d minutos a partir de agora + + Deslizar + + "Português +" + Social + Música + Duração da música + Músicas + Ordem de classificação Ascendente Álbum Artista + Compositor Data Ano Decrescente + Desculpe! O seu dispositivo não suporta entrada de voz + Pesquisar... + + Pilha + + Começar a reprodução de música. + + Sugestões + Mostrar apenas o seu nome na tela inicial + Apoiar o desenvolvimento + + Deslize para desbloquear + + Letras sincronizadas + Equalizador do sistema + Telegram Junte-se ao grupo no Telegram para discutir bugs, fazer sugestões e muito mais + Obrigado! + Arquivo de áudio + Este mês + Esta semana + Este ano + Minúsculo + + Título + Painel de controle + Boa tarde Bom dia Boa noite Bom dia Boa noite + Qual o seu nome? + Hoje + Melhores albuns + Artistas principais + "Música (2 para a música 2 ou 3004 para a música 4 do CD3)" + Número da música + Traduzir + Ajude-nos a traduzir o aplicativo para seu idioma + "Twitter " Compartilhe seu design com o Retro Music - N\u00e3o foi poss\u00edvel reproduzir est\u00e1 m\u00fasica. - A seguir - Atualizar imagem - Atualizando... - Versão - Virtualizador - Pesquisar na internet - O que você quer compartilhar? - Janela - Definir %1$s como toque. - %1$sd selecionado - Ano - Feito com ❤️ na Índia - Limpar dados do aplicativo - Um erro inesperado ocorreu. Se você tentar novamente e o erro persistir, use a opção \"Limpar dados do aplicativo\" ou envie-nos um e-mail - Erro - Baseado na cor do tema - Incríveis 9 temas para a interface do reprodutor - Efeito carrossel na tela de reprodução - Cantos arredondados - Tema da capa do álbum - Circular - Carrossel - Personalizar tela de reprodução - Cartão cheio - Perfil - Biografia - Automático - Rotulado + Não rotulado - Selecionado - Profundidade - Giro vertical - Dobradiça - Giro horizontal - Pausa a reprodução quando o volume é zerado e reproduz novamente quando o volume aumentar. Também funciona fora do aplicativo - Pausar quando o volume for zerado - Novidades - Sugestões - Em forma - Clique ou deslize - Clique para abrir ou deslizar sem a navegação transparente da tela que está sendo reproduzida agora - Limpar fila - Compartilhar o aplicativo - Reportar erro - Enviar usando uma conta do GitHub - Entrar - Enviar manualmente - Você será encaminhado para o website do rastreador de problemas. - Questão - Título - Descrição - Nome de usuário - Senha - Informação do dispositivo - Reportar um problema - Por favor, digite seu nome de usuário válido do GitHub - Por favor, digite sua senha válida do GitHub - Por favor, insira um título do problema - Por favor, insira uma descrição do problema - Enviando relatório para o GitHub... - Não é possível enviar o relatório - Nome do usuário ou senha incorreta - Token de acesso inválido. Entre em contato com o desenvolvedor do aplicativo - Os problemas não estão ativados para o repositório selecionado. Entre em contato com o desenvolvedor do aplicativo. - Um erro inesperado ocorreu. Entre em contato com o desenvolvedor do aplicativo. - Informações do dispositivo copiado para a área de transferência. - Os dados da sua conta são usados ​​apenas para autenticação. - Efeito de neve caindo - Lista negra - O conteúdo das pastas na lista negra está oculto da sua biblioteca. - Enviar log de falha - Pinterest - Siga a página do Pinterest para inspiração de design do Retro Music - Filtrar duração da música - Erro - Erro de permissão - Clássico - Compositor - Compositor - Próxima música - Última música - Deslizar - Salvar - Escolha a imagem - Definir uma foto de perfil - Editar - Biblioteca - Deslize para desbloquear - Adicionar letras - Cole as letras aqui - Adicione tempo de enquadramento das letras - Letras sincronizadas - Definir toque - Permite que o Retro Music modifique as configurações de áudio - Time, links sociais - Recursos avançados em teste - Ligado - Selecionar predefinição + + N\u00e3o foi poss\u00edvel reproduzir est\u00e1 m\u00fasica. + + A seguir + + Atualizar imagem + + Atualizando... + Atualize para o premium - Nova lista de reprodução - Terminar a última música - Imagem degradê - Pilha - + + Nome de usuário + + Versão + + Giro vertical + + Virtualizador + + Pesquisar na internet + Bem-vindo(a), - Obtenha o Premium - Temas do reproduzindo agora, Efeito carrossel, Tema de cor e mais... - Reproduzir tudo - Começar a reprodução de música. - Teclado - Resetar - Categorias da biblioteca - Configurar visibilidade e ordem de categorias da biblioteca. - Controles - Estilo do álbum + + O que você quer compartilhar? + + Novidades + + Janela + + Cantos arredondados + + Definir %1$s como toque. + + %1$sd selecionado + + Ano + + Você precisa selecionar ao menos uma categoria. + + Você será encaminhado para o website do rastreador de problemas. + + Os dados da sua conta são usados ​​apenas para autenticação. diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index e2147c95..e57513c2 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -2,115 +2,194 @@ Culoare ton Culoarea de accent, implicit, se face verde. + Despre + Adaugă la favorite Adaugă la coada de redare Adaugă la un playlist + Curăță coada de redare Șterge playlist + Șterge Șterge de pe dispozitiv + Detalii + Pagină album Pagină artist Registrul principal + Acord + Mărimea grilei Mărimea grilei (bază) + Următorul + Redați Redă urmatorul Redați/Opriți + Anterior + Șterge din favorite Șterge din coada de redare Șterge din playlist + redenumiți + Salvează coada de redare + Scanează + Căutare + Setare Setează ca ton de apel Setează ca registru principal + "Setări" + Expediază + Amestecă tot Amestecă playlist + Cronometru de somn + Redactor info + Adaugă + Adaugă fotografie + "Adaugă la playlist" + "Adăugat 1 titlu la coada de redare." + Adăugate %1$d titluri la coada de redare + Album + Artistul albumului + Titlul ori numele artistului nu e completat + Albume + Mereu + Hey! încearcă acest music player la adresa: https://play.google.com/store/apps/details?id=%s + Amestecă Top cântece + Retro music - Mare Retro music - Card Retro music - Classic Retro music - Mic + Artist + Artiști + Folcalizarea audio a fost respinsă. + Ajustați setările de sunet și comenzile egalizatorului + Biografie + Negru + Lista neagră + Blur + Blur Card - Cumpărați RetroMusic Pro + Anulează cronometrul curent + Card + Modificări + Lista de modificări păstrată din aplicația \"Telegram\" + Șterge + Șterge \"Lista neagră\" + Șterge playlist %1$s? Aceast\u0103 ac\u021biune nu poate fi \u00eenapoiat\u0103!]]> + Culoare + Culoare + Culori + Nu s-a putut crea playlist. "Nu s-a putut desc\u0103rca o copert\u0103 de album corespunz\u0103toare." Nu a putut fi restabilită achiziția. Nu s-au putut scana %d fișiere + Crează + S-a creat playlist-ul %1$s. + Acum ascultați %1$s de %2$s. + Suriu + Nu există versuri + Șterge playlist %1$s?]]> + Șterge playlist-uri + %1$s?]]> + %1$d playlist-uri?]]> %1$d cântece?]]> Au fost șterse %1$d cântece. + Doriți să ștergeți lista neagră? %1$s din lista neagră?]]> + Donează + Dacă ești de părere că merit să fiu plătit pentru munca mea, poți să donezi aici. + Cumpăraţi-mi o(un) + Descarcă de pe Last.fm + Gol + Egalizator + Favorite + Uniform + Mape + Pentru dvs. + Plin + Schimbați culorile generale ale aplicației Aspect + Gen muzical + Genuri + 1 2 3 @@ -119,67 +198,120 @@ 6 7 8 + Istoric + Acasă + Au fost insertate %1$d cântece în playlist-ul %2$s. + Bitrate + Format Numele fișierului Dosarul fișierului Mărime + Rata de eșantionare + Lungime + Adăugate recent + Hai să ascultăm ceva + Biblioteca + Licențe + Alb + Listarea fișierelor + Se încarcă produsele... + Versuri + Numele Meu + Top cântece redate + Niciodată + Playlist nou + %s a fost setat ca noul registru principal. + Niciun album + Niciun artist + "Mai întâi redă un cântec, apoi incearcă din nou." + Nu a fost găsit nici un equalizer. + Niciun gen + Nu a fost găsite versuri. + Niciun playlist + Nu s-a găsit nicio achiziție. + Niciun rezultat + Niciun cântec + Normal + %s nu este litsat în magazinul media.]]> + Nimic de scanat. + Notificare + Personalizează stil de notificare + Se redă Coada de redare + Doar pe Wi-Fi + Altele + Ultimele 3 luni + Accesul la stocarea externă este respinsă. + Permisiunile au fost respinse. + Personalizare + Personalizează UI si pagina de redare + Alegeți din spațiul de stocare local + Simplu + Notificarea de redare oferă acțiuni de redare / pauză etc. Notificarea de redare + Playlist gol + Playlist-ul este gol + Numele playlist-ului + Playlist-uri + Audio General Imagini Ecran de blocare Playlist-uri + "Valabil doar pe Lollipop" + Folosește coperta de album curentă ca imagine de fundal pe ecranul de blocare. Notificațiile, navigarea etc. Spălăcește coperta de album pe ecranul de blocare. Poate cauza probleme cu alte aplcicatii sau widget-uri. @@ -199,6 +331,7 @@ Mod imersiv Începe redarea imediat ce sunt conectate căștile. Dacă aveți spațiu pe ecranul de redare, activați controalele de volum + Afișați coperta albumului Comenzi rapide colorate Reduce volumul la pierderea focalizării @@ -223,77 +356,140 @@ Redare automată Controale volum Info utilizator + Culoarea de bază Culoarea temei primare, implicită în gri albastru, pentru moment funcționează doar cu culori închise + Procurare + Coadă + Evaluaţi aplicaţia + Dacă vă place această aplicație, anunțați-ne în magazinul Google Play pentru a oferi o experiență mai bună + Albume recente + Artişti recenţi + Eliminare + Eliminare copertă + Eliminare din lista neagră + Eliminați melodia din lista de redare %1$s din lista de redare?]]> + Eliminare melodii din lista de redare + %1$d melodii din lista de redare?]]> + Redenumiţi lista de redare + Reseteţi imaginea artistului + Restabilire + A fost restaurată achiziția anterioară. Reporniți aplicația pentru a utiliza toate funcțiile. Au fost restabilite achizițiile anterioare. + Se restabilește achiziția... + Retro Egalizator + + Cumpărați RetroMusic Pro + Salvare ca fişier Salvaţi lista de redare în %s. + Salvare modificări + Au fost scanate %1$d din %2$d fişiere. + Căutare în bibliotecă... + Setaţi imaginea artistului + Amestecare + Simplu + Temporizatorul a fost anulat. Temporizatorul este setat pentru %d minute de acum. + Melodie + Durată + Melodii + ordinea de sortare + Scuze! Dispozitivul tau nu suporta comenzi vocale + Caută în colecția ta + Numele tău va fi afișat pe ecranul de pornire + Susţineţi dezvoltarea + Mulțumesc! + Fișier audio + Luna aceasta + Săptămâna aceasta + Anul acesta + Mic + Tablou de bord + Bună ziua O zi bună Bună seara Bună dimineaţa Noapte bună + Numele dvs. + Astăzi + Albume de top + Artişti de top + "Melodie (2 pentru melodia 2 sau 3004 pentru CD3 melodia 4)" + Numărul piesei + Traducere + Nu s-a putut reda aceast\u0103 melodie. + Urmează + Actualizare imagine + Se actualizează... + Versiune + Căutare pe internet + Ce doriți să expediați? + Fereastră + Setează %1$s ca ton de apel + %1$d selectat + Anul diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 5c6d3e8a..4f2d6236 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -1,142 +1,294 @@ - Выберите хотя бы одну категорию. - Маленький альбом + Команда,ссылки на соц.сети + Основной цвет Основной цвет, по умолчанию зеленовато-голубой. + О программe + Добавить в избранное Добавить в очередь проигрывания Добавить в плейлист + Очистить очередь проигрывания Очистить плейлист + Удалить Удалить с устройства + Подробности + Перейти к альбому Перейти к исполнителю Перейти к жанру В начало + Разрешить + Размер сетки Размер сетки (по горизонтали) + + "Создать плейлист +" + Далее + Играть Играть далее Воспроизведение/Пауза + Предыдуший + Удалить из избранного Удалить из очереди воспроизведения Удалить из плейлиста + Переименовать + Сохранить очередь воспроизведения + Сканировать Сканирование каталога + Поиск - Задавать + Запустить Задать в качества рингтона Установить как стартовый каталог + "Настройки" + Поделиться + Перемешать всё Перемешать плейлист + Таймер сна + Порядок сортировки + Редактор тегов + Адаптивный + Добавить + + Добавить тест песни + Добавить \nфото + "Добавить в плейлист" + + Довавить текст песни + "В очередь добавлен 1 трек" + В очередь добавлено %1$d треков. + Альбом + Исполнитель альбома + Трек или альбом отсутствуют. + Альбомы + Всегда + Эй, попробуй этот крутой музыкальный плеер на: https://play.google.com/store/apps/details?id=%s + Перемешать Часто прослушиваемые треки + Retro music - Крупный Retro music - Карточка Retro music - Классический Retro music - Маленький Retro music - Текст + Исполнитель + Исполнители + Фокус на аудио отключен. + Отрегулировать настройки звука и эквалайзера + + Авто + + Основная цветовая тема + Усиление баса + + Биография + Биография + Максимально чёрный + Черный список + Размытие + Карточка с размытием - Оставить экран включенным - Имейте в виду, что включение этой функции может повлиять на заряд батареи - Сила размытия - Сила размытия в соответствующих темах; чем ниже, тем меньше нагрузка на устройство - Retro Music Pro + + Невозможно отправить отчет + Недопустимый ключ доступа. Пожалуйста, свяжитесь с разработчиком приложения. + Проблемы не активны в выбранном хранилище. Пожалуйста, свяжитесь с разработчиком приложения. + Произошла непредвиденная ошибка. Пожалуйста, свяжитесь с разработчиком приложения. + Неверное имя пользователя или пароль + Вопрос + Отправить вручную + Пожалуйста, введите описание проблемы + Пожалуйста, введите ваш корректный пароль GitHub + Пожалуйста, введите название отчета о проблеме + Пожалуйста, введите корректно ваше имя пользователя GitHub + Произошла непредвиденная ошибка. Извините, если это продолжится +то «Очистите данные приложения» + Загрузка отчета на GitHub… + Отправить с помощью учетной записи GitHub + Отменить + Карточка - Цветная карточка + Круговой - Изображение + + Цветная карточка + Карточка + + Карусель + + Эффект карусели на экране текущего воспроизведения + + Каскадный + Передать на устройство + Список изменений + Список изменений хранится на канале Telegram + + Круговая + + Классический + Очистить + + Очистить данные приложения + Очистить черный список + + Очистить очередь + Очистить плейлист %1$s? \u042d\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c!]]> + Закрыть + Цвет + Цвет + Цвета + + Композитор + + Скопировать информацию об устройстве в буфер обмена. + \u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442. "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0443\u044e \u043e\u0431\u043b\u043e\u0436\u043a\u0430 \u0430\u043b\u044c\u0431\u043e\u043c\u0430." Не удалось восстановить покупку. Не удалось отсканировать %d файлов. + Создать + Создан плейлист %1$s. + Участники и помощники + Сейчас играет %1$s от %2$s. + Немного чёрный + Нет текста + Удалить плейлист %1$s?]]> + Удалить плейлисты + + Удалить трек %1$s?]]> + + Удалить треки + %1$d плейлистов?]]> %1$d треков?]]> - Удалить трек - Удалить треки Удалено %1$d треков. + + Глубина + + Описание + + Информация об устройстве + + Разрешить Retro Music изменять настройки звука + + Выбрать рингтон + Хотите очистить черный список? %1$s из черного списка?]]> + Пожертвовать + Если вы считаете, что я заслуживаю награды за свою работу, можете отправить мне несколько долларов здесь. + Купить мне: + Загрузить с Last.fm + + Редактировать + Изменить обложку + Пусто + Эквалайзер + + Ошибка + ЧаВО + Избранное + + Соответствие + Плоский + Папки + Для вас + Полный + + Полная карточка + Изменить тему и цвета приложения Внешний вид плеера + Жанр + Жанры + Развивай проект на GitHub + Присоединяйся к сообществу Google Plus, где ты можешь попросить о помощи или следить за обновлениями Retro Music + 1 2 3 @@ -145,77 +297,190 @@ 6 7 8 + + Петля + История + Главная + + Горизонтальная ориентация + + Изображение + Изменение настроек загрузки изображения артиста + В плейлист %2$s внесено %1$d песен. + Instagram Поделитесь своим обзором на приложение Retro Music в Instagram + Битрейт + Формат Имя файла Расположение файла Размер + Частота дискретизации + Длина + + Помечено + Последние добавленные + + Предыдущая песня + Давайте послушаем немного музыки + Библиотека + + Разделы библиотеки + Лицензии + Белый + Список файлов + Загрузка товаров... + + Войти + Текст + + Сделано с ❤️ в Индии + Материальный + + Ошибка + + Ошибка разрешения + Моё имя + Любимые треки + Никогда + Новая фото баннера + Новый плейлист + Новое фото профиля + %s новая стартовая директория. + + "Следующая песня " + Альбомы отсутствуют + Исполнители отсутствуют + "Сначала проиграйте песню, затем попробуйте заново." + Эквалайзер не найден. + Жанры отсутствуют + Текст отсутствует + Плейлисты отсутствуют + Покупки отсутствуют. + Нет результатов + Нет песен + Обычный + Обычный текст + Нормальный + %s не найден в media store.]]> + Нечего сканировать. + Уведомления + Настроить стиль уведомлений + Сейчас играет Очередь в \"Сейчас играет\" + Настроить экран текущего воспроизведения + 9+ тем экрана текущего воспроизведения + Только по Wi-Fi + + Расширеные возможности + Другое + + Пароль + Последние 3 месяца + + Вставьте тест песни сюда + Разрешение для доступа у внешнему хранилищу не получено. + Разрешения не получены. + Персонализировать + Настройте управление экрана текущего воспроизведения и интерфейса + Взять из хранилища + + Выбрать изображение + + Pinterest + Следуйте за страницей Retro Music в Pinterest + Простой + Уведомление о песне предоставляет действия для воспроизведения / паузы и т.д. Уведомления воспроизведения + Пустой плейлист + Плейлист пуст + Название плейлиста + Плейлисты + + Стиль деталей альбома + + Сила размытия в соответствующих темах; чем ниже, тем меньше нагрузка на устройство + Сила размытия + + Фильтровать песни по длительности + Аудио Тема Изображения Экран блокировки Плейлисты + + Автоматически ставит музыку на паузу при уменьшении громкости до нуля и играет после увеличения громкости. Предупреждение, когда вы увеличиваете громкость не в приложении, то Retro Music также начнёт воспроизведение + Пауза при нулевой громкости + Имейте в виду, что включение этой функции может повлиять на заряд батареи + Оставить экран включенным + + Нажмите, чтобы открыть экран воспроизведения с прозрачной навигации или проведите чтобы открыть без прозрачной навигации + Нажмите или Проведите + "Доступно только на Lollipop." + + Эффект снегопада + Использовать обложку альбома текущей песни в качестве обоев на экране блокировки. Снизить громкость воспроизведения когда приходить звуковое уве + Содержимое черного списка скрыто из вашей библиотеки. Размыть обложку альбома на экране блокировки. Может вызывать проблемы со сторонними приложениями и виджетами. Эффект карусели для обложек альбома на экране текущего воспроизведения. Учтите, что темы \"Карточка\" и \"Размытая карточка\" не будут работать. Использовать классический дизайн уведомлений. @@ -224,7 +489,10 @@ Окрашивает панель навигации в главный цвет "\u041e\u043a\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u0432 \u044f\u0440\u043a\u0438\u0439 \u0446\u0432\u0435\u0442 \u043e\u0431\u043b\u043e\u0436\u043a\u0438 \u0430\u043b\u044c\u0431\u043e\u043c\u0430" Наиболее доминирующий цвет будет выбран из обложки альбома или исполнителя + Добавить дополнительные элементы управления для мини-плеера "Может вызвать проблемы с воспроизведением на некоторых устройствах." + Включить вкладку жанр + Включить кнопку Домой Может повысить качество обложки альбома, но приведет к более медленной загрузки изображения. Включите это только в том случае, если у вас есть картинки с низким разрешением Используйте экран блокировки Retro Music Сведения о лицензии для программного обеспечения с открытым исходным кодом @@ -234,23 +502,27 @@ Начать воспроизведение музыки сразу после подключения наушников Режим перемешивания выключится при проигрывании нового списка треков Если доступно достаточно места, показывать управление громкостью на экране воспроизведения - Добавить дополнительные элементы управления для мини-плеера - Включить вкладку жанр - Включить кнопку Домой + Показать обложку альбома - Название кнопок + Тема обложки альбома + Стиль обложки экрана текущего воспроизведение Сетка альбомов Цветные ярлыки Сетка исполнителей Уменьшить громкость при потере фокуса Автозагрузка изображений исполнителя + Черный список Размытие обложки альбома Выбрать эквалайзер Классический дизайн уведомлений Адаптивный цвет Цветное уведомление + Дополнительные элементы управления Беспроблемное воспроизведение Тема приложения + Показать вкладку жанра + Сетка исполнителя на Главной странице + Кнопка домой Игнорировать обложки из хранилища Дата последнего добавления плейлиста Полноэкранное управление @@ -258,6 +530,7 @@ Тема экрана текущего воспроизведение Лицензии с открытым кодом Круглые углы + Название кнопок Эффект карусели Главный цвет Полноэкранное приложение @@ -266,193 +539,222 @@ Режим перемешивания Управление громкостью Информация о пользователе - Дополнительные элементы управления - Кнопка домой - Показать вкладку жанра - Сетка исполнителя на Главной странице - Стиль обложки экрана текущего воспроизведение - Стиль деталей альбома - Каскадный + Основной цвет Основной цвет темы, по умолчанию - синий, теперь работает с темными цветами + + Профиль + Купить + * Подумайте, прежде чем покупать, не просите возврата. + Очередь + Оценить приложение + Любите это приложение? Сообщите нам в Google Play Store, как мы можем сделать его еще лучше + Последние альбомы + Последние исполнители + Удалить + Удалить фотографию баннера + Удалить обложку + Удалить из черного списка + Удалить фотографию профиля + Удалить песню из плейлиста %1$s из плейлиста?]]> + Удалить песни из плейлиста + + Переименовать плейлист + + Сообщить о проблеме + + Сообщить об ошибке + Сбросить изображение исполнителя + Restore + Предыдущая покупка восстановлена. Перезагрузите приложение, чтобы использовать все функции. Восстановленные предыдущие покупки. + Восстановление покупки ... + Эквалайзер Retro Music + + Retro Music Pro + + Сохранить + Сохранить как... + Сохранить как... + Сохраненный список воспроизведения в %s. + Сохранение изменений + Сканировать медиа-файлы + Просканировано %1$d из %2$d файлов. + Найдите свою библиотеку ... + Выбрать все + Выбрать фото баннера + + Выбрано + + Отправить лог ошибки + + Задавать + Установить изображение исполнителя + + Выбрать фото профиля + + Поделиться приложением + Перемешать + Простая + Таймер отключения отменен. Таймер сна установлен на %d минут. + + Провести + + Маленький альбом + Общее + Песня + Длительность песни + Песни + Порядок сортировки По возрастанию Альбом Исполнитель + Композитор Дата Год По убыванию + Извините! Ваше устройство не поддерживает ввод с помощью речи + Поиск в вашей библиотеке + + Предложения + Просто покажите свое имя на главном экране + Поддержать разработку + + Проведите, чтобы разблокировать + + Синхронизируемый текст + Системный эквалайзер + Telegram Присоединитесь к группе Telegram, чтобы обсуждать ошибки, предлагать улучшения, хвастаться и делать многое другое + Спасибо ! + Аудиофайл + Этот месяц + Это неделя + Этот год + Крошечный + + Название + Панель приборов + Добрый день Добрый день Добрый вечер Доброе утро Доброй ночи + Как тебя зовут + Сегодня + Топ альбомов + Топ исполнителей + "Трек (2 для трека 2 или 3004 для CD3 трека 4)" + Номер трека + Переведите + Помогите нам перевести приложение на ваш язык + Twitter Поделитесь своим дизайном с Retro Music - \u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u044d\u0442\u0443 \u043f\u0435\u0441\u043d\u044e. - Следующий - Обновить изображение - Обновленяется ... - Версия - Виртуализация - Поиск в интернете - Чем вы хотите поделиться? - Окно - Установите %1$s в качестве мелодии звонка. - Выбрано %1$d - Год - Сделано с ❤️ в Индии - Очистить данные приложения - Произошла непредвиденная ошибка. Извините, если это продолжится -то «Очистите данные приложения» - Ошибка - Основная цветовая тема - 9+ тем экрана текущего воспроизведения - Эффект карусели на экране текущего воспроизведения - Закругленные углы - Тема обложки альбома - Круговая - Карусель - Настроить экран текущего воспроизведения - Полная карточка - Профиль - Биография - Авто - Помечено + Не помечено - Выбрано - Глубина - Вертикальная ориентация - Петля - Горизонтальная ориентация - Автоматически ставит музыку на паузу при уменьшении громкости до нуля и играет после увеличения громкости. Предупреждение, когда вы увеличиваете громкость не в приложении, то Retro Music также начнёт воспроизведение - Пауза при нулевой громкости - Что нового : - Предложения - Соответствие - Нажмите или Проведите - Нажмите, чтобы открыть экран воспроизведения с прозрачной навигации или проведите чтобы открыть без прозрачной навигации - Очистить очередь - Поделиться приложением - Сообщить об ошибке - Отправить с помощью учетной записи GitHub - Войти - Отправить вручную - Вы будете перенаправлены на сайт системы отслеживания ошибок. - Вопрос - Название - Описание + + \u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u044d\u0442\u0443 \u043f\u0435\u0441\u043d\u044e. + + Следующий + + Обновить изображение + + Обновленяется ... + Имя пользователя - Пароль - Информация об устройстве - Сообщить о проблеме - Пожалуйста, введите корректно ваше имя пользователя GitHub - Пожалуйста, введите ваш корректный пароль GitHub - Пожалуйста, введите название отчета о проблеме - Пожалуйста, введите описание проблемы - Загрузка отчета на GitHub… - Невозможно отправить отчет - Неверное имя пользователя или пароль - Недопустимый ключ доступа. Пожалуйста, свяжитесь с разработчиком приложения. - Проблемы не активны в выбранном хранилище. Пожалуйста, свяжитесь с разработчиком приложения. - Произошла непредвиденная ошибка. Пожалуйста, свяжитесь с разработчиком приложения. - Скопировать информацию об устройстве в буфер обмена. + + Версия + + Вертикальная ориентация + + Виртуализация + + Поиск в интернете + + Чем вы хотите поделиться? + + Что нового : + + Окно + + Закругленные углы + + Установите %1$s в качестве мелодии звонка. + + Выбрано %1$d + + Год + + Выберите хотя бы одну категорию. + + Вы будете перенаправлены на сайт системы отслеживания ошибок. + Данные вашей учетной записи используются только для аутентификации. - Эффект снегопада - Черный список - Содержимое черного списка скрыто из вашей библиотеки. - Отправить лог ошибки - Pinterest - Следуйте за страницей Retro Music в Pinterest - Фильтровать песни по длительности - Ошибка - Ошибка разрешения - Классический - Композитор - Композитор - "Следующая песня " - Предыдущая песня - Провести - Сохранить - Выбрать изображение - Выбрать фото профиля - Редактировать - Проведите, чтобы разблокировать - Добавить тест песни - Вставьте тест песни сюда - Довавить текст песни - Синхронизируемый текст - Выбрать рингтон - Разрешить Retro Music изменять настройки звука - Команда,ссылки на соц.сети - Расширеные возможности - "Создать плейлист -" - Разделы библиотеки diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 4710077c..c762a3cd 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -2,98 +2,174 @@ Boja detalja Boja plejera, uobičajena je zelena + O programerima + Dodaj u omiljene Dodaj u listu za pustanje Dodaj na plejlistu + Izbrisi trenutnu plejlistu za pustanje Izbrisi plejlistu + Obrisi Izbrisi sa uredjaja + Detalji + Vidi album Vidi izvodjaca Idi u pocetni direktorijum + . + Velicina kartica . + Sledece + Pusti Pusti sledeće Pusti/pauziraj + Prethodno + Izbrisi iz favorita Izbrisi iz trenutne plajliste za slusanje Obrisi sa plejliste + Promeni naziv + Sacuvaj plejlistu za trenutno pustanje + Skeniraj fajlove + Pretrazi + Postavi Postavi kao melodiju zvona Postavi kao pocetni direktorijum + "Podesavanja" + Podeli + Nasumicno pusti Nasumicno pusti plejlistu + Tajmer za iskljucivanje + Uredjivac tagova + Dodaj + Dodaj sliku + "Dodaj na plejlistu" + "Dodata je 1 pesma na plejlistu" + Dodato %1$d pesama na plejlistu + Album + Izvodjac albuma + Naziv ili izvodjac su nepoznati + Albumi + Uvek + Isprobaj ovaj fantastican plejer na: https://play.google.com/store/apps/details?id=%s + Reprodukuj nasumicno Najvise slusano + Retro Music - Big Retro music - Card Retro music - Classic Retro Music - Small + Izvodjac + Izvodjac + Zvuk se vec reprodukuje + Biografija + Perfektno crna + Ne trazi muziku u... + Otkazi trenutni tajmer + Izmene + Izmene odobrene za Telegram aplikacije + Ocisti + Ocisti listu za ignorisanje foldera + Ocisti plejlistu %1$s? Izmene se nece moci opozvati!]]> + Boje + Nemoguce je napraviti plejlistu "Nemoguce je preuzeti odgovarajucu pozadinu albuma" Nije moguce skenirati %d fajlove + Napravi + Plejlista %1$s je napravljena + Trenutno se reprodukuje %1$s izvodjaca %2$s + + Kao tamno + Nema pronadjenih tekstova + Izbrisi plejlistu %1$s plejlistu?]]> + Izbrisi plejlistu + %1$s?]]> + %1$d plejliste?]]> %1$d numere?]]> Izbrisi %1$d numere. + Da li zelite da ispraznite listu za ignorisanje foldera? %1$s sa liste za ignorisanje foldera?]]> + Doniraj + Ako mislis da zasluzujem da budem placen za ovaj posao, mozes mi poslati par dolara + + Kupi mi + Preuzmi sa Last.fm + Nema pesama + Ekvilajzer + Favoriti + Ravno + Folderi + + Za tebe + + Ispunjen + Zanr + 1 2 3 @@ -102,59 +178,106 @@ 6 7 8 + Istorija reprodukovanja + Pocetak - Ispunjen + Ubaceno %1$d pesama u plejlistu %2$s. - Prikazuje tvoje ima na pocetnom ekranu + Bitrate + Formatiraj Naziv datoteke Lokacija datoteke Velicina + Brzina uzorkovanja + Duzina trajanja + Poslednje dodato + Slusajmo nesto! + Pretrazi + Licence + Perfektno bela + Pronalazenje pesama + Ucitavanje datoteka... + Tekst pesme + Moje ime je + Najslusanije numere + Nikada + Nova plejlista + %s je novi pocetni direktorijum. + Nema albuma + Nema izvodjaca + "Prvo pusti pesmu, a onda pokusaj opet" + Nije pronadjen ni jedan ekvilajzer + Nema pronadjenog teksta pesme + Nema plejliste + Nema rezultata + Nema pesama + + Normalno + %s nije pronadjen u prodavnici pesama]]> + Nema se sta skenirati + Obavestenja + Lista za trenutno pustanje + Samo kada je povezan na WiFi + Prosla 3 meseca + Dozvola za pristup spoljasnjem skladistu je odbijena + Dozvola odbijena. + Izaberi iz unutrasnjeg skladista + + Jednostavan + Obavestenja obezbedjuju komande za pustanje/pauziranje itd. Obavestenja o reprodukciji + Isprazni plejlistu + Plejlista je prazna + Ime plejliste + Plejliste + Zvuk Slike Zakljucan ekran Plejliste + "Dostupno samo na Android Lollipop-u" + Koristi omot albuma kao pozadinu kada se reprodukuje muzika Obavestenja, navigacija itd. Zamuti omot albuma na zakljucanom ekranu. (moze izazvati probleme sa drugim aplikacijama i vidzetima) @@ -165,10 +288,14 @@ "Oboj obavestenja u boju omota albuma" "Moze prouzrokovati probleme na pojedinim uredjajima." oze poboljsati kvalitet omota albuma ali uzrokuje njegovo sporije ucitavanje. Omoguci ovo samo ukoliko imas problema sa losim kvalitetom slike omota albuma. + Prikazuj kontrole na zakljucanom ekranu Detalji o licencama za softver otvorenog izvora Zaobl ivice ekrana, omota albuma itd. + Omoguci/ iskljuci nazive kartica Omoguci ovo za impresivan mod. + Kada se prikljuce slusalice automatki pusti pesme Ukoliko imas prostora na ekranu za pustanje omoguci kontroler jacine zvuka. + Prikazi omot albuma Obojene ikone aplikacije Utisaj zvuk prilikom poziva i drugih obavestenja. @@ -176,7 +303,6 @@ Zamuti omot albuma Klasican stil obavestenja Prilagodive boje - Kao tamno Obojena obavestenja Neuznemiravano reprodukovanje Opsta tema @@ -188,79 +314,122 @@ Otvoren izvor licenca Zaobli ivice Aplikacija preko celog ekrana + Nazivi kartica + Automatsko reprodukovanje Kontroler jacine zvuka Podaci o korisniku + Primarna boja + Primarna boja, podrazumevna je bela + Trenutno + Oceni aplikaciju + Volis ovu aplikaciju? Obavesti nas u Google Play Prodavnici + Izbrisi + Izbrisi omot albuma + Izbrisi sa liste za ignorisanje foldera + Izbrisi pesmu sa plejliste %1$s sa plejliste?]]> + Izbrisi pesme sa plejliste + %1$d pesama sa plejliste?]]> + Promeni ime plejliste + + Resetuj sliku izvodjaca + Obnovljene su prethodne kupovine + Retro ekvalajzer + Sacuvaj kao fajl Plej lista sacuvana u %s. + Cuvanje izmena + Skenirano %1$d od %2$d fajlova + Pretrazi svoju biblioteku... + + Postavi sliku izvodjaca + Nasumicno pusti + + Jednostavan + Tajmer za iskljucivanje je otkazan Tajmer za iskljucivanje je podesen za %d od sad. + Pesma + Trajanje pesme + Pesme + Nacin sortiranja + Izvini! Tvoj uredjaj ne podrzava unos govorom + Pretrazi svoju biblioteku + + Prikazuje tvoje ima na pocetnom ekranu + Podrzi programera + Hvala! + Audio fajl + Ovog meseca + Ove nedelje + Ove godine - Komandna tabla - Danas - "Redni broj (2 za redni broj 2 ili 3004 za CD3 redni broj 4)" - Redni broj - Prevod - Nije moguce pustiti pesmu. - Sledece - Azuriraj sliku - Azurira se... - Verzija - Web pretraga - Sta zelis da podelis? - Kako se zoves? - Postavi %1$s kao melodiju zvona. - Selektovano %1$d - Godina - Resetuj sliku izvodjaca - Postavi sliku izvodjaca - Kupi mi - Jednostavan - Laku noc - Dobro vece - Dobar dan - Dobro jutro - Dobar dan - Jednostavan - Kada se prikljuce slusalice automatki pusti pesme - Automatsko reprodukovanje - Omoguci/ iskljuci nazive kartica - Nazivi kartica - Za tebe - Normalno - Prikazuj kontrole na zakljucanom ekranu - Primarna boja, podrazumevna je bela + Sitno - - - - + + Komandna tabla + + Dobar dan + Dobar dan + Dobro vece + Dobro jutro + Laku noc + + Kako se zoves? + + Danas + + "Redni broj (2 za redni broj 2 ili 3004 za CD3 redni broj 4)" + + Redni broj + + Prevod + + Nije moguce pustiti pesmu. + + Sledece + + Azuriraj sliku + + Azurira se... + + Verzija + + Web pretraga + + Sta zelis da podelis? + + Postavi %1$s kao melodiju zvona. + + Selektovano %1$d + + Godina diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 3c58f398..b19033d2 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -1,143 +1,297 @@ - . - Küçük albüm + Takım, sosyal medya linkleri + Vurgu rengi Tema vurgu rengi, varsayılan olarak çamurcun renktedir. + Hakkında + Favorilere ekle Oynatma sırasına ekle Oynatma listesine ekle + Oynatma kuyruğunu temizle Oynatma sırasını temizle + Sil Cihazdan sil + Ayrıntılar + Albüme git Şarkıcıya git Şarkı türüne git Başlangıç dizine git + Onayla + Izgara boyutu Izgara boyutu (yer) + + Yeni oynatma listesi + Sonraki + Oynat + Hepsini oynat Bir sonrakini oynat Oynat/Durdur + Önceki + Favorilerden çıkar Oynatma listesinden çıkar Oynatma listesinden çıkar + Yeniden adlandır + Oynatma kuyruğunu kaydet + Tara Tarama rehberi + Ara - Ayarla + Başla Zil sesi olarak ayarla Başlangıç ​​dizini olarak ayarla + "Ayarlar" + Paylaş + Hepsini karıştır Oynatma listesini karıştır + Uyku zamanlayıcısı + Sıralama koşulu + Şarkı bilgilerini düzenle + Uyarlanabilir + Ekle + + Şarkı sözleri ekle + Fotoğraf ekle + "Oynatma listesine ekle" + + Süreli şarkı sözleri ekle + "Kuyruğa 1 parça eklendi." + %1$d şarkı kuyruğa eklendi. + Albüm + Albümün sâhibi + Ya başlık ya da şarkıcı adı boş. + Albümler + Her zaman + Merhaba, harika bir müzik deneyenimi için Retro Müziği şuradan indir: https://play.google.com/store/apps/details?id=%s + Karıştır Sık çalınan şarkılar + Retro music - Büyük Retro Music - Kart Retro Music - Alışılageldik Retro Music - Küçük Retro Music - Yazı + Şarkıcı + Şarkıcılar + Ses odaklaması reddedildi. + Ses ayarlarını değiştirin ve ekolayzır denetimlerini gözden geçirin + + Otomatik + + Temel renk teması + Bas Kuvvetlendirme + + Biyografi + Yaşam öyküsü + Siyah + Kara Liste + Bulanıklık + Bulanık kart - Ekranı açık tut - Bu özelliği etkinleştirmenin pil ömrünü etkileyebileceğini unutmayın. - Bulanıklık tutarı - Bulanıklık içeren arayüzler için bulanıklık tutarı, ne kadar azsa o kadar hızlı. - Retro Müzik Premium + + Rapor gönderilemiyor + Geçersiz erişim belirteci. Lütfen uygulama geliştiricisine başvurun. + Seçilen depo için sorunlar etkin değil. Lütfen uygulama geliştiricisiyle iletişime geçin. + Beklenmedik bir sorun oluştu. Lütfen uygulama geliştiricisine başvurun. + Yanlış kullanıcı adı veya şifre + Sorun + Manuel olarak gönder + Lütfen sorun açıklamasını yazın + Lütfen geçerli GitHub şifrenizi girin + Lütfen bir sorun başlığı girin + Lütfen geçerli bir GitHub kullanıcı adını gir + Beklenmedik bir hata oluştu. Bu hatayı bulduğunuz için üzgünüz, eğer dur madan hata verirse \"Verileri Temizleyin\" ya da Eposta gönderin + Rapor GitHub\'a yükleniyor ... + GitHub hesabını kullanarak gönder + İptal et + Kart - Renkli Kart + Yuvarlak - Görüntü + + Renkli Kart + Kart + + Atlıkarınca + + Şimdi oynatlıyor ekranında atlıkarınca efekti + + Basamaklı + Yayınla + Değişiklik günlüğü + Sürümlerdeki değişiklik kayıtları Telegram üzerinde tutulmaktadır. + + Dairesel + + Klasik + Temizle + + Uygulama verilerini temizle + Kara listeyi temizle + + Kuyruğu temizle + Oynatma listesini temizle % 1 $ s oynatma listesini temizlemek istedi\u011finizden emin misiniz? Bu i\u015flem kal\u0131c\u0131d\u0131r ve geri al\u0131namaz!]]> + Kapat + Renk + Renk - Gündüz Gece (alpha) + Renkler + + Yazar + + Cihaz bilgileri panoya kopyalandı + Oynatma listesi yarat\u0131lamad\u0131. "E\u015fle\u015fen bir alb\u00fcm kapa\u011f\u0131 indirilemedi" Satın alma bulunamadı. Dosya taranamadı + Yarat + %1$s adıyla çalma listesi yaratıldı. + Üyeler ve katkıda bulunanlar + Şu anda %2$s şarkıcısından %1$s dinleniyor. + Koyu + + Gündüz Gece (alpha) + Şarkı sözü yok + Çalma listesini sil %1$s silinsin mi?]]> + Çalma listelerini sil + + Şarkıyı sil %1$s adlı şarkı silinsin mi?]]> + + Şarkıları sil + %1$d çalma listeleri silinsin mi?]]> %1$d parçaları silinsin mi?]]> - Şarkıyı sil - Şarkıları sil %1$d parça silindi. + + Derinlik + + Açıklama + + Cihaz Bilgisi + + Retro Müzik\'in ses ayarlarını değiştirmesine izin ver + + Zil sesini ayarla + Kara listeyi temizlemek istiyor musunuz? %1$s yolunu kaldırmak istiyor musunuz?]]> + Bağış + Çalışmalarımın karşılığı olması gerektiğini düşünüyorsan bana biraz bahşiş bırakabilirsin. + Bana bağışlayacağın tutar: + Last.fm\'den yükle + + Düzenle + Albüm kapağını düzenle + Boş + Ekolayzır + + Hata + SSS + Gözdeler + + Son şarkıyı bitir + + Fit + Düz + Klasörler + Senin için + Dolu + + Kart dolu + Uygulamanın arayüzünü ve renklerini değiştirin Bak ve Hisset + Tür + Türler + Projeyi GitHub\'da çatalla + Yardım isteyebileceğiniz veya Retro Müzik güncellemelerini takip etmek için Google+ topluluğumuza katılın. + 1 2 3 @@ -146,77 +300,201 @@ 6 8 8 + + + + Menteşe + Geçmiş + Ana sayfa + + Yatay çevir + + Görüntü + + Gradyan görüntü + Şarkıcı görüntülerinin indirilme ayarları + %2$s listesine %1$d parça eklendi. + Instagram Instagram\'da Retro Müzik temanızı paylaşın + + Klavye + Bit Hızı + Biçim Dosya adı Dosya yolu Boyut + Örnekleme oranı + Uzunluk + + Etiketli + Son eklenen + + Son şarkı + Hadi, biraz müzik çalım! + Kütüphane + + Kütüphane kategorileri + Lisanslar + Açıkça Beyaz + Dosyalar listeleniyor + Ürünler yükleniyor ... + + Giriş + Şarkı sözleri + + Hindistan\'da ❤️ ile üretildi + Materyal + + Hata + + İzin hatası + İsim + Sık oynatılanlar + Asla + Yeni afiş fotoğrafı + Yeni şarkı listesi + Yeni profil fotoğrafı ekle + %s yeni başlangıç dizini + + Sonraki Şarkı + Albüm yok + Sanatçı yok + "Önce bir şarkı çal, sonra tekrar dene" + Ekolayzır bulunamadı + Tür yok + Şarkı sözleri yok + Oynatma Listesi Yok + Satın alma bulunamadı + Sonuç yok + Şarkı yok + Normal + Normal şarkı sözleri + Normal + %s medya deposunda listelenmiyor.]]> + Aranacak herhangi bir şey yok. + Bildirim + Bildirim stilini özelleştirin + Şimdi oynatılıyor Şimdi çalınıyor kuyruğu + Şimdi oynatılıyor ekranını özelleştirin + 9+ şimdi oynatılıyor temaları + + Açık + Sadece Wi-Fi ile + + Gelişmiş test özellikleri + Diğer + + Şifre + Son 3 ay + + Şarkı sözlerini buraya yapıştır + Depolama izni reddedildi. + İzinler reddedildi + Kişiselleştirme + Şimdi çalmakta olan ve kullanıcı arayüzü kontrollerinizi özelleştirin + Yerel depolama alanından seç + + Resim koy + + Pinterest + Retro Music tasarımından ilham almak için Pinterest sayfasını takip edin + Sade + Oynatma bildirimi, oynatma / duraklatma vb. Için eylemler sağlar. Oynatılıyor bildirimi + Boş oynatma listesi + Oynatma listesi boş + Oynatma listesi ismi + Oynatma listeleri + + Albüm detay stili + + Bulanıklık içeren arayüzler için bulanıklık tutarı, ne kadar azsa o kadar hızlı. + Bulanıklık tutarı + + Şarkı süresini filtrele + + Albüm stili Ses + Kontroller Tema Görüntüler + Kütüphane Kilit ekranı Oynatma listeleri + + Ses sıfıra düştüğünde şarkıyı duraklatır ve ses seviyesi yükseldiğinde çalmaya başlar. Ayrıca uygulamanın dışında da çalışır + Sıfırda dur + Bu özelliği etkinleştirmenin pil ömrünü etkileyebileceğini unutmayın. + Ekranı açık tut + + Çalmakta olan ekrana şeffaf gezinme olmadan açmak veya kaydırmak için tıklayın + Tıkla veya Kaydır + "Sadece Lollipop'da kullanılabilir." + + Kar yağışı efekti + Çalmakta olan şarkı albüm kapağını kilit ekranı duvar kağıdı olarak kullanın Sistem sesi çalındığında veya bir bildirim alındığında sesi kısın + Kara listedeki klasörlerin içeriği kütüphanenizden gizlenir. Albüm kapağını kilitli ekran üzerinde bulanıklaştırır. Üçüncü taraf uygulamaları ve widget\'ları ile sorunlara neden olabilir Çalmakta olan ekranda albüm resmi için atlıkarınca efekti. Kart ve Bulanıklaştırma Kartı temalarının çalışmayacağını unutmayın Klasik bildirim tasarımını kullanın @@ -225,8 +503,12 @@ Birincil renkteki gezinme çubuğunu renklendirir. "Alb\u00fcm kapa\u011f\u0131n\u0131n canl\u0131 rengindeki bildirimi renklendirir" En baskın renk, albüm veya sanatçı kapağından seçilecektir + Mini oynatıcı için ekstra kontroller ekle "Bazı cihazlarda oynatma sorunlarına neden olabilir" + Türk sekmesini aktif et + Ana sayfa afişini etkinleştir Albüm kapağı kalitesini artırabilir, ancak fotoğrafın yavaş yüklenmesine neden olur. Bunu, yalnızca düşük çözünürlüklü resimlerle ilgili sorunlarınız varsa etkinleştirin. + Kütüphane kategorilerinin görünürlük ve sırasını yapılandırın Retro Müzik\'in özel kilit ekranı kontrollerini kullanın Açık kaynaklı yazılım için lisans detayları Uygulamanın kenarlarını yuvarlaklaştır @@ -235,23 +517,27 @@ Kulaklık bağlandıktan hemen sonra çalmaya başlayın. Yeni bir şarkı listesi çalınırken Karışık modu kapanacak Yeterli alan varsa, ses denetimlerini şimdi oynatma ekranında göster - Mini oynatıcı için ekstra kontroller ekle - Türk sekmesini aktif et - Ana sayfa afişini etkinleştir + Albüm kapağını göster - Sekme başlıkları modu + Albüm kapağı teması + Albüm kapağını atla Albüm ızgarası Renkli uygulama kısayolları Sanatçı ızgarası Odak kaybında ses hacmini azaltın Sanatçı resimlerini otomatik indir + Kara Liste Bulanık albüm kapağı Ekolayzır seç Klasik bildirim tasarımı Adaptif renk Renkli bildirim + Ekstra kontroller Boşluksuz oynatma Uygulama teması + Tür sekmesini göster + Ana sayfa sanatçı ızgarası + Ana sayfa başlığı Media Store kapaklarını yoksay Son eklenen çalma listesi aralığı Tam ekran kontrolleri @@ -259,6 +545,7 @@ Şimdi oynatılıyor teması Açık kaynak lisansları Köşe kenarları + Sekme başlıkları modu Atlıkarınca efekti Baskın renk Uygulamayı tam ekran yapın @@ -267,210 +554,239 @@ Karıştır modu Ses kontrolleri Kullanıcı bilgisi - Ekstra kontroller - Ana sayfa başlığı - Tür sekmesini göster - Ana sayfa sanatçı ızgarası - Albüm kapağını atla - Albüm detay stili - Basamaklı + + Premium\'u al + Ana renk Ana tema rengi, varsayılanı mavi griye, şimdilik koyu renklerle çalışıyor + + Şimdi Oynatılıyor temaları, Atlıkarınca efekti, Renkli tema ve daha fazlası.. + + Profil + Satın al + Lütfen satın almadan önce düşünün. Para iadesi yapılmaz. + Kuyruk + Uygulamayı Değerlendir + Bu uygulamayı sevdin mi? Daha iyi bir gelişim için lütfen Google Play\'de nasıl daha iyi yapabileceğimizi bildir. + Son albümler + Son sanatçılar + Kaldır + Afiş fotoğrafını kaldır + Kapağı kaldır + Kara listeden kaldır + Profil fotoğrafını kaldır + Şarkıyı oynatma listesinden kaldır %1$s şarkısı oynatma listesinden kaldır?]]> + Şarkıları oynatma listesinden kaldır + %1$d oynatma listesinden kaldıracağından emin misin?]]> + Oynatma listesini yeniden adlandır + + Sorun Bildir + + Hata bildir + + Sıfırla + Sanatçı resmini sıfırla + Geri yükle + Önceki satın alma işlemi geri yüklendi. Tüm özelliklerden yararlanmak için lütfen uygulamayı yeniden başlatın. Önceki satın almalar geri yüklendi. + Satın alım geri yükleniyor ... + Retro Music Ekolayzırı + + Retro Müzik Premium + + Kaydet + Dosya olarak kaydet + Dosya olarak kaydet + Oynatma listesi %s olarak kaydedildi. + Değişiklikler kaydediliyor + Medya tara + %1$d / %2$d dosya tarandı. + Kütüphanenizi arayın… + Hepsini seç + Afiş fotoğrafını seçin + + Ön ayar seç + + Seçilmiş + + Çökme raporu gönder + + Ayarla + Sanatçı resmini ayarla + + Profil fotoğrafı seç + + Uygulamayı paylaş + Karıştır + Basit + Uyku zamanlayıcısı iptal edildi. Uyku zamanlayıcısı %d dakikaya ayarlandı. + + Kaydır + + Küçük albüm + Sosyal + Şarkı + Şarkı süresi + Şarkılar + Sıralama Ölçütü yükselen Albüm Sanatçı + Besteci Tarih Yıl Azalan + Üzgünüz, ancak cihazın konuşma girişini desteklemiyor. + Kütüphanenizde arayın + + Stack + + Müzik çalmayı başlat. + + Öneriler + İsmini sadece ana ekranda göster + Destek geliştirme + + Açmak için kaydırın + + Senkronize şarkı sözleri + Sistem Ekolayzırı + Telegram Hataları tartışmak, önerilerde bulunmak ve daha fazlası için Telegram grubuna katılın + Teşekkür ederim! + Ses dosyası + Bu ay + Bu hafta + Bu yıl + Küçük + + Başlık + Gösterge paneli + Tünaydın İyi günler "İyi akşamlar " Günaydın İyi geceler + Adın Ne? + Bugün + En iyi albümler + En iyi sanatçılar + "Parça (parça 2 için 2 veya CD3 parça 4 için 3004)" + Parça numarası + Çevir + Uygulamayı diline çevirmek için bize yardımcı ol. + Twitter Tasarımını Retro Müzik ile paylaşın - Bu \u015fark\u0131 oynat\u0131lamad\u0131 - Bir sonraki - Resmi güncelle - Güncelleniyor ... - Sürüm - Sanallaştırıcı - İnternet\'de ara - Ne paylaşmak istiyorsun? - Pencere - %1$s zil sesi olarak ayarla. - %1$d seçildi - Yıl - Hindistan\'da ❤️ ile üretildi - Uygulama verilerini temizle - Beklenmedik bir hata oluştu. Bu hatayı bulduğunuz için üzgünüz, eğer dur madan hata verirse \"Verileri Temizleyin\" ya da Eposta gönderin - Hata - Temel renk teması - 9+ şimdi oynatılıyor temaları - Şimdi oynatlıyor ekranında atlıkarınca efekti - Yuvarlatılmış kenarlar - Albüm kapağı teması - Dairesel - Atlıkarınca - Şimdi oynatılıyor ekranını özelleştirin - Kart dolu - Profil - Biyografi - Otomatik - Etiketli + Etiketsiz - Seçilmiş - Derinlik - Dikey çevir - Menteşe - Yatay çevir - Ses sıfıra düştüğünde şarkıyı duraklatır ve ses seviyesi yükseldiğinde çalmaya başlar. Ayrıca uygulamanın dışında da çalışır - Sıfırda dur - Yenilikler - Öneriler - Fit - Tıkla veya Kaydır - Çalmakta olan ekrana şeffaf gezinme olmadan açmak veya kaydırmak için tıklayın - Kuyruğu temizle - Uygulamayı paylaş - Hata bildir - GitHub hesabını kullanarak gönder - Giriş - Manuel olarak gönder - Sorun izleyici web sitesine yönlendirileceksiniz. - Sorun - Başlık - Açıklama - Kullanıcı Adı - Şifre - Cihaz Bilgisi - Sorun Bildir - Lütfen geçerli bir GitHub kullanıcı adını gir - Lütfen geçerli GitHub şifrenizi girin - Lütfen bir sorun başlığı girin - Lütfen sorun açıklamasını yazın - Rapor GitHub\'a yükleniyor ... - Rapor gönderilemiyor - Yanlış kullanıcı adı veya şifre - Geçersiz erişim belirteci. Lütfen uygulama geliştiricisine başvurun. - Seçilen depo için sorunlar etkin değil. Lütfen uygulama geliştiricisiyle iletişime geçin. - Beklenmedik bir sorun oluştu. Lütfen uygulama geliştiricisine başvurun. - Cihaz bilgileri panoya kopyalandı - Hesap verileriniz sadece kimlik doğrulama için kullanılır. - Kar yağışı efekti - Kara Liste - Kara listedeki klasörlerin içeriği kütüphanenizden gizlenir. - Çökme raporu gönder - Pinterest - Retro Music tasarımından ilham almak için Pinterest sayfasını takip edin - Şarkı süresini filtrele - Hata - İzin hatası - Klasik - Besteci - Yazar - Sonraki Şarkı - Son şarkı - Kaydır - Kaydet - Resim koy - Profil fotoğrafı seç - Düzenle - Kütüphane - Açmak için kaydırın - Şarkı sözleri ekle - Şarkı sözlerini buraya yapıştır - Süreli şarkı sözleri ekle - Senkronize şarkı sözleri - Zil sesini ayarla - Retro Müzik\'in ses ayarlarını değiştirmesine izin ver - Takım, sosyal medya linkleri - Gelişmiş test özellikleri - Açık - Ön ayar seç + + Bu \u015fark\u0131 oynat\u0131lamad\u0131 + + Bir sonraki + + Resmi güncelle + + Güncelleniyor ... + Premium\'a yükselt - Yeni oynatma listesi - Son şarkıyı bitir - Gradyan görüntü - Stack - + + Kullanıcı Adı + + Sürüm + + Dikey çevir + + Sanallaştırıcı + + İnternet\'de ara + Hoşgeldin, - Premium\'u al - Şimdi Oynatılıyor temaları, Atlıkarınca efekti, Renkli tema ve daha fazlası.. - Hepsini oynat - Müzik çalmayı başlat. - Klavye - Sıfırla - Kütüphane kategorileri - Kütüphane kategorilerinin görünürlük ve sırasını yapılandırın - Kontroller - Albüm stili + + Ne paylaşmak istiyorsun? + + Yenilikler + + Pencere + + Yuvarlatılmış kenarlar + + %1$s zil sesi olarak ayarla. + + %1$d seçildi + + Yıl + + . + + Sorun izleyici web sitesine yönlendirileceksiniz. + + Hesap verileriniz sadece kimlik doğrulama için kullanılır. diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 4f6c5cc1..5941de59 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -1,141 +1,295 @@ - Bạn phải chọn ít nhất một danh mục. - Album nhỏ + Đường dẫn tổ đội, mạng xã hội + Màu sắc nhấn mạnh Màu sắc chủ đạo của chủ đề, mặc định là xanh ngọc + Về chúng tôi + Thêm vào yêu thích Thêm vào hàng đợi Thêm vào danh sách phát + Xoá hàng đợi Xoá danh sách phát + Xoá Xóa khỏi thiết bị + Chi tiết + Đi đến album Đi đến nghệ sĩ Chuyển đến thể loại Đến trang bắt đầu + Cho phép + Kích thước lưới Kích thước lưới (chiều ngang) + + Danh sách phát mới + Tiếp + Chơi + Chơi tất cả Chơi kế tiếp Phát/Tạm dừng + Trước + Loại bỏ khỏi mục yêu thích Xoá khỏi hàng đợi Xoá khỏi danh sách phát + Đổi tên + Lưu hàng đợi phát + Quét Quét thư mục + Tìm kiếm - Cấu hình + Bắt đầu Đặt làm nhạc chuông Đặt làm trang bắt đầu + "Cài đặt" + Chia sẻ + Phát ngẫu nhiên tất cả Phát ngẫu nhiên theo danh sách phát + Hẹn giờ ngủ + Thứ tự sắp xếp + Chỉnh sửa thẻ + Thích nghi + Thêm + + Thêm lời bài hát + Thêm \nhình ảnh + "Thêm vào danh sách phát" + + Thêm khung thời gian cho lời bài hát + "Đã thêm 1 bài vào háng đợi phát." + Đã thêm %1$d bài vào hàng đợi phát. + Album + Album của nghệ sĩ + Tên bài hát hoặc nghệ sĩ để trống + Album + Luôn luôn + Hãy dùng thử trình phát nhạc siêu chất này tại: https://play.google.com/store/apps/details?id=%s + Ngẫu nhiên Bản nhạc hàng đầu + Retro music - Lớn Retro music - Thẻ Retro music - Cổ điển Retro music - Nhỏ + Nghệ sĩ + Nghệ sĩ + Tập trung âm thanh bị từ chối + Thay đổi cài đặt âm thanh và điều chỉnh các điều khiển bộ chỉnh âm + + Tự động + + Chủ đề màu cơ bản + Tăng cường Bass + + Tiểu sử + Tiểu sử + Đen hoàn toàn + Danh sách đen + Làm mờ + Thẻ mờ - Giữ màn hình luôn bật - Lưu ý rằng việc bật tính năng này có thể ảnh hưởng đến tuổi thọ pin - Độ mờ - Độ mờ được áp dụng cho các chủ đề mờ, thấp hơn là nhanh hơn - Retro Music Pro + + Không thể gửi báo cáo + Mã token không hợp lệ. Vui lòng liên hệ với nhà phát triển ứng dụng. + Các vấn đề không được kích hoạt cho repository đã chọn. Vui lòng liên hệ với nhà phát triển ứng dụng. + Đã xảy ra lỗi không mong muốn. Vui lòng liên hệ với nhà phát triển ứng dụng. + Tên người dùng hoặc mật khẩu không đúng + Vấn đề + Gửi thủ công + Vui lòng nhập mô tả vấn đề + Vui lòng nhập đúng mật khẩu dùng Github của bạn + Vui lòng nhập tiêu đề vấn đề + Vui lòng nhập đúng tên người dùng Github của bạn + Đã xảy ra lỗi không mong muốn. Xin lỗi bạn vì lỗi này, nếu nó +tiếp tục xảy ra hãy \"Xóa dữ liệu ứng dụng\" + Đang tải báo cáo lên Github... + "Gửi bằng tài khoản GitHub " + Hủy + Thẻ - Thẻ màu + Tròn - Hình ảnh + + Thẻ màu + Thẻ + + Tiệc tùng + + Hiệu ứng băng chuyền trên màn hình đang phát + + Xếp tầng + Truyền + Thay đổi + Nhật ký thay đổi được cập nhật trong ứng dụng Telegram + + Thông tư + + Cổ điển + Xóa + + Xóa dữ liệu ứng dụng + Xóa danh sách đen + + Xóa hàng đợi + Xoá danh sách phát %1$s? Thao t\u00e1c kh\u00f4ng th\u1ec3 ho\u00e0n t\u00e1c!]]> + Đóng + Màu sắc + Màu sắc + Màu sắc + + Tác giả + + Đã sao chép thông tin thiết bị vào clipboard. + Kh\u00f4ng th\u1ec3 t\u1ea1o danh s\u00e1ch ph\u00e1t "Kh\u00f4ng th\u1ec3 t\u1ea3i xu\u1ed1ng \u1ea3nh b\u00eca album ph\u00f9 h\u1ee3p." Không thể khôi phục mua hàng. Không thể quét %d tập tin. + Tạo + Đã tạo danh sách phát %1$s. + Thành viên và cộng tác viên + Đang nghe %1$s bởi %2$s. + Xám đen + Không có lời bài hát + Xoá danh sách phát %1$s?]]> + Xoá danh sách phát + + Xoá bài hát %1$s?]]> + + Xoá bài hát + %1$d danh sách phát?]]> %1$d bài hát?]]> - Xoá bài hát - Xoá bài hát Đã xoá %1$d bài hát. + + Độ sâu + + Mô tả + + Thông tin thiết bị + + Cho phép Retro Music cấu hình cài đặt âm thanh + + Cài làm nhạc chuông + Bạn có muốn xóa danh sách đen? %1$s khỏi danh sách đen?]]> + Ủng hộ + Nếu bạn nghĩ rằng tôi xứng đáng được thưởng cho công việc này, bạn có thể để lại một số tiền ở đây. Cảm ơn bạn! :D + Mua cho tôi một: + Tải xuống từ Last.fm + + Chỉnh sửa + Chỉnh sửa ảnh bìa + Trống + Bộ chỉnh âm + + Lỗi + Câu hỏi thường gặp + Yêu thích + + Kết thúc bài cuối + + Phù hợp + Phẳng + Thư mục + Cho bạn + Toàn bộ + + Thẻ đầy đủ + Thay đổi chủ đề và màu sắc của ứng dụng Nhìn và cảm nhận + Thể loại + Thể loại + Tham gia phát triển dự án trên Github + Tham gia cộng đồng Google Plus, nơi bạn có thể yêu cầu trợ giúp hoặc theo dõi các cập nhật Retro Music + 1 2 3 @@ -144,77 +298,196 @@ 6 7 8 + + + + Bản lề + Lịch sử + Trang chủ + + Lật ngang + + Hình ảnh + + Ảnh màu chuyển sắc + Thay đổi cài đặt tải xuống hình ảnh nghệ sĩ + Đã chèn %1$d bài hát vào danh sách phát %2$s. + Instagram Chia sẻ thiết lập Retro Music của bạn trong Instagram + + Bàn phím + Bitrate + Định dạng Tên tệp Đường dẫn tệp Kích thước + Tần số lấy mẫu + Độ dài + + Được dán nhãn + Đã thêm gần đây + + Bài cuối + Hãy nghe một vài bản nhạc + Thư viện + + Danh mục thư viện + Giấy phép + Hoàn toàn trắng + Danh sách tập tin + Đang tải sản phẩm... + + Đăng nhập + Lời bài hát + + Được làm bằng ❤️ ở Ấn Độ + Material + + Lỗi + + Lỗi quyền truy cập + Tên của bạn + Phát nhiều nhất + Không bao giờ + Ảnh biểu ngữ mới + Danh sách phát mới + Ảnh tiểu sử mới + %s là trang bắt đầu mới. + + Bài kế + Không có album + Không có nghệ sĩ + "Phát một bài hát trước, sau đó thử lại." + Không tìm thấy bộ chỉnh âm + Không có thể loại + Không tìm thấy lời bài hát + Không có danh sách phát + Không tìm thấy giao dịch mua. + Không có kết quả + Không có bài hát + Tiêu chuẩn + Lời chuẩn + Bình thường + %s không được liệt kê trong thư mục nhạc.]]> + Không có gì để quét. + Thông báo + Tùy chỉnh kiểu thông báo + Đang phát Đang phát hàng đợi + Tùy chỉnh màn hình đang phát + Hơn 9 giao diện đang phát + Chỉ khi dùng Wi-Fi + + Tính năng nâng cao đang kiểm thử + Khác + + Mật khẩu + Mỗi tháng + + Dán lời bài hát tại đây + Quyền truy cập bộ nhớ ngoài bị từ chối. + Quyền đã bị từ chối. + Cá nhân hoá + Tùy chỉnh màn hình phát và giao diện người dùng + Chọn từ bộ nhớ trong + + Chọn ảnh + + Pinterest + Giản dị + Thanh thông báo đang phát sẽ cho phép bạn phát nhạc/tạm dừng, chuyển bài,... Thông báo đang phát + Danh sách phát trống + Danh sách phát trống + Tên danh sách phát + Danh sách phát + + Độ mờ được áp dụng cho các chủ đề mờ, thấp hơn là nhanh hơn + Độ mờ + + Lọc theo thời lượng bài hát + + Kiểu Album Âm thanh + Điều khiển Chủ đề Hình ảnh + Thư viện Màn hình khoá Danh sách phát + + Tạm dừng phát khi tắt âm lượng và phát lại sau khi tăng âm lượng. Cảnh báo: Khi bạn tăng âm lượng, nó sẽ bắt đầu phát ngay cả khi bạn ở ngoài ứng dụng + Tạm dừng phát khi tắt âm lượng + Lưu ý rằng việc bật tính năng này có thể ảnh hưởng đến tuổi thọ pin + Giữ màn hình luôn bật + + Nhấp hoặc trượt để mở mà không cần điều hướng của màn hình đang phát + Nhấp hoặc Trượt + "Chỉ có trên phiên bản Lollipop" + + Hiệu ứng tuyết rơi + Sử dụng ảnh bìa album bài hát đang phát làm ảnh nền màn hình khóa. Giảm âm lượng khi có âm báo hệ thống hoặc khi bạn có thông báo + Nội dung của các thư mục trong danh sách đen được ẩn khỏi thư viện của bạn. Làm mờ ảnh bìa album trên màn hình khóa. Có thể gây ra sự cố với các ứng dụng và tiện ích của bên thứ ba Hiệu ứng băng chuyền cho ảnh bìa album trong màn hình đang phát. Lưu ý rằng nó không hoạt động với chủ đề Thẻ và Thẻ mờ Dùng thiết kế thông báo cổ điển @@ -223,8 +496,12 @@ Thay đổi màu sắc thanh điều hướng theo màu chủ đề chung "M\u00e0u s\u1eafc th\u00f4ng b\u00e1o thay \u0111\u1ed5i theo m\u00e0u s\u1eafc chi ph\u1ed1i \u1ea3nh b\u00eca album" Màu sắc chi phối sẽ được chọn từ ảnh bìa album hoặc nghệ sĩ + Thêm điều khiển bổ sung cho trình phát mini "Có thể gây ra vấn đề phát lại trên một số thiết bị." + Bật/tắt thẻ thể loại + Ẩn/hiện biểu ngữ trong trang chủ Có thể tăng chất lượng hiển thị ảnh bìa album, nhưng thời gian tải hình ảnh chậm hơn. Chỉ bật tính năng này nếu bạn không hài lòng với chất lượng ảnh hiện tại + Khả năng hiển thị và thứ tự của các danh mục trong thư viện. Sử dụng các điều khiển màn hình khóa tùy chỉnh của Retro Music Chi tiết giấy phép của phần mềm mã nguồn mở Bo tròn các góc ứng dụng @@ -233,23 +510,27 @@ Tự động phát nhạc khi kết nối tai nghe Chế độ phát ngẫu nhiên sẽ tắt khi phát danh sách bài hát mới Hiện thanh điều chỉnh âm lượng nếu có không gian trống trong màn hình đang phát - Thêm điều khiển bổ sung cho trình phát mini - Bật/tắt thẻ thể loại - Ẩn/hiện biểu ngữ trong trang chủ + Hiện ảnh bìa album - Chế độ tiêu đề thẻ + Chủ đề bìa album + Kiểu bìa album đang phát Lưới album Đổi màu lối tắt ứng dụng Lưới nghệ sĩ Giảm âm lượng khi có âm báo Tự động tải xuống hình ảnh nghệ sĩ + Danh sách đen Làm mờ bìa album Chọn bộ chỉnh âm Thiết kế thông báo cổ điển Màu sắc thích nghi Đổi màu thông báo + Điều khiển bổ sung Phát không gián đoạn Chủ đề ứng dụng + Hiện thẻ thể loại + Lưới nghệ sĩ trang chủ + Biểu ngữ trang chủ Ảnh bìa chất lượng nguyên bản Làm mới danh sách thêm gần đây sau Điều khiển toàn màn hình. @@ -257,6 +538,7 @@ Giao diện đang phát Giấy phép nguồn mở Bo tròn các góc + Chế độ tiêu đề thẻ Hiệu ứng quay vòng Màu sắc chi phối Toàn màn hình @@ -265,204 +547,232 @@ Chế độ ngẫu nhiên Điều khiển âm lượng Thông tin người dùng - Điều khiển bổ sung - Biểu ngữ trang chủ - Hiện thẻ thể loại - Lưới nghệ sĩ trang chủ - Kiểu bìa album đang phát - Xếp tầng + + Nâng cấp Premium + Màu chủ đạo Màu sắc chủ đạo, mặc định là màu xanh xám, bây giờ hoạt động với màu tối + + Hồ sơ + Mua + *Hãy suy nghĩ kĩ trước khi mua, không yêu cầu hoàn tiền. + Hàng đợi + Đánh giá ứng dụng + Bạn thích ứng dụng này không? Hãy cho chúng tôi biết suy nghĩ của bạn trên Cửa hàng Play để chúng tôi có thể làm cho nó tốt hơn nữa + Album mới thêm + Nghệ sĩ mới thêm + Loại bỏ + Xóa ảnh biểu ngữ + Xoá ảnh bìa + Xóa khỏi danh sách đen + Xóa ảnh tiểu sử + Xoá bài hát khỏi danh sách phát %1$s khỏi danh sách phát?]]> + Xoá bài hát khỏi danh sách phát + %1$d bài hát khỏi danh sách phát?]]> + Đổi tên danh sách phát + + Báo cáo vấn đề + + Báo cáo lỗi + + Cài lại + Đặt lại ảnh nghệ sĩ + Khôi phục + Khôi phục mua trước đó. Vui lòng khởi động lại ứng dụng để sử dụng tất cả các tính năng. Đã khôi phục lần mua trước. + Đang khôi phục mua hàng... + Bộ chỉnh âm Retro + + Retro Music Pro + + Lưu + Lưu thành + Lưu thành tệp + Danh sách phát đã lưu đến %s. + Lưu thay đổi + Quét phương tiện + Đã sửa %1$d trong %2$d tập tin. + Tìm kiếm trong thư viện của bạn... + Chọn tất cả + Chọn ảnh biểu ngữ + + Chọn Preset + + Đã chọn + + Gửi bản ghi lỗi + + Cấu hình + Đặt ảnh nghệ sĩ thủ công + + Chọn một hình cá nhân + + Chia sẽ ứng dụng + Ngẫu nhiên + Đơn giản + Đã huỷ hẹn giờ ngủ. Dừng phát nhạc sau %d phút kể từ bây giờ. + + Trang + + Album nhỏ + Xã hội + Bài hát + Thời lượng bài hát + Bài hát + Thứ tự sắp xếp Tăng dần Album Nghệ sĩ + Tác giả Ngày Năm Giảm dần + Xin lỗi! Thiết bị không hỗ trợ nhập liệu bằng giọng nói + Tìm kiếm trong thư viện của bạn + + Ngăn xếp + + Bắt đầu chơi nhạc + + Đề nghị + Tên của bạn chỉ hiển thị trên trang chủ + Hỗ trợ nhà phát triển + + Karaoke + Bộ chỉnh âm hệ thống + Telegram Tham gia nhóm Telegram để thảo luận về lỗi, đưa ra đề xuất, và hơn thế nữa + Cảm ơn! + Tệp âm thanh + Mỗi tháng + Mỗi tuần + Mỗi năm + Nhỏ + + Tiêu đề + Bảng điều khiển + Chào buổi chiều Ngày tốt lành Chào buổi tối Chào buổi sáng Chúc ngủ ngon + Tên của bạn là gì + Hôm nay + Album hàng đầu + Nghệ sĩ hàng đầu + "Rãnh (2 cho bài số 2 hoặc 3004 cho CD3 bài số 4)" + Số rãnh + Dịch + Giúp chúng tôi dịch ứng dụng sang ngôn ngữ của bạn + Twitter Chia sẻ thiết kế của bạn với Retro Music - Kh\u00f4ng th\u1ec3 ph\u00e1t b\u00e0i h\u00e1t n\u00e0y. - Tiếp theo - Cập nhật hình ảnh - Đang cập nhật... - Phiên bản - Trình ảo hóa - Tìm kiếm trên web - Bạn muốn chia sẻ gì? - Cửa sổ - Đặt %1$s làm nhạc chuông. - %1$d đã chọn - Năm - Được làm bằng ❤️ ở Ấn Độ - Xóa dữ liệu ứng dụng - Đã xảy ra lỗi không mong muốn. Xin lỗi bạn vì lỗi này, nếu nó -tiếp tục xảy ra hãy \"Xóa dữ liệu ứng dụng\" - Lỗi - Chủ đề màu cơ bản - Hơn 9 giao diện đang phát - Hiệu ứng băng chuyền trên màn hình đang phát - Góc tròn - Chủ đề bìa album - Thông tư - Tiệc tùng - Tùy chỉnh màn hình đang phát - Thẻ đầy đủ - Hồ sơ - Tiểu sử - Tự động - Được dán nhãn + Chưa gắn nhãn - Đã chọn - Độ sâu - Bản lề - Lật ngang - Tạm dừng phát khi tắt âm lượng và phát lại sau khi tăng âm lượng. Cảnh báo: Khi bạn tăng âm lượng, nó sẽ bắt đầu phát ngay cả khi bạn ở ngoài ứng dụng - Tạm dừng phát khi tắt âm lượng - Có gì mới! - Đề nghị - Phù hợp - Nhấp hoặc Trượt - Nhấp hoặc trượt để mở mà không cần điều hướng của màn hình đang phát - Xóa hàng đợi - Chia sẽ ứng dụng - Báo cáo lỗi - "Gửi bằng tài khoản GitHub " - Đăng nhập - Gửi thủ công - Bạn sẽ được chuyển tiếp đến trang web theo dõi vấn đề. - Vấn đề - Tiêu đề - Mô tả - Tên người dùng - Mật khẩu - Thông tin thiết bị - Báo cáo vấn đề - Vui lòng nhập đúng tên người dùng Github của bạn - Vui lòng nhập đúng mật khẩu dùng Github của bạn - Vui lòng nhập tiêu đề vấn đề - Vui lòng nhập mô tả vấn đề - Đang tải báo cáo lên Github... - Không thể gửi báo cáo - Tên người dùng hoặc mật khẩu không đúng - Mã token không hợp lệ. Vui lòng liên hệ với nhà phát triển ứng dụng. - Các vấn đề không được kích hoạt cho repository đã chọn. Vui lòng liên hệ với nhà phát triển ứng dụng. - Đã xảy ra lỗi không mong muốn. Vui lòng liên hệ với nhà phát triển ứng dụng. - Đã sao chép thông tin thiết bị vào clipboard. - Dữ liệu tài khoản của bạn chỉ được sử dụng để xác thực. - Hiệu ứng tuyết rơi - Danh sách đen - Nội dung của các thư mục trong danh sách đen được ẩn khỏi thư viện của bạn. - Gửi bản ghi lỗi - Pinterest - Lọc theo thời lượng bài hát - Lỗi - Lỗi quyền truy cập - Cổ điển - Tác giả - Tác giả - Bài kế - Bài cuối - Trang - Lưu - Chọn ảnh - Chọn một hình cá nhân - Chỉnh sửa - Thư viện - Thêm lời bài hát - Dán lời bài hát tại đây - Thêm khung thời gian cho lời bài hát - Karaoke - Cài làm nhạc chuông - Cho phép Retro Music cấu hình cài đặt âm thanh - Đường dẫn tổ đội, mạng xã hội - Tính năng nâng cao đang kiểm thử - Chọn Preset + + Kh\u00f4ng th\u1ec3 ph\u00e1t b\u00e0i h\u00e1t n\u00e0y. + + Tiếp theo + + Cập nhật hình ảnh + + Đang cập nhật... + Nâng cấp lên Premium - Danh sách phát mới - Kết thúc bài cuối - Ảnh màu chuyển sắc - Ngăn xếp - + + Tên người dùng + + Phiên bản + + Trình ảo hóa + + Tìm kiếm trên web + Chào mừng, - Nâng cấp Premium - Chơi tất cả - Bắt đầu chơi nhạc - Bàn phím - Cài lại - Danh mục thư viện - Khả năng hiển thị và thứ tự của các danh mục trong thư viện. - Điều khiển - Kiểu Album + + Bạn muốn chia sẻ gì? + + Có gì mới! + + Cửa sổ + + Góc tròn + + Đặt %1$s làm nhạc chuông. + + %1$d đã chọn + + Năm + + Bạn phải chọn ít nhất một danh mục. + + Bạn sẽ được chuyển tiếp đến trang web theo dõi vấn đề. + + Dữ liệu tài khoản của bạn chỉ được sử dụng để xác thực. diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index cfc00efd..f4618170 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -1,140 +1,287 @@ - 请至少选择一个分类 - 小专辑 + 团队,社交链接 + 主题色 主题强调色,默认为青色。 + 关于 + 添加到收藏夹 添加到播放队列 添加到播放列表 + 清空播放队列 清空播放队列 + 删除 从设备中移除 + 详情 + 查看此专辑 查看艺术家 查看流派 返回起始目录 + 授权 + 网格大小 网格大小(横向) + 下一首 + 播放 下首播放 播放/暂停 + 上一首 + 从收藏夹中移除 从播放队列中移除 从播放列表中移除 + 重命名 + 保存播放队列 + 扫描 目录扫描 + 搜索 - 设置 + 开始 设为铃声 设为主目录 + "设置" + 分享 + 全部随机播放 随机播放列表 + 睡眠定时器 + 排序 + 标签编辑器 + 自适应 + 添加 + + 添加歌词 + 添加\n头像 + "添加到播放列表" + + 添加时间戳歌词 + "已加入播放队列" + 已添加 %1$d 首歌到播放队列 + 专辑 + 专辑艺术家 + 标题或艺术家是空的 + 专辑 + 始终 + 嘿,快来瞧瞧这个酷炫的音乐播放器:https://play.google.com/store/apps/details? id =%s + 随机播放 热门曲目 + Retro Music - 大 Retro Music - 卡片模式 Retro Music - 经典模式 Retro Music - 小 Retro music - 文本 + 歌手 + 艺术家 + 音频焦点丢失 + 更改声音设置或调整均衡器 + + 自动 + + 基础颜色主题 + 低音增强 + + 个性签名 + 简介 + A屏黑 + 黑名单 + 模糊 + 模糊卡片 - 保持屏幕常亮 - 请注意,启用此功能可能会降低电池续航时间 - 模糊值 - 应用于模糊主题,数值越低加载越快 - Retro Music高级版 + + 无法提交报告 + 无效的访问令牌,请联系应用开发者。 + 目的仓库的 Issues 未启用,请联系应用开发者。 + 发生未知错误,请联系应用开发者。 + 错误的用户名或密码 + 问题 + 自动发送 + 请输入问题描述 + 请输入您有效的GitHub密码 + 请输入问题标题 + 请输入您有效的 GitHub 用户名 + 出错了,如一直崩溃请尝试清除应用数据或发送邮件给开发者 + 提交此报告 + 使用 GitHub 帐户发送 + 取消 + 卡片 - 彩色卡片 + 圆形 - 图片 + + 彩色卡片 + 卡片 + + 圆盘传送带 + + 在播放界面使用轮播效果 + + 层叠 + 投射 + 更新日志 + 在Telegram频道上维护更新日志 + + 圆形 + + 古典 + 清空 + + 清除应用数据 + 清空黑名单 + + 清空队列 + 清除播放列表 %1$s \u5417\uff1f\u8bf7\u6ce8\u610f\uff0c\u6b64\u64cd\u4f5c\u4e0d\u53ef\u6062\u590d\uff01]]> + 关闭 + 颜色 + 颜色 + 更多颜色 + + 作曲家 + + 已复制设备信息到剪贴板。 + \u65e0\u6cd5\u521b\u5efa\u64ad\u653e\u5217\u8868 "\u65e0\u6cd5\u4e0b\u8f7d\u5339\u914d\u7684\u4e13\u8f91\u5c01\u9762" 无法恢复购买 无法扫描文件 %d + 新建 + 已创建播放列表 %1$s + 开发团队和贡献者 + 当前通过 %2$s 收听 %1$s + 暗夜黑 + 暂无歌词 + 删除播放列表 %1$s 吗?]]> + 删除播放列表 + %1 $ s 吗?]]> + %1$s 吗?]]> %1$s 吗?]]> 已删除 %1$d 首歌曲 + + 深度 + + 详情 + + 设备信息 + + 允许 Retro Music 修改声音设置 + + 设置为铃声 + 你想清空黑名单吗? %1$s 吗?]]> + 捐赠 + 如果你认为应用还不错,可以通过捐赠支持我们 + 用以下方式捐赠: + 从 Last.fm 下载 + + 编辑 + 编辑专辑封面 + 空空如也 + 均衡器 + + 错误 + 常见问题和解答 + 收藏夹 + + 填充 + 扁平 + 文件夹 + 私人订制 + 全屏 + + 填充卡片 + 更改应用的主题和颜色 界面与外观 + 流派 + 流派 + 在GitHub上克隆项目 + 加入Google+社区获得帮助或者更新信息 + 1 2 3 @@ -143,77 +290,188 @@ 6 7 8 + + 关键 + 历史记录 + 主页 + + 水平翻转 + + 图片 + 更改下载歌手图像方式 + 将歌曲%1$d加入%2$s列表 + Instagram 将你的设置分享到Instagram + 比特率 + 格式 文件名 文件路径 尺寸大小 + 采样率 + 长度 + + 有标签的 + 最近添加 + + 最后一首 + 来点音乐吧! + 音乐库 + 许可 + 质感白 + 正在罗列所有文件 + 加载产品... + + 登录 + 歌词 + + Made with ❤️ in India + 质感 + + 错误 + + 权限错误 + 我的名字 + 播放最多 + 从不 + 新横幅图片 + 新的播放列表 + 新的头像 + %s是新的主目录 + + 下一曲 + 暂无专辑 + 暂无艺术家 + "请播放歌曲后重试" + 找不到均衡器 + 暂无流派 + 找不到歌词 + 暂无播放列表 + 找不到支付记录 + 暂无结果 + 暂无歌曲 + 正常 + 正常歌词 + 正常 + %s 未在多媒体商店中列出]]> + 检索不到任何东西 + 通知栏 + 自定义通知栏风格 + 正在播放 播放队列 + 自定义播放界面 + 多于 9 种播放主题 + 仅限Wi-Fi网络 + + 高级功能测试 + 其他 + + 密码 + 最近三个月 + + 在此处粘贴歌词 + 访问外部存储权限被拒绝 + 无权访问 + 个性化 + 自定义正在播放控件和UI控件 + 从本地选取 + + 选择图片 + + Pinterest + 在 Pintrest 页面关注 Retro Music 的设计灵感 + 简洁 + 播放通知栏提供播放/暂停等操作 通知栏播放 + 播放列表是空的 + 播放列表为空 + 播放列表名 + 播放列表 + + 专辑详细风格 + + 应用于模糊主题,数值越低加载越快 + 模糊值 + + 筛选歌曲时长 + 音频 主题 图片 锁屏 播放列表 + + 在音量为0时暂停播放,并在提高音量后自动播放。注意:当你提高音量后,它甚至会在你使用其他应用时开始播放 + 静音暂停 + 请注意,启用此功能可能会降低电池续航时间 + 保持屏幕常亮 + + 点击打开或者滑动到非正在播放界面的透明导航栏 + 单击或划动 + "仅在Android 5.x(Lollipop)上可用" + + 降雪效果 + 将正在播放的歌曲专辑封面设置为锁屏壁纸 系统音响起或消息提醒时降低音量 + 在音乐库中隐藏列入黑名单的文件夹内容 在锁屏中显示模糊化的专辑封面 (可能会影响第三方应用或小部件正常运行) 在「正在播放」界面中使用轮播效果 @@ -224,7 +482,10 @@ 修改导航栏颜色为主调色 "\u4ee5\u5c01\u9762\u7684\u4e3b\u8272\u8c03\u914d\u7f6e\u901a\u77e5\u680f\u989c\u8272" 从专辑封面或艺术家图中选取主色调 + 给迷你播放器添加额外控件 "在一些设备上可能会播放异常" + 切换流派标签 + 切换主页横幅样式 可以提高封面质量,但加载时间较慢 (建议只在不满意图片分辨率过低时开启) 使用Retro Music的自定义锁屏 @@ -235,23 +496,27 @@ 检测到耳机后自动播放 播放新列表时关闭随机播放 空间充足时在播放界面显示音量控制控件 - 给迷你播放器添加额外控件 - 切换流派标签 - 切换主页横幅样式 + 显示专辑封面 - 标签标题模式 + 专辑封面主题 + 专辑封面跳过 专辑网格 带颜色的快捷方式 艺术家网格 不显示的时候降低音量 自动下载艺术家图片 + 黑名单 模糊专辑封面 选择均衡器 经典通知栏设计 自适应颜色 带颜色的通知栏 + 额外控件 无间隙连续播放 应用主题 + 显示流派标签 + 主页艺术家网格 + 主页横幅 忽略多媒体商店封面 上次添加播放列表到现在的间隔 全屏控件 @@ -259,6 +524,7 @@ 播放主题 开源许可 边角 + 标签标题模式 轮播效果 主色调 全屏应用 @@ -267,189 +533,222 @@ 随机播放 音量控件 用户信息 - 额外控件 - 主页横幅 - 显示流派标签 - 主页艺术家网格 - 专辑封面跳过 - 专辑详细风格 - 层叠 + 主颜色 默认蓝灰色为主要颜色,目前使用深色 + + 个人概况 + 购买 + *购买前请先考虑,不要征询退款。 + 队列 + 评价 + 喜欢这个应用?去 Google Play Store 中告诉我们怎样才能让它更好 + 最近专辑 + 最近艺术家 + 删除 + 删除横幅图像 + 移除封面 + 从黑名单中移除 + 删除简介照片 + 从播放列表中删除歌曲 %1$s?]]> + 从播放列表中删除歌曲 + %1$d?]]> + 重命名播放列表 + + 报告问题 + + 反馈 + 重置艺术家图片 + 恢复 + 恢复以前的购买。请重新启动应用以充分利用所有功能。 恢复之前购买 + 恢复购买中 ... + Retro Music 均衡器 + + Retro Music高级版 + + 保存 + 保存为文件 + 保存为文件 + 保存播放列表到%s + 保存修改 + 扫描媒体 + 已扫描 %1$d 个,共计 %2$d 个文件。 + 搜索库 + 全选 + 选择横幅图像 + + 被选择 + + 发送崩溃日志 + + 设置 + 设置艺术家图片 + + 设置个人资料照片 + + 分享应用 + 随机播放 + 简单 + 睡眠定时已取消 睡眠定时器设置为%d分钟。 + + 滑动 + + 小专辑 + 社交 + 歌曲 + 歌曲时长 + 歌曲 + 排序 升序 专辑 艺术家 + 作曲家 日期 降序 + 抱歉!您的设备不支持语音输入 + 搜索媒体库 + + 建议 + 仅仅在主页上显示你的名字 + 支持开发者 + + 滑动以解锁 + + 滚动歌词 + 系统均衡器 + Telegram 加入 telegram 团队,讨论错误、提出建议、展示和更多信息 + 谢谢你! + 音频文件 + 本月 + 本周 + 本年 + 细小 + + 标题 + 仪表盘 + 下午好 美好的一天 傍晚好 早上好 晚上好 + 你的名字是什么 + 今日 + 热门专辑 + 热门艺术家 + "歌曲" + 歌曲编号 + 翻译 + 帮助我们将应用翻译成您的语言 + Twitter 与Retro Music分享您的设计 - \u65e0\u6cd5\u64ad\u653e\u8fd9\u9996\u6b4c\u3002 - 下一首 - 更新图片 - 更新中... - 版本 - 虚拟器 - 网络搜索 - 你想分享什么? - 窗口 - 将 %1$s 设置为铃声 - %1$d 被选择 - 年份 - Made with ❤️ in India - 清除应用数据 - 出错了,如一直崩溃请尝试清除应用数据或发送邮件给开发者 - 错误 - 基础颜色主题 - 多于 9 种播放主题 - 在播放界面使用轮播效果 - 圆角 - 专辑封面主题 - 圆形 - 圆盘传送带 - 自定义播放界面 - 填充卡片 - 个人概况 - 个性签名 - 自动 - 有标签的 + 无标签的 - 被选择 - 深度 - 垂直滚动 - 关键 - 水平翻转 - 在音量为0时暂停播放,并在提高音量后自动播放。注意:当你提高音量后,它甚至会在你使用其他应用时开始播放 - 静音暂停 - 更新内容 - 建议 - 填充 - 单击或划动 - 点击打开或者滑动到非正在播放界面的透明导航栏 - 清空队列 - 分享应用 - 反馈 - 使用 GitHub 帐户发送 - 登录 - 自动发送 - 将跳转至问题追踪网站 - 问题 - 标题 - 详情 + + \u65e0\u6cd5\u64ad\u653e\u8fd9\u9996\u6b4c\u3002 + + 下一首 + + 更新图片 + + 更新中... + 用户名 - 密码 - 设备信息 - 报告问题 - 请输入您有效的 GitHub 用户名 - 请输入您有效的GitHub密码 - 请输入问题标题 - 请输入问题描述 - 提交此报告 - 无法提交报告 - 错误的用户名或密码 - 无效的访问令牌,请联系应用开发者。 - 目的仓库的 Issues 未启用,请联系应用开发者。 - 发生未知错误,请联系应用开发者。 - 已复制设备信息到剪贴板。 + + 版本 + + 垂直滚动 + + 虚拟器 + + 网络搜索 + + 你想分享什么? + + 更新内容 + + 窗口 + + 圆角 + + 将 %1$s 设置为铃声 + + %1$d 被选择 + + 年份 + + 请至少选择一个分类 + + 将跳转至问题追踪网站 + 你的账户数据仅用于验证。 - 降雪效果 - 黑名单 - 在音乐库中隐藏列入黑名单的文件夹内容 - 发送崩溃日志 - Pinterest - 在 Pintrest 页面关注 Retro Music 的设计灵感 - 筛选歌曲时长 - 错误 - 权限错误 - 古典 - 作曲家 - 作曲家 - 下一曲 - 最后一首 - 滑动 - 保存 - 选择图片 - 设置个人资料照片 - 编辑 - 滑动以解锁 - 添加歌词 - 在此处粘贴歌词 - 添加时间戳歌词 - 滚动歌词 - 设置为铃声 - 允许 Retro Music 修改声音设置 - 团队,社交链接 - 高级功能测试 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 3e5faa82..9cebc4a8 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -1,143 +1,297 @@ - 您必須選擇最少一項類別。 - 迷你專輯 + 我們的團隊,以及社交媒體 + 重色 主題重色,預設為藍綠色 + 關於 + 加入至我的最愛 加入至播放列表 加入至播放清單 + 清除播放列表 清除播放清單 + 刪除 由裝置記憶體刪除 + 內容 + 到專輯頁面 到歌手頁面 到類型頁面 到主目錄 + 接收 + 網格大小 網格大小(橫向) + + 新播放清單 + 下一首 + 播放 + 播放全部 播放下一首 播放/暫停 + 上一首 + 由我的最愛移除 由播放列表移除 由播放清單移除 + 重新命名 + 儲存播放清單 + 掃描 掃描資料夾 + 搜尋 - 設定 + 開始 設定為鈴聲 設定為主目錄 + "設定" + 分享 + 全部隨機播放 隨機播放播放清單 + 休眠計時器 + 排序方式 + 標籤編輯 + 自適應 + 增加 + + 增加歌詞 + 增加\n相片 + "加入至播放清單" + + 增加時間同步歌詞 + "已經將1首歌曲新增至播放列表。" + 已經將 %1$d 歌曲新增至播放列表。 + 專輯 + 專輯歌手 + 標題或歌手一欄是空白的。 + 專輯 + 經常 + 嗨,看看這個很有型的播放器吧: https://play.google.com/store/apps/details?id=%s + 隨機播放 歌曲榜 + Retro Music - 大型模式 Retro Music - 卡片模式 Retro Music - 經典模式 Retro Music - 小型模式 Retro Music - 文字模式 + 歌手 + 歌手 + 無法找到音頻焦點。 + 更改音頻設定及調整等化器 + + 自動 + + 基色主題 + 低音增強 + + 個人簡歷 + 演出者資料 + 純黑 + 黑名單 + 模糊 + 模糊卡片 - 螢幕保持開啟 - 請記住當您啟用此選項後或會影響電池壽命 - 模糊值 - 給模糊模式主題的值,每值愈低就愈快 - Retro Music Pro + + 無法上傳報告 + 存取金鑰無效。請與程式開發人員聯絡。 + 已選的版本庫(repo)並未針對此問題而啟用。請與程式開發人員聯絡。 + 發生未預期的錯誤。請與程式開發人員聯絡。 + 用戶名稱或密碼錯誤 + 問題 + 手動傳送 + 請輸入問題描述 + 請輸入您的有效GitHub密碼 + 請輸入問題標題 + 請輸入您的有效GitHub用戶名稱 + 發生未預期的錯誤。真抱歉您發現了這個bug,如果一直崩潰請\"清除程式數據\",或者傳送電郵給我們 + 正在上傳報告至GitHub... + 使用Github帳戶傳送 + 取消 + 卡片 - 彩色卡片 + 圓形化 - 圖片 + + 彩色卡片 + 卡片 + + 轉盤 + + 在現在播放的轉盤效果 + + 階層式 + 投放 + 版本最新動向 + 在Telegram頻道取得更新動向 + + 圓盤 + + 基本 + 清除 + + 清除程式數據 + 清除黑名單 + + 清除列表 + 清除播放清單 %1$s\u64ad\u653e\u6e05\u55ae\u55ce?\u8acb\u6ce8\u610f\u9019\u4e0d\u80fd\u5fa9\u539f!]]> + 關閉 + 彩色 + 彩色 - 夜間模式(Alpha) + 色彩 + + 作曲者 + + 已複製裝置內容到剪貼簿 + \u7121\u6cd5\u5efa\u7acb\u64ad\u653e\u6e05\u55ae\u3002 "\u7121\u6cd5\u4e0b\u8f09\u5408\u9069\u7684\u5c08\u8f2f\u5716\u7247\u3002" 無法恢復購買狀態。 無法掃描 %d 個檔案。 + 新增 + 已新增%1$s播放清單。 + 成員和貢獻者 + 我在聽由 %2$s 唱的 %1$s + 暗黑 + + 夜間模式(Alpha) + 沒有歌詞 + 移除播放清單 %1$s播放清單嗎?]]> + 移除多個播放清單 + + 刪除歌曲 %1$s歌曲嗎?]]> + + 刪除多首歌曲 + %1$d個播放清單嗎?]]> %1$d個歌曲嗎?]]> - 刪除歌曲 - 刪除多首歌曲 已刪除%1$d首歌曲。 + + 深度式 + + 描述 + + 裝置內容 + + 允許Retro Music更改音效設定 + + 設定鈴聲 + 要清除黑名單嗎? %1$s由黑名單移除嗎?]]> + 捐款 + 若果您覺得我的開發工作值得回報,可以捐助幾元給我 + 給我買個: + 由Last.fm下載 + + 編輯 + 編輯專輯圖片 + 空白 + 等化器 + + 錯誤 + 常見問題 + 我的最愛 + + 最後一首已經結束播放 + + Fit + 平面 + 資料夾 + 給您的 + 全螢幕 + + 完整卡片 + 更改程式主題及色彩 介面外觀 + 類型 + 類型 + 在Github參與專案 + 加入Google+社交圈,在那裡您可以提出疑問或追蹤Retro Music的更新 + 1 2 3 @@ -146,77 +300,201 @@ 6 7 8 + + + + 鉸鏈式 + 歷史 + 主頁 + + 水平翻轉式 + + 圖片 + + 漸變圖像 + 更改下載歌手相片設定 + 已新增%1$d首歌曲到%2$s播放清單。 + Instagram 在Instagram分享以展示您的RetroMusic版面 + + 鍵盤 + 位元率 + 格式 檔案名 檔案位址 大小 + 取樣頻率 + 長度 + + 已標記 + 最近新增 + + 最後一首 + 讓我們播放音樂吧 + 媒體庫 + + 類別庫 + 許可證 + 淺白色 + 正在列出檔案 + 載入中... + + 登入 + 歌詞 + + 在印度用❤️做 + 物質 + + 錯誤 + + 權限錯誤 + 名字 + 最常播放 + 永不 + 新橫幅圖片 + 新播放清單 + 新個人資料圖片 + 最新的主目錄是%s。 + + 下一首 + 沒有專輯 + 沒有歌手 + "請先播放一首歌曲,然後再試一次。" + 找不到等化器 + 無類型 + 找不到歌詞 + 沒有播放清單 + 無法找到購買狀態。 + 沒有結果 + 沒有歌曲 + 常用 + 正常歌詞 + 常用 + %s不在媒體庫。]]> + 沒有項目可以掃描。 + 通知欄 + 個人化通知欄樣式 + 現在播放 現在播放清單 + 個人化現在播放界面 + 9+ 現在播放介面主題 + + 開啟 + 僅透過Wi-Fi + + 進階測試功能 + 其他 + + 密碼 + 在3個月內 + + 在此貼上歌詞 + 存取外置儲存空間權限被拒。 + 存取權限被拒。 + 個人化 + 個人化現在播放及用戶界面 + 由裝置儲存空間選擇 + + 選擇圖片 + + Pinterest + 加入我們的Pinterest來知道更多Retro Music的設計靈感 + 單色 + 播放通知欄包含了播放/暫停等動作。 播放通知欄 + 空白播放清單 + 空白播放清單 + 播放清單名稱 + 播放清單 + + 專輯詳細樣式 + + 給模糊模式主題的值,每值愈低就愈快 + 模糊值 + + 過濾歌曲長度 + + 專輯樣式 音樂 + 控制 主題 圖片 + 媒體庫 鎖定螢幕 播放清單 + + 當無音量時暫停,提高音量時播放。請注意無論你是否開啟了程式此選項也適用 + 無音量時暫停 + 請記住當您啟用此選項後或會影響電池壽命 + 螢幕保持開啟 + + 點擊或滑動開啟無透明現在播放導航欄 + 點擊或滑動 + "只適合於Lollipop。" + + 雪花效果 + 使用現在播放歌曲的專輯圖片來用作鎖定畫面背景圖片 當播放系統聲音或收到通知時降低音量 + 列入黑名單的資料夾內的資料會在您的媒體庫隱藏。 在鎖定螢幕將專輯圖片模糊化。會引致第三方程式及工具無法正常運作 於現正播放專輯圖片使用的轉盤效果。請注意卡片模式及模糊卡片模式將無法使用此效果 使用基本的通知欄設計 @@ -225,8 +503,12 @@ 設定導航欄色彩為主色調 "\u5f9e\u5c08\u8f2f\u5716\u7247\u4e2d\u6700\u9bae\u660e\u7684\u8272\u5f69\u4f86\u6311\u9078\u901a\u77e5\u6b04\u8272\u5f69" 大多數主色會從專輯或歌手圖片中挑選 + 在迷你播放器增加控制項 "或會引致某些裝置播放功能無法正常運作。" + 切換類型標籤 + 切換首頁橫幅樣式 可以提升專輯圖片質素,但這會引致加長圖片載入時間。建議只有當您的載入專輯圖片時質素較差時啟用 + 修改類別的可視性及順序。 使用Retro Music自訂鎖定螢幕控制 開放軟件特許條款內容 將程式的邊角圓角化 @@ -235,23 +517,27 @@ 當耳機連接後開始立即播放 播放新清單時會關閉隨機播放模式 如果現在播放控制有足夠空間則會顯示音量控制 - 在迷你播放器增加控制項 - 切換類型標籤 - 切換首頁橫幅樣式 + 顯示專輯圖片 - 標題標籤模式 + 專輯圖片主題 + 專輯圖片轉場 專輯網格 彩色化程式捷徑 歌手網格 失去音頻焦點時降低音量 自動下載歌手相片 + 黑名單 模糊化專輯圖片 選擇等化器 基本通知欄設計 自適應色彩 彩色通知欄 + 額外控制項 無縫播放 應用主題 + 顯示類型標籤 + 首頁歌手網格 + 首頁橫幅 忽略音樂檔內含的專輯圖片 最近新增播放清單間隔 全螢幕控制 @@ -259,6 +545,7 @@ 現在播放介面主題 開放源碼認證 螢幕圓角 + 標題標籤模式 轉盤效果 主色 全螢幕程式 @@ -267,209 +554,238 @@ 隨機模式 音量控制 使用者資料 - 額外控制項 - 首頁橫幅 - 顯示類型標籤 - 首頁歌手網格 - 專輯圖片轉場 - 專輯詳細樣式 - 階層式 + + 獲得Premium + 原色 主原色預設為灰藍色,現在適用於深色色彩 + + 現時播放主題、轉盤效果、色彩主題,還有更多... + + 個人資料 + 購買 + *購買前要三思,切勿要求退款 + 播放列表 + 為這個App評分 + 喜歡這個App嗎?請讓我們知道如何提供更好的體驗 + 近期專輯 + 近期歌手 + 移除 + 移除橫幅圖片 + 移除專輯圖片 + 由黑名單中移除 + 移除個人資料圖片 + 將歌曲由播放清單移除 %1$s 歌曲由播放清單移除嗎?]]> + 將多首歌曲由播放清單移除 + %1$d 首歌曲由播放清單移除嗎?]]> + 重新命名播放清單 + + 回報問題 + + 回報錯誤 + + 重設 + 重設歌手相片 + 恢復 + 已恢復上次購買狀態。請重新啟動程式來應用所有功能。 回復購買狀態 + 正在恢復購買狀態... + Retro等化器 + + Retro Music Pro + + 儲存 + 儲存檔案 + 儲存為多個檔案 + 已儲存播放清單到%s。 + 儲存 + 掃描媒體 + 成功掃描 %2$d 項目 中的 %1$d 項目。 + 搜尋媒體庫... + 選擇全部 + 選擇橫幅圖片 + + 選擇預定設置 + + 已選 + + 傳送報告 + + 設定 + 設定歌手相片 + + 設定個人資料圖片 + + 分享程式 + 隨機播放 + 簡單 + 休眠計時器已經取消。 休眠計時器從現在開始 %d 分鐘後停止播放。 + + 滑動 + + 迷你專輯 + 社交 + 歌曲 + 歌曲長度 + 歌曲 + 排序 遞增 專輯 歌手 + 作曲者 日期 年份 遞減 + 對不起!您的裝置不支援語音服務 + 搜尋媒體庫 + + 堆疊 + + 開始播放音樂。 + + 建議 + 只會在首頁顯示您的名字 + 開發支援 + + 滑動螢幕以解鎖 + + 同步歌詞 + 系統等化器 + Telegram 加入Telegram群組,討論程式錯誤、給予建議、炫耀一下,還有更多 + 多謝您! + 音樂檔案 + 這個月 + 這個星期 + 這年 + 迷你 + + 標題 + 通知板 + 您好 今天真美好 晚安 早晨 晚安 + 您的名字是... + 今天 + 專輯榜 + 歌手榜 + "音軌 (2指音軌2或3004指CD3中的音軌4)" + 歌曲號碼 + 翻譯 + 協助我們將這個應用程式翻譯成為您的語言 + Twitter 分享您的Retro Music設計 - \u7121\u6cd5\u64ad\u653e\u9019\u9996\u6b4c\u66f2\u3002 - 下一首 - 更新圖片 - 更新中... - 版本 - 音樂效果 - 網路搜尋 - 有什麼內容想分享的? - 視窗 - 已經將%1$s設定為您的鈴聲。 - %1$d個已選擇 - 年份 - 在印度用❤️做 - 清除程式數據 - 發生未預期的錯誤。真抱歉您發現了這個bug,如果一直崩潰請\"清除程式數據\",或者傳送電郵給我們 - 錯誤 - 基色主題 - 9+ 現在播放介面主題 - 在現在播放的轉盤效果 - 圓角 - 專輯圖片主題 - 圓盤 - 轉盤 - 個人化現在播放界面 - 完整卡片 - 個人資料 - 個人簡歷 - 自動 - 已標記 + 未標記 - 已選 - 深度式 - 垂直翻轉式 - 鉸鏈式 - 水平翻轉式 - 當無音量時暫停,提高音量時播放。請注意無論你是否開啟了程式此選項也適用 - 無音量時暫停 - 最新動向 - 建議 - Fit - 點擊或滑動 - 點擊或滑動開啟無透明現在播放導航欄 - 清除列表 - 分享程式 - 回報錯誤 - 使用Github帳戶傳送 - 登入 - 手動傳送 - 您將會轉到問題跟蹤網站。 - 問題 - 標題 - 描述 - 用戶名稱 - 密碼 - 裝置內容 - 回報問題 - 請輸入您的有效GitHub用戶名稱 - 請輸入您的有效GitHub密碼 - 請輸入問題標題 - 請輸入問題描述 - 正在上傳報告至GitHub... - 無法上傳報告 - 用戶名稱或密碼錯誤 - 存取金鑰無效。請與程式開發人員聯絡。 - 已選的版本庫(repo)並未針對此問題而啟用。請與程式開發人員聯絡。 - 發生未預期的錯誤。請與程式開發人員聯絡。 - 已複製裝置內容到剪貼簿 - 您的帳戶只會用於認證用途。 - 雪花效果 - 黑名單 - 列入黑名單的資料夾內的資料會在您的媒體庫隱藏。 - 傳送報告 - Pinterest - 加入我們的Pinterest來知道更多Retro Music的設計靈感 - 過濾歌曲長度 - 錯誤 - 權限錯誤 - 基本 - 作曲者 - 作曲者 - 下一首 - 最後一首 - 滑動 - 儲存 - 選擇圖片 - 設定個人資料圖片 - 編輯 - 媒體庫 - 滑動螢幕以解鎖 - 增加歌詞 - 在此貼上歌詞 - 增加時間同步歌詞 - 同步歌詞 - 設定鈴聲 - 允許Retro Music更改音效設定 - 我們的團隊,以及社交媒體 - 進階測試功能 - 開啟 - 選擇預定設置 + + \u7121\u6cd5\u64ad\u653e\u9019\u9996\u6b4c\u66f2\u3002 + + 下一首 + + 更新圖片 + + 更新中... + 升級至Premium - 新播放清單 - 最後一首已經結束播放 - 漸變圖像 - 堆疊 - + + 用戶名稱 + + 版本 + + 垂直翻轉式 + + 音樂效果 + + 網路搜尋 + 歡迎, - 獲得Premium - 現時播放主題、轉盤效果、色彩主題,還有更多... - 播放全部 - 開始播放音樂。 - 鍵盤 - 重設 - 類別庫 - 修改類別的可視性及順序。 - 控制 - 專輯樣式 + + 有什麼內容想分享的? + + 最新動向 + + 視窗 + + 圓角 + + 已經將%1$s設定為您的鈴聲。 + + %1$d個已選擇 + + 年份 + + 您必須選擇最少一項類別。 + + 您將會轉到問題跟蹤網站。 + + 您的帳戶只會用於認證用途。 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index e20274b4..a9909f8f 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -2,88 +2,149 @@ 重點色調 重點色調,預設為粉紅色。 + 關於 + 加到最愛 加入播放佇列 加入播放清單... + 清空播放佇列 清除播放清單 + 刪除 刪除 + 詳細資訊 + 開啟此專輯 前往此演唱者頁面 前往起始目錄 + 取得 + 網格大小 網格大小 + 下一首 + 播放 在下一首播放 播放/暫停 + 上一首 + 從最愛中移除 從播放佇列中移除 從播放清單移除 + 重新命名 + 掃描 + 搜尋 + 設定 設為鈴聲 設為起始目錄 + "設定" + 分享 + 隨機播放 隨機播放清單 + 睡眠定時器 + 編輯音樂資訊 + "加入播放清單" + "已將 1 首歌加到播放佇列" + 已將 %1$d 首歌加到播放佇列。 + 專輯 + 專輯演出者 + 專輯名稱或演出者欄是空的。 + 專輯 + 永遠 + 隨機播放 最佳單曲 + Retro music - 大型 Retro music - 經典 Retro music - 小型 + 演唱者 + 演唱者 + 無法控制音訊焦點。 + 簡介 + 純黑(AMOLED) + 取消目前的計時器 + 新功能 + 清空 + 清空播放清單 %1$s \u55ce\uff1f\u6b64\u64cd\u4f5c\u662f\u7121\u6cd5\u5fa9\u539f\u7684\uff01]]> + 主題顏色 + \u7121\u6cd5\u65b0\u589e\u64ad\u653e\u6e05\u55ae\u3002 "\u7121\u6cd5\u4e0b\u8f09\u5408\u9069\u7684\u5c08\u8f2f\u5c01\u9762\u3002" 不能掃描 %d。 + 建立 + 已新增播放清單 %1$s。 + 我正在聽 %2$s 的 %1$s ! + + 暗沉 + 刪除播放清單 %1$s 嗎?]]> + 刪除多個播放清單 + %1$s 嗎?]]> + %1$d 個播放清單?]]> %1$d 首歌嗎?]]> 已刪除 %1$d 首歌。 + 捐助 + 如果你認為我的努力值得回報,你可以在這裡留幾塊錢。 + 從 Last.fm 下載 + 空的 + 等化器 + 最愛 + 方角 + 文件夾 + 類型 + 1 2 3 @@ -92,49 +153,88 @@ 6 7 8 + 記錄 + 首頁 + 已將 %1$d 首歌加入播放清單 %2$s 中。 + 位元率 + 格式 檔案名稱 檔案路徑 檔案大小 + 取樣率 + 長度 + 最後新增 + 音樂庫 + 原始碼授權 + 明亮 + 清單文件 + 正在載入 + 歌詞 + 我的最佳單曲 + 永不 + 新增播放清單 + %s是新的起始目錄 + 沒有專輯 + 沒有演唱者 + "請先播放一首歌後再重試一遍。" + 找不到等化器。 + 沒有播放清單 + 沒有搜尋結果 + 沒有歌曲 + %s 未在音樂庫裡。]]> + 沒有東西可掃描。 + 通知 + 播放佇列 + 只在有 Wi-Fi 連接時 + 無法取得存取外部儲存空間的權限。 + 存取被拒 + 從手機裡選擇(SD卡或記憶體) + 播放清單是空的 + 播放清單名稱 + 播放清單 + 音訊 圖片 鎖定螢幕 + "只適用於 Lollipop。" + 將播放中歌曲的專輯封面設為鎖定螢幕背景。 通知鈴聲、導航語音等。 在鎖定畫面上模糊化專輯圖片。第三方程式和小工具可能不正常運作。 @@ -145,13 +245,13 @@ "可能會在某些裝置上出現播放問題。" 提高專輯封面的成像品質,但會造成較長的讀取時間。建議只有在您對低畫質的專輯封面有問題時才開啟此選項。 使視窗邊角為圓形邊角 + 顯示專輯封面 彩色的應用快捷方式 在焦點音訊響起時降低音量 自動下載演唱者圖片 將專輯圖片模糊化 自適應顏色 - 暗沉 彩色的狀態列 無縫播放 主題 @@ -160,44 +260,81 @@ 外觀 開源授權協議 圓形邊角 + 主色調 + 播放佇列 + 評分 + 如果您喜歡 Retro music,在 Play 商店給個好評吧 ! + 移除 + 移除封面 + 將歌曲從播放清單中移除 %1$s 從播放清單中移除嗎?]]> + 將多首歌曲從播放清單中移除 + %1$d 首歌從播放清單中移除嗎?]]> + 重新命名播放清單 + 回復購買 + 儲存檔案 已儲存播放清單至 %s + 儲存變更 + 已掃描 %2$d 個檔案夾中的 %1$d 個。 + 搜尋音樂庫… + 隨機播放 + 已取消睡眠定時器。 %d 分鐘後,音樂將會自動停止。 + 歌曲 + 歌曲 + 排序 + 抱歉!你的裝置不支援語音輸入 + 搜尋音樂庫 + 支援開發 + 感謝你! + 音訊檔案 + "音軌(用2表示第2首歌或用3004表示 CD3 的第4首歌)" + 翻譯 + \u7121\u6cd5\u64ad\u653e\u9019\u9996\u6b4c\u3002 + 即將播放 + 更新圖片 + 正在更新… + 版本 + 網路搜尋 + 你想分享哪些內容? + 已將 %1$s 設為鈴聲。 + 已選取 %1$d 個 + 年份 diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index c6b9bcff..a628637b 100755 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -198,5 +198,5 @@ 1 - Follow system + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f302c7c2..a0710b71 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,7 +1,7 @@ - You have to select at least one category. - Small album + Team, social links + Accent color The theme accent color, defaults to teal @@ -11,6 +11,7 @@ Add to playlist Clear playing queue Clear playlist + Cycle repeat mode Delete Delete from device Details @@ -21,8 +22,10 @@ Grant Grid size Grid size (land) + New playlist Next Play + Play all Play next Play/Pause Previous @@ -34,7 +37,6 @@ Scan Scan directory Search - Set Start Set as ringtone Set as start directory @@ -45,12 +47,16 @@ Sleep timer Sort order Tag editor + Toggle favorite + Toggle shuffle mode Adaptive Add + Add lyrics Add \nphoto "Add to playlist" + Add time frame lyrics "Added 1 title to the playing queue." Added %1$d titles to the playing queue. @@ -60,12 +66,13 @@ The title or artist is empty. Albums - + Albums + Always Hey check out this cool music player at: https://play.google.com/store/apps/details?id=%s - + Shuffle Top Tracks Retro music - Big @@ -77,13 +84,19 @@ Artist Artists - + Artists Audio focus denied. Change the sound settings and adjust the equalizer controls + Auto + + Base color theme + Bass Boost + Bio + Biography Just Black @@ -92,28 +105,49 @@ Blur Blur Card - Keep the screen on - Keep in mind that enabling this feature may affect battery life - Blur amount - Amount of blur applied for blur themes, lower is faster - Retro Music Pro + Unable to send report + Invalid access token. Please contact the app developer. + Issues are not enabled for the selected repository. Please contact the app developer. + An unexpected error occurred. Please contact the app developer. + Wrong username or password + Issue + Send manually + Please enter an issue description + Please enter your valid GitHub password + Please enter an issue title + Please enter your valid GitHub username + An unexpected error occurred. Sorry you found this bug, if it keeps crashing \"Clear app data\" or send an Email + Uploading report to GitHub… + Send using GitHub account + + Buy now Cancel Card - Colored Card Circular - Image + Colored Card Card + Carousel + Carousel effect on the now playing screen + + Cascading + Cast Changelog Changelog maintained on the Telegram channel + Circular + + Classic + Clear + Clear app data Clear blacklist + Clear queue Clear playlist %1$s? This can\u2019t be undone!]]> @@ -121,10 +155,13 @@ Color Color - Day Night(alpha) Colors + Composer + + Copied device info to clipboard. + Couldn\u2019t create playlist. "Couldn\u2019t download a matching album cover." Could not restore purchase. @@ -140,46 +177,70 @@ Kinda Dark + Day Night(alpha) + No Lyrics Delete playlist %1$s?]]> Delete playlists + Delete song %1$s?]]> + Delete songs %1$d playlists?]]> %1$d songs?]]> - Delete song - Delete songs + Deleted %1$d songs. + Deleting songs + + Depth + + Description + + Device info + + Allow Retro Music to modify audio settings + Set ringtone + Do you want to clear the blacklist? %1$s from the blacklist?]]> Donate - If you think I deserve to get paid for my work, you can leave some - money here + If you think I deserve to get paid for my work, you can leave some money here Buy me a: Download from Last.fm + Edit Edit cover Empty Equalizer + Error + FAQ Favorites + You\'re most favorites songs + + Finish last song + + Fit Flat Folders + Follow system + For you Full + Full card Change the theme and colors of the app Look and feel @@ -201,11 +262,19 @@ 6 7 8 + + + Hinge History + History Home + Horizontal flip + + Image + Gradient image Change artist image download settings Inserted %1$d songs into the playlist %2$s. @@ -213,6 +282,8 @@ Instagram Share your Retro Music setup to showcase on Instagram + Keyboard + Bitrate Format File name @@ -221,11 +292,15 @@ Sampling rate Length + Labeled + Last added + Last song Let\'s play some music Library + Library categories Licenses @@ -235,10 +310,20 @@ Loading products… + Login + Lyrics + Made with ❤️ in India + Material + Error + Permission error + + Most played albums + Most played artists + Name Most played @@ -249,6 +334,8 @@ New profile photo %s is the new start directory. + Next Song + No albums No artists "Play a song first, then try again." @@ -273,13 +360,24 @@ Now playing Now playing queue + Customize the now playing screen + 9+ now playing themes + + On Only on Wi-Fi + Advanced testing features + Other + Password + Past 3 months + Paste lyrics here + + Peak Permission to access external storage denied. @@ -289,6 +387,10 @@ Customize your now playing and UI controls Pick from local storage + Pick image + + Pinterest + Follow Pintrest page for Retro Music design inspiration Plain @@ -300,15 +402,32 @@ Playlist name Playlists + Playlists + Album detail style + Amount of blur applied for blur themes, lower is faster + Blur amount + Dialog corner + Filter song duration + Album style Audio + Controls Theme Images + Library Lockscreen Playlists + Pauses the song when the volume decreases to zero and starts playing back when the volume level rises. Also works outside the app + Pause on zero + Keep in mind that enabling this feature may affect battery life + Keep the screen on + Click to open with or slide to without transparent navigation of now playing screen + Click or Slide "Only available on Lollipop." + Snow fall effect Use the currently playing song album cover as the lockscreen wallpaper Lower the volume when a system sound is played or a notification is received + The content of blacklisted folders is hidden from your library. Blur the album cover on the lockscreen. Can cause problems with third party apps and widgets Carousel effect for the album art in the now playing screen. Note that Card and Blur Card themes won\'t work Use the classic notification design @@ -316,9 +435,14 @@ Colors the app shortcuts in the accent color. Every time you change the color please toggle this to take effect Colors the navigation bar in the primary color "Colors the notification in the album cover\u2019s vibrant color" + As per Material Design guide lines in dark mode colors should be desaturated Most dominant color will be picked from the album or artist cover + Add extra controls for mini player "Can cause playback issues on some devices." + Toggle genre tab + Toggle home banner style Can increase the album cover quality, but causes slower image loading times. Only enable this if you have problems with low resolution artworks + Configure visibility and order of library categories. Use Retro Music\'s custom lockscreen controls License details for open source software Round the app\'s edges @@ -327,23 +451,27 @@ Start playing immediately after headphones are connected Shuffle mode will turn off when playing a new list of songs If enough space is available, show volume controls in the now playing screen - Add extra controls for mini player - Toggle genre tab - Toggle home banner style Show album cover - Tab titles mode + Album cover theme + Album cover skip Album grid Colored app shortcuts Artist grid Reduce volume on focus loss Auto-download artist images + Blacklist Blur album cover Choose equalizer Classic notification design Adaptive color Colored notification + Desaturated color + Extra controls Gapless playback App theme + Show genre tab + Home artist grid + Home banner Ignore Media Store covers Last added playlist interval Fullscreen controls @@ -351,6 +479,7 @@ Now playing theme Open source licences Corner edges + Tab titles mode Carousel effect Dominant color Fullscreen app @@ -359,25 +488,27 @@ Shuffle mode Volume controls User info - Extra controls - Home banner - Show genre tab - Home artist grid - Album cover skip - Album detail style - Cascading + + Get Premium Primary color The primary theme color, defaults to blue grey, for now works with dark colors + Now playing themes, Carousel effect and more.. + + Profile + Purchase *Think before buying, don\'t ask for refund. Queue + Queue Rate the app Love this app? Let us know in the Google Play Store how we can make it even better + Recently added albums + Recently added artists Recent albums Recent artists @@ -393,6 +524,10 @@ Rename playlist + Report an issue + Report bug + + Reset Reset artist image Restore @@ -403,10 +538,26 @@ Restoring purchase… Retro Music Equalizer + Retro Music Pro + File delete failed: %s + + Can\'t get SAF URI + Open navigation drawer + Enable \'Show SD card\' in overflow menu + + %s needs SD card access + You need to select your SD card root directory + Select your SD card in navigation drawer + Do not open any sub-folders + Tap \'select\' button at the bottom of the screen + File access required. Pick %s + SD card access required. Please pick root directory of SD card + File write failed: %s + + Save - Save as file Save as files @@ -422,8 +573,17 @@ Select all Select banner photo + Select preset + Selected + + Send crash log + + Set Set artist image + Set a profile photo + + Share app Shuffle @@ -432,6 +592,10 @@ Sleep timer canceled. Sleep timer set for %d minutes from now. + Slide + + Small album + Social Song @@ -443,6 +607,7 @@ Ascending Album Artist + Composer Date Year Descending @@ -450,14 +615,23 @@ Sorry! Your device doesn\'t support speech input Search your library + Stack + + Start playing music. + + Suggestions + Just show your name on home screen Support development + Swipe to unlock + + Synced lyrics + System Equalizer - Telegram Join the Telegram group to discuss bugs, make suggestions, show off and more @@ -471,6 +645,7 @@ Tiny + Title Dashboard Good afternoon Good day @@ -483,6 +658,7 @@ Top albums Top artists + Top Tracks "Track (2 for track 2 or 3004 for CD3 track 4)" Track number @@ -493,6 +669,8 @@ Twitter Share your design with Retro Music + Unlabeled + Couldn\u2019t play this song. Up next @@ -501,167 +679,34 @@ Updating… + Upgrade to premium + + Username + Version + Vertical flip + Virtualizer Web search + Welcome, + What do you want to share? + What\'s New + Window + Rounded corners Set %1$s as your ringtone. %1$d selected Year - Made with ❤️ in India - Clear app data - An unexpected error occurred. Sorry you found this bug, if it - keeps crashing \"Clear app data\" or send an Email - Error - Base color theme - 9+ now playing themes - Carousel effect on the now playing screen - Rounded corners - Album cover theme - Circular - Carousel - Customize the now playing screen - Full card - Profile - Bio - - - Auto - Labeled - Unlabeled - Selected - - Depth - Vertical flip - Hinge - Horizontal flip - Pauses the song when the volume decreases to zero and starts playing back when the volume level rises. Also works outside the app - Pause on zero - What\'s New - - Suggestions - Fit - Click or Slide - Click to open with or slide to without transparent navigation of now playing screen - Clear queue - Share app - Report bug - - Send using GitHub account - - Login - Send manually + You have to select at least one category. You will be forwarded to the issue tracker website. - Issue - Title - Description - Username - Password - Device info - Report an issue - Please enter your valid GitHub username - Please enter your valid GitHub password - Please enter an issue title - Please enter an issue description - Uploading report to GitHub… - Unable to send report - Wrong username or password - Invalid access token. Please contact the app developer. - Issues are not enabled for the selected repository. Please contact the app developer. - An unexpected error occurred. Please contact the app developer. - Copied device info to clipboard. + Your account data is only used for authentication. - Snow fall effect - Blacklist - The content of blacklisted folders is hidden from your library. - Send crash log - Pinterest - Follow Pintrest page for Retro Music design inspiration - Filter song duration - Error - Permission error - Classic - Composer - Composer - Next Song - Last song - Slide - Save - Pick image - Set a profile photo - Edit - Library - Swipe to unlock - Add lyrics - Paste lyrics here - Add time frame lyrics - Synced lyrics - Set ringtone - Allow Retro Music to modify audio settings - Team, social links - Advanced testing features - On - Select preset - Upgrade to premium - New playlist - Finish last song - - Gradient image - Stack - - Welcome, - Get Premium - Now playing themes, Carousel effect and more.. - Play all - Start playing music. - Keyboard - Reset - Library categories - Configure visibility and order of library categories. - Controls - Album style - - - - Can\'t get SAF URI - File write failed: %s - File delete failed: %s - SD card access required. Please pick root directory of SD card - File access required. Pick %s - - %s needs SD card access - Enable \'Show SD card\' in overflow menu - Open navigation drawer - Select your SD card in navigation drawer - You need to select your SD card root directory - Tap \'select\' button at the bottom of the screen - Do not open any sub-folders - Deleting songs - Hemanth Savarala - - Albums - Artists - Playlists - History - Top Tracks - Queue - Cycle repeat mode - Toggle shuffle mode - Toggle favorite - Dialog corner - Peak - Recently added artists - Recently added albums - Most played artists - Most played albums - You\'re most favorites songs - Buy now diff --git a/app/src/main/res/xml/pref_general.xml b/app/src/main/res/xml/pref_general.xml index 6da39af5..b09c9b87 100755 --- a/app/src/main/res/xml/pref_general.xml +++ b/app/src/main/res/xml/pref_general.xml @@ -35,8 +35,8 @@ Date: Mon, 4 Nov 2019 22:39:07 +0530 Subject: [PATCH 44/57] XML String sort --- .../activities/AlbumDetailsActivity.kt | 2 +- .../main/res/color/text_field_background.xml | 19 -- .../main/res/drawable-xxxhdpi/np_classic.webp | Bin 56846 -> 0 bytes .../main/res/drawable-xxxhdpi/np_slide.webp | Bin 118602 -> 0 bytes .../main/res/drawable/background_image.xml | 11 - .../main/res/drawable/flat_shadow_thumb.xml | 8 - .../res/drawable/ic_discord_white_24dp.xml | 9 - .../res/drawable/ic_format_color_fill.xml | 13 - .../res/drawable/ic_person_white_24dp.xml | 10 - .../res/drawable/ic_search_white_24dp.xml | 11 - .../drawable/ic_text_fields_black_24dp.xml | 9 - .../res/drawable/ic_time_lapse_white_24dp.xml | 12 - .../main/res/drawable/ic_timer_white_24dp.xml | 12 - .../res/drawable/material_design_outline.xml | 21 -- .../drawable/navigation_item_background.xml | 18 -- .../res/drawable/navigation_item_checked.xml | 20 -- app/src/main/res/drawable/play_icon.png | Bin 707 -> 0 bytes .../main/res/layout/activity_equalizer.xml | 142 ---------- app/src/main/res/layout/app_rating.xml | 74 ------ .../res/layout/dialog_add_to_playlist.xml | 39 --- app/src/main/res/layout/dialog_changelog.xml | 1 - .../res/layout/dialog_promotional_offer.xml | 71 ----- app/src/main/res/layout/item_collage.xml | 229 ---------------- .../layout/layout_notification_collapsed.xml | 17 +- .../layout/layout_notification_expanded.xml | 14 +- app/src/main/res/layout/notification.xml | 143 ---------- app/src/main/res/layout/notification_big.xml | 161 ----------- app/src/main/res/layout/retro_seekbar.xml | 46 ---- .../res/menu/menu_expanded_controller.xml | 11 - .../mipmap-hdpi/ic_launcher_background.png | Bin 367 -> 0 bytes .../mipmap-mdpi/ic_launcher_background.png | Bin 233 -> 0 bytes .../mipmap-xhdpi/ic_launcher_background.png | Bin 508 -> 0 bytes .../mipmap-xxhdpi/ic_launcher_background.png | Bin 897 -> 0 bytes .../mipmap-xxxhdpi/ic_launcher_background.png | Bin 1349 -> 0 bytes app/src/main/res/values-ar/strings.xml | 7 - app/src/main/res/values-bg/strings.xml | 2 - app/src/main/res/values-cs/strings.xml | 1 - app/src/main/res/values-de-rDE/strings.xml | 13 - app/src/main/res/values-de/strings.xml | 2 - app/src/main/res/values-el/strings.xml | 1 - app/src/main/res/values-es-rES/strings.xml | 11 - app/src/main/res/values-es-rUS/strings.xml | 3 - app/src/main/res/values-es/strings.xml | 2 - app/src/main/res/values-eu-rES/strings.xml | 3 - app/src/main/res/values-fr/strings.xml | 13 - app/src/main/res/values-hr/strings.xml | 3 - app/src/main/res/values-hu/strings.xml | 3 - app/src/main/res/values-id/strings.xml | 4 - app/src/main/res/values-in/strings.xml | 2 - app/src/main/res/values-it/strings.xml | 13 - app/src/main/res/values-ja/strings.xml | 3 - app/src/main/res/values-ko/strings.xml | 2 - app/src/main/res/values-land/dimens.xml | 2 - app/src/main/res/values-land/integers.xml | 4 +- app/src/main/res/values-ms/strings.xml | 1 - .../main/res/values-night/is_dark_mode.xml | 18 -- app/src/main/res/values-nl/strings.xml | 2 - app/src/main/res/values-pl/strings.xml | 10 - app/src/main/res/values-pt-rBR/strings.xml | 13 - app/src/main/res/values-ro/strings.xml | 2 - app/src/main/res/values-ru/strings.xml | 3 - app/src/main/res/values-sr/strings.xml | 2 - .../main/res/values-sw600dp-land/dimens.xml | 4 - app/src/main/res/values-sw600dp/dimens.xml | 5 - app/src/main/res/values-tr/strings.xml | 13 - app/src/main/res/values-vi/strings.xml | 9 - app/src/main/res/values-xlarge/dimens.xml | 1 - app/src/main/res/values-zh-rCN/strings.xml | 88 +++--- app/src/main/res/values-zh-rHK/strings.xml | 13 - app/src/main/res/values-zh-rTW/strings.xml | 2 - app/src/main/res/values/arrays.xml | 23 -- app/src/main/res/values/colors.xml | 2 - app/src/main/res/values/dimens.xml | 25 -- app/src/main/res/values/donottranslate.xml | 2 - app/src/main/res/values/integers.xml | 1 - app/src/main/res/values/is_dark_mode.xml | 17 -- app/src/main/res/values/strings.xml | 23 +- app/src/main/res/values/styles.xml | 69 ----- app/src/main/res/values/styles_parents.xml | 33 --- app/src/main/res/values/values.xml | 10 +- .../res/xml/allowed_media_browser_callers.xml | 251 ------------------ .../src/main/res/drawable/ate_track.xml | 40 --- .../src/main/res/drawable/toggle_switch.xml | 40 --- .../res/layout/ate_preference_category.xml | 14 - .../res/layout/ate_preference_checkbox.xml | 9 - .../layout/two_lines_list_preference_row.xml | 42 --- .../res/values/colors_material_design.xml | 23 -- appthemehelper/src/main/res/values/dimens.xml | 3 - 88 files changed, 75 insertions(+), 1955 deletions(-) delete mode 100644 app/src/main/res/color/text_field_background.xml delete mode 100644 app/src/main/res/drawable-xxxhdpi/np_classic.webp delete mode 100644 app/src/main/res/drawable-xxxhdpi/np_slide.webp delete mode 100644 app/src/main/res/drawable/background_image.xml delete mode 100644 app/src/main/res/drawable/flat_shadow_thumb.xml delete mode 100644 app/src/main/res/drawable/ic_discord_white_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_format_color_fill.xml delete mode 100644 app/src/main/res/drawable/ic_person_white_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_search_white_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_text_fields_black_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_time_lapse_white_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_timer_white_24dp.xml delete mode 100644 app/src/main/res/drawable/material_design_outline.xml delete mode 100644 app/src/main/res/drawable/navigation_item_background.xml delete mode 100644 app/src/main/res/drawable/navigation_item_checked.xml delete mode 100644 app/src/main/res/drawable/play_icon.png delete mode 100644 app/src/main/res/layout/activity_equalizer.xml delete mode 100644 app/src/main/res/layout/app_rating.xml delete mode 100644 app/src/main/res/layout/dialog_add_to_playlist.xml delete mode 100644 app/src/main/res/layout/dialog_changelog.xml delete mode 100644 app/src/main/res/layout/dialog_promotional_offer.xml delete mode 100644 app/src/main/res/layout/item_collage.xml delete mode 100644 app/src/main/res/layout/notification.xml delete mode 100644 app/src/main/res/layout/notification_big.xml delete mode 100644 app/src/main/res/layout/retro_seekbar.xml delete mode 100644 app/src/main/res/menu/menu_expanded_controller.xml delete mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_background.png delete mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_background.png delete mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_background.png delete mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png delete mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png delete mode 100644 app/src/main/res/values-night/is_dark_mode.xml delete mode 100644 app/src/main/res/values-sw600dp-land/dimens.xml delete mode 100644 app/src/main/res/values-sw600dp/dimens.xml delete mode 100644 app/src/main/res/values/is_dark_mode.xml delete mode 100644 app/src/main/res/xml/allowed_media_browser_callers.xml delete mode 100644 appthemehelper/src/main/res/drawable/ate_track.xml delete mode 100644 appthemehelper/src/main/res/drawable/toggle_switch.xml delete mode 100755 appthemehelper/src/main/res/layout/ate_preference_category.xml delete mode 100755 appthemehelper/src/main/res/layout/ate_preference_checkbox.xml delete mode 100644 appthemehelper/src/main/res/layout/two_lines_list_preference_row.xml diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt index 9be1bf63..5ec3e634 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt @@ -190,7 +190,7 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsView { override fun moreAlbums(albums: ArrayList) { moreTitle.show() moreRecyclerView.show() - moreTitle.text = String.format("More from %s", album.artistName) + moreTitle.text = String.format(getString(R.string.label_more_from), album.artistName) val albumAdapter = HorizontalAlbumAdapter(this, albums, false, null) moreRecyclerView.layoutManager = GridLayoutManager(this, 1, GridLayoutManager.HORIZONTAL, false) diff --git a/app/src/main/res/color/text_field_background.xml b/app/src/main/res/color/text_field_background.xml deleted file mode 100644 index 9089c1a7..00000000 --- a/app/src/main/res/color/text_field_background.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable-xxxhdpi/np_classic.webp b/app/src/main/res/drawable-xxxhdpi/np_classic.webp deleted file mode 100644 index c1587c56df1dd9cdec418f68d286423db616aae2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56846 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�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

v%a8+|$Qa}hvw)#JyPBa7+vIQVak2E34>A|AF z;4uRJOnva@DXF`-M-2c@M8mci;G`$W;cMsk5XfHOAgq)=ydhvhJI+GuPG%w5t>Lt0 zIzUDrJILJehXq+eaRn+FL4Cv#9R5km7>9thx2$_BP39sdAvZoWCtJ9-`_E71KHVq)4zdv%c zE{T@^aK@UJnzf#)au&H-ej-apIL)Y(JK}0|VaL@^!PF?Z&3~BV^S8~6qhP+W>pnzo zOHh!iD+{87OJ^uDuLz;kPW zy(R0}(~cKRC-%rSND`)6j!a3;8-kiN9dk!V!Jz?!3f9=2RX(2)^?%rnJBQ$)73^oF zv0UCCxRqG~Jm^o?+y|(s40${!6?k3zrMR%HU~wa z@XCwqt}ffqgyjDivqJn<7U3PP($H)MR_q0L8`;f-9HJC?xfWV^2*Zt_2j5wbq}=-W;OSSLJSJd zf-z(6TuUxou1n`%t$IwEtU^Pn8V)K%!9<~roe*86VV*gGMbW3-9vFmT4k()B*t2ML zD(KTVGa(ZV4NgqGN%dQ))~}}-ao;GlUb*x3SZ$@%jy~7bxs)v|?zV7&FRo;e`-Q;W zw{tK6MtO?3DgSOdC`>mCr7(B5rXrJ2@Gx^Hji3FROg;}7caQ0Y@a?e zb3&^_7eMl0trUx2&I3X7@P1ix*##2saGFRU<$wAUA1&~EefaxzafOr!#uZ$95V?Vb zD%}3!n#*XCf6hc|%u1{2$^=VapEw1kcyKe>U{L6MUK=HWQm2Z-MhO zDKoiC1#l5}|KpBao!6Wkos)a7-o1xyGuL})#zous!KKSQ)|2TJg9sw9M1Vka9cJBt zb>Li%mNRk{K!LrC9#@Ai5}GJqQb46lXHD>Y%)*|;qWYZjZn81 zd7dOoW-BMuyn8OA;%O@TNSjB?NIix3TS;L|V;bx& z@_}Qf4;6}=F!`eOrHL=-!U-g_GRPlP9Ta}!Vq~3BVA{^pPoK}0ZDg)|X;ryI5jcMa z3yPf$UyAEJrg#A#ZbHfFOf4H~n*kQn!hEZ=N5I{q0q5^sk@7SLLn48{FVwt9r=5xM z!+(N{fB*r75|DrwUBC=C3J#Y>d=NGO3S%jMwdmvq_WLBy!2demxE7rF`x)p-%+=-W z;`qT@V1srEk!lW!jPnS&Vkv63Ej!0ucc7J(==jV3)4BXkKMqjn000000000%$N&HU z00000000000008G(FWy9mydAcMcXMAB5)yS>~njsj+ zAAc1&Cer#a00003yOKZ?=o1LEpvDEl5FqaW0002>BtQTF0000000000000000001P C1Y=SF diff --git a/app/src/main/res/drawable-xxxhdpi/np_slide.webp b/app/src/main/res/drawable-xxxhdpi/np_slide.webp deleted file mode 100644 index fd317077097f313b158db30a8e3108020b6735f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118602 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%0D)PGnaSb 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 diff --git a/app/src/main/res/drawable/background_image.xml b/app/src/main/res/drawable/background_image.xml deleted file mode 100644 index 3e55dfa0..00000000 --- a/app/src/main/res/drawable/background_image.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/flat_shadow_thumb.xml b/app/src/main/res/drawable/flat_shadow_thumb.xml deleted file mode 100644 index 377369b2..00000000 --- a/app/src/main/res/drawable/flat_shadow_thumb.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_discord_white_24dp.xml b/app/src/main/res/drawable/ic_discord_white_24dp.xml deleted file mode 100644 index 807fe077..00000000 --- a/app/src/main/res/drawable/ic_discord_white_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_format_color_fill.xml b/app/src/main/res/drawable/ic_format_color_fill.xml deleted file mode 100644 index ead2a834..00000000 --- a/app/src/main/res/drawable/ic_format_color_fill.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_person_white_24dp.xml b/app/src/main/res/drawable/ic_person_white_24dp.xml deleted file mode 100644 index f8a999aa..00000000 --- a/app/src/main/res/drawable/ic_person_white_24dp.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_search_white_24dp.xml b/app/src/main/res/drawable/ic_search_white_24dp.xml deleted file mode 100644 index a035c8c5..00000000 --- a/app/src/main/res/drawable/ic_search_white_24dp.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_text_fields_black_24dp.xml b/app/src/main/res/drawable/ic_text_fields_black_24dp.xml deleted file mode 100644 index 51bf61f1..00000000 --- a/app/src/main/res/drawable/ic_text_fields_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_time_lapse_white_24dp.xml b/app/src/main/res/drawable/ic_time_lapse_white_24dp.xml deleted file mode 100644 index 33025b21..00000000 --- a/app/src/main/res/drawable/ic_time_lapse_white_24dp.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_timer_white_24dp.xml b/app/src/main/res/drawable/ic_timer_white_24dp.xml deleted file mode 100644 index 53eef814..00000000 --- a/app/src/main/res/drawable/ic_timer_white_24dp.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/material_design_outline.xml b/app/src/main/res/drawable/material_design_outline.xml deleted file mode 100644 index 3eb8f3d7..00000000 --- a/app/src/main/res/drawable/material_design_outline.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/navigation_item_background.xml b/app/src/main/res/drawable/navigation_item_background.xml deleted file mode 100644 index a545ab6e..00000000 --- a/app/src/main/res/drawable/navigation_item_background.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/navigation_item_checked.xml b/app/src/main/res/drawable/navigation_item_checked.xml deleted file mode 100644 index 8efba42f..00000000 --- a/app/src/main/res/drawable/navigation_item_checked.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/play_icon.png b/app/src/main/res/drawable/play_icon.png deleted file mode 100644 index b8b879c6f28701c0d7f41091e014caf97530cb62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 707 zcmV;!0zCbRP)ljA6bJBk%8+E?Q)IJ03ox>_QU}zbLP!-z2!vpvFww157lc?CD2yPcGLj|uE>UVl zq6;0m6sd|EC;p?W666KcTztMe`!f3!zu&!gPw&jA=08^R_{jtK45+z)FM*mTfIkF% z3HTDIxqvT$nkRssF3{<8Zp3l?+XY-LB@hI`d&bytk|a;#IKH$QLKnaxW9$}yVGZAfY&QENBC>>xP z^hK6skK66`ZnxV_O+uIgSj7BeI-RZ!27|6C1k(WWkjwz=CQ0&SG#Z_k4PhK0cQ*V2 za90TNu}lPO0CGVeN(j#RX&DeU0?4>!DLjaxXpe|8oe;JHEMopXo6Xkx{eGki!FB){ zw``NIbj=km09fDKZGiGxoCDbAobSs~VAWdx*LqtsptMU7s{mwc1F%)*wU`wE zMYpzP%EbnN!dsgY06JTn^#HnCo6P{Fv^HA-N^5Oa0RS-a#pk*R+PVM{-6W#@@p!y# z;+vmQfG`YSW?A-02yt}X7cupmmJBczjLQFd02Q?=t??O9rQKAC#b ps>I?mKt-)eYkUS&X*X43`2(i9dQftn1ML6+002ovPDHLkV1hraG4ucc diff --git a/app/src/main/res/layout/activity_equalizer.xml b/app/src/main/res/layout/activity_equalizer.xml deleted file mode 100644 index bec891ad..00000000 --- a/app/src/main/res/layout/activity_equalizer.xml +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/app_rating.xml b/app/src/main/res/layout/app_rating.xml deleted file mode 100644 index 5bdcd9d1..00000000 --- a/app/src/main/res/layout/app_rating.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_add_to_playlist.xml b/app/src/main/res/layout/dialog_add_to_playlist.xml deleted file mode 100644 index 11174b32..00000000 --- a/app/src/main/res/layout/dialog_add_to_playlist.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_changelog.xml b/app/src/main/res/layout/dialog_changelog.xml deleted file mode 100644 index 6cad1730..00000000 --- a/app/src/main/res/layout/dialog_changelog.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_promotional_offer.xml b/app/src/main/res/layout/dialog_promotional_offer.xml deleted file mode 100644 index 2f953757..00000000 --- a/app/src/main/res/layout/dialog_promotional_offer.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/item_collage.xml b/app/src/main/res/layout/item_collage.xml deleted file mode 100644 index caf0760f..00000000 --- a/app/src/main/res/layout/item_collage.xml +++ /dev/null @@ -1,229 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/layout_notification_collapsed.xml b/app/src/main/res/layout/layout_notification_collapsed.xml index 87a7ad54..619a069c 100644 --- a/app/src/main/res/layout/layout_notification_collapsed.xml +++ b/app/src/main/res/layout/layout_notification_collapsed.xml @@ -86,6 +86,7 @@ android:ellipsize="end" android:lines="1" android:singleLine="true" + android:textAppearance="@style/Theme.RetroMusic.Notification" android:textStyle="bold" tools:text="@tools:sample/lorem/random" /> @@ -96,6 +97,7 @@ android:ellipsize="end" android:lines="1" android:singleLine="true" + android:textAppearance="@style/Theme.RetroMusic.Notification.Title" tools:text="@tools:sample/lorem/random" /> @@ -111,41 +113,46 @@ android:layout_marginEnd="48dp" android:orientation="horizontal"> - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/layout_notification_expanded.xml b/app/src/main/res/layout/layout_notification_expanded.xml index bd8de1fd..79d18062 100644 --- a/app/src/main/res/layout/layout_notification_expanded.xml +++ b/app/src/main/res/layout/layout_notification_expanded.xml @@ -79,6 +79,7 @@ android:paddingStart="16dp" android:paddingEnd="0dp" android:singleLine="true" + android:textAppearance="@style/Theme.RetroMusic.Notification" android:textStyle="bold" tools:text="@tools:sample/lorem/random" /> @@ -91,6 +92,7 @@ android:paddingStart="16dp" android:paddingEnd="0dp" android:singleLine="true" + android:textAppearance="@style/Theme.RetroMusic.Notification.Title" tools:text="@tools:sample/lorem/random" /> - - - - diff --git a/app/src/main/res/layout/notification.xml b/app/src/main/res/layout/notification.xml deleted file mode 100644 index cdc4f997..00000000 --- a/app/src/main/res/layout/notification.xml +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/notification_big.xml b/app/src/main/res/layout/notification_big.xml deleted file mode 100644 index 9ed51a13..00000000 --- a/app/src/main/res/layout/notification_big.xml +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/retro_seekbar.xml b/app/src/main/res/layout/retro_seekbar.xml deleted file mode 100644 index f8e78215..00000000 --- a/app/src/main/res/layout/retro_seekbar.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/menu/menu_expanded_controller.xml b/app/src/main/res/menu/menu_expanded_controller.xml deleted file mode 100644 index b38fb6c1..00000000 --- a/app/src/main/res/menu/menu_expanded_controller.xml +++ /dev/null @@ -1,11 +0,0 @@ - -

- - - - diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_background.png b/app/src/main/res/mipmap-hdpi/ic_launcher_background.png deleted file mode 100644 index 8538bed39259c15e6e0632c636b4a1430354080d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 367 zcmeAS@N?(olHy`uVBq!ia0vp^i$Iuz4M-mPBqq(kz-Z>_;uunK>+K~*UIqr9Lk53l zvq}5k^NN^uh;br=a+9E;l7t}1R8NQC!43&Q(kTwNBOM7YJ)}|wN^UI5NiJkiWOxo3 b8b9-TU-#a;RQtdL7?2E}u6{1-oD!M<1iNG9 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_background.png b/app/src/main/res/mipmap-mdpi/ic_launcher_background.png deleted file mode 100644 index a92ccfafbb3168a16b5cd14f3133a4fcb2e56719..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^IUvlz1|<8_!p{P!4W2HJAr-gYUS#BDVBk4q@Mkug zbp0jIh~T|iVhq9tjLd2YOl&>}Sa@bMa7q|33L7LasU;j>@j1}IIimr{1uMW5!Kwwn kAuufnV__l)drLMlGUQB&QK>)h7U*^cPgg&ebxsLQ00|E}CIA2c diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png deleted file mode 100644 index 3ba37c9e975d0d1dbd3e2e713756334c54fdd532..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 508 zcmeAS@N?(olHy`uVBq!ia0vp^H$a$!4M=t>=)PrOU_9*U;uunK>+NMjUIqr9!y7)S z-(7UW_@;o8D(g8HCIblx9uVeX17S915N>7!;>LpvKztyf0g4k04kRQP7)XFHrWUN) zkhNgfhGY}MHe_wcHsNs~L<>F#f^9zopr E06DORd;kCd diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png deleted file mode 100644 index 07f6de5a9bd4596ce0587731dbf65afc96a82f22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 897 zcmeAS@N?(olHy`uVBq!ia0y~yU~~at4mO}j{44ik3=GU3o-U3d6}R4AG2~@n;5oeE zllon+X2Y8TMJlWhT$mV~SqxlgL+}V55MZPcK^qrC!-96s2AWK(&<4AmMxhN35LyQL j6b9ObId$CKz|U5*%)EZ#++WVXti|Bz>gTe~DWM4fr~94Y diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png deleted file mode 100644 index 5ae3008fea26d620e28d62b863faa171fb3fe8c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1349 zcmeAS@N?(olHy`uVBq!ia0y~yVB7%09Be?56MhC-3=FJ1o-U3d6}R4AHRNSr;5oeE zllt97Hw;g=+a-rfc*9vM7c L{an^LB{Ts5FVyd% diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index f87d9864..392e1d4f 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -31,7 +31,6 @@ اعادة تسمية حفظ قائمة التشغيل الحالية فحص - مسار الفحص بحث تعيين تشغيل @@ -97,7 +96,6 @@ https://play.google.com/store/apps/details?id=%s اغلاق لون لون - مضيء ومظلم(اختباري) الوان \u0644\u0627\u064a\u0645\u0643\u0646 \u0625\u0646\u0634\u0627\u0621 \u0642\u0627\u0626\u0645\u0629 \u062a\u0634\u063a\u064a\u0644 "\u0644\u0627\u064a\u0645\u0643\u0646 \u062a\u0646\u0632\u064a\u0644 \u063a\u0644\u0627\u0641 \u0627\u0644\u0628\u0648\u0645 \u0645\u062a\u0637\u0627\u0628\u0642." @@ -216,7 +214,6 @@ https://play.google.com/store/apps/details?id=%s الصور شاشة القفل " قوائم التشغيل" - "متاح فقط على لوليبوب" استخدم غلاف ألبوم الأغنية قيد التشغيل حاليًا كخلفية لشاشة القفل خفض مستوى الصوت عند تشغيل صوت نظام أو تلقي إشعارات ظبابية غطاء الألبوم على شاشة القفل . يمكن أن يسبب مشاكل في تطبيقات وويدجت الطرف الثالث @@ -455,16 +452,12 @@ https://play.google.com/store/apps/details?id=%s السمات لتطبيق ريترو ميوزك بتعديل اعدادات الصوت الفريق, الروابط للتواصل اعدادات اختبارية متقدمة - تفعيل - حدد مسبقا - الترقية إلى الإصدار الكامل قائمة تشغيل جديدة إنهاء الأغنية الأخيرة الصورة المتدرجة التكدس مرحبا, - الحصول على الإصدار الكامل تشغيل الآن السمات ، وتأثير التكدس ، وموضوع اللون وأكثر من ذلك .. تشغيل الكل أبدا بتشغيل الموسيقى. diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 82e18ce0..06d1e683 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -44,7 +44,6 @@ Запази опашката Сканирай - Сканирай директория Търси @@ -432,7 +431,6 @@ Натисни за или плъзни за без прозрачна навигация на екрана с песен Натисни или плъзни - "Наличен единствено в Lollipop." Ефект на валящ сняг diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 670cbab0..f9eb381a 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -184,7 +184,6 @@ Zvuk Obrázky Obrazovka uzamčení - "K dispozici pouze na Lollipop." Používá současný obal alba písní jako tapetu zámku. Oznámení, navigace atd. Blur obal alba na uzamčení obrazovky. Může způsobit problémy s aplikacemi třetích stran a widgety. diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index 897eed6c..bb895880 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -49,7 +49,6 @@ Warteschleife abspeichern Scannen - Verzeichnis scannen Suchen @@ -214,8 +213,6 @@ Ziemlich Dunkel - Tag-Nacht - Kein Songtext Wiedergabeliste löschen @@ -422,8 +419,6 @@ Passe den Abspielbildschirm an Mehr als 10 Abspiel-Themes - An - Nur über WLAN Erweiterte Testfunktionen @@ -488,8 +483,6 @@ Tippen oder wischen, um den Abspielbildschirm zu öffnen. Ist Wischen aktiv, kann die Navigationsleiste nicht transparent sein. Wischgesten - "Nur auf Lollipop verfügbar." - Schneefall-Effekt Nutzt das Albumcover des derzeitigen Songs als Sperrbildschirmhintergrund. @@ -555,8 +548,6 @@ Lautstärkesteuerung Nutzerinfo - Premium kaufen - Primärfarbe Die Primärfarbe, standardmäßig blau/grau, funktioniert nun auch mit dunklen Farben @@ -638,8 +629,6 @@ Banner-Foto auswählen - Wähle eine Voreinstellung - Ausgewähltes beschriftet Crashlogs senden @@ -755,8 +744,6 @@ Aktualisieren... - Upgrade auf Premium - Benutzername Version diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index b132edca..45bad171 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -269,8 +269,6 @@ Sperrbildschirm Playlist - "Nur unter Android Lollipop verfügbar." - Aktuelles Album-Cover als Sperrbildschrim verwenden. Benachrichtigungen, Benachrichtigung etc. Verunschärft das Album-Cover des Sperrbildschirm. Kann Probleme mit anderen Apps und Widgets verursachen. diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index a4e5439f..76d00a4d 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -277,7 +277,6 @@ Οθόνη Κλειδώματος Playlists - "Διαθέσιμο μόνο στο Android Lollipop." Χρησιμοποιεί το εξώφυλλο του τρέχων κομματιού ως φόντο οθόνης κλειδώματος. Ειδοποιήσεις, πλοήγηση, κλπ. diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index 8c9d90a3..df981f63 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -49,7 +49,6 @@ Guardar cola de reproducción Escanear - Escanear directorio Buscar @@ -214,8 +213,6 @@ Algo oscuro - Día Noche (alpha) - No hay letras Eliminar lista de reproducción @@ -486,8 +483,6 @@ Toca para abrir con o desliza sin la barra de navegación transparente de la pantalla de reproducción Hacer clic o deslizar - "Sólo disponible en Lollipop." - Efecto de caída de nieve Utiliza la portada del álbum de la canción que se está reproduciendo como fondo de la pantalla de bloqueo @@ -553,8 +548,6 @@ Controles de volumen Información del usuario - Obtener premium - Color primario El color de tema primario, azul grisáceo por defecto, por ahora funciona con colores oscuros @@ -636,8 +629,6 @@ Elegir una foto de portada - Seleccionar preset - Seleccionado Enviar registro de depuración @@ -753,8 +744,6 @@ Actualizando... - Mejorado a premium - Nombre de Usuario Versión diff --git a/app/src/main/res/values-es-rUS/strings.xml b/app/src/main/res/values-es-rUS/strings.xml index e2fb3e3e..99e34189 100644 --- a/app/src/main/res/values-es-rUS/strings.xml +++ b/app/src/main/res/values-es-rUS/strings.xml @@ -44,7 +44,6 @@ Guardar cola de reproducción Escanear - Escanear directorio Buscar @@ -432,8 +431,6 @@ Click para abrir con o sin navegación transparente de la pantalla de reproducción actual Hacer Clic o Deslizar - "Sólo disponible en Lollipop" - Efecto \"Snow Fall\" Utiliza la portada del álbum de la canción que se reproduce como fondo de pantalla de bloqueo diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 7c663277..534819c7 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -46,7 +46,6 @@ Guardar lista de reproducción Escanear - Escanear directorio Buscar @@ -432,7 +431,6 @@ Toca para abrir con o desliza sin la barra de navegación transparente de la pantalla de reproducción Toca o desliza - "Solo disponible en Lollipop." Efecto de nevada diff --git a/app/src/main/res/values-eu-rES/strings.xml b/app/src/main/res/values-eu-rES/strings.xml index 4e8836dd..7c05123f 100644 --- a/app/src/main/res/values-eu-rES/strings.xml +++ b/app/src/main/res/values-eu-rES/strings.xml @@ -44,7 +44,6 @@ Erreprodukzio ilara gorde Eskaneatu - Direktorioa eskaneatu Bilatu @@ -430,8 +429,6 @@ Orain erreproduzitzen pantailaren nabigazio gardena irekitzeko klikatu, irristatu gardentasunik gabeko nabigaziorako Klikatu edo irristatu - "Lollipop-en bakarrik eskuragarri" - Elur efektua Erabili erreproduzitzen ari den abestiaren azala blokeo-pantailako horma-paper gisa diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index dab6baf7..bd9d948e 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -49,7 +49,6 @@ Enregistrer la file d\'attente Scanner - Scanner le dossier Rechercher @@ -214,8 +213,6 @@ Plutôt Sombre - De Nuit par jour(alpha) - Pas de Paroles Supprimer la liste de lecture @@ -422,8 +419,6 @@ Personnaliser l\'écran de lecture 9+ thèmes d\'écran de lecture en cours - Sur - Uniquement via Wi-Fi Fonctions de test avancées @@ -488,8 +483,6 @@ Cliquez pour ouvrir avec ou glisser à sans navigation transparente de l\'écran de lecture Cliquez ou balayez - "Seulement disponible sur Lollipop." - Effet chute de neige Utiliser la couverture d\'album de la piste en cours de lecture comme fond sur l\'écran de verrouillage @@ -555,8 +548,6 @@ Contrôles de volume Informations utilisateur - Obtenir La Prime - Couleur primaire La couleur de thème primaire, par défaut bleu-gris, fonctionne maintenant avec les couleurs sombres @@ -638,8 +629,6 @@ Choisir la bannière photo - Sélection préréglage - Sélectionné Envoyer le journal du crash @@ -755,8 +744,6 @@ Mise à jour... - Mise à niveau vers premium - Nom d\'utilisateur version diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 4b21024a..4f6d4ce9 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -44,7 +44,6 @@ Spremi red reproduciranja Skeniraj - Skeniraj direktorij Traži @@ -434,8 +433,6 @@ Dodirnite za otvaranje ili klizanje bez prozirne navigacije zaslona za reprodukciju Klik ili klizanje - "Dostupno samo na Lollipop-u." - Efekt padanja snijega Koristite omot albuma trenutne pjesme kao pozadinu zaključanog zaslona. diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 919ba048..f1e7fa57 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -44,7 +44,6 @@ Lejátszási sor mentése Letapogatás - Szkennelési könyvtár Keresés @@ -389,8 +388,6 @@ Vedd figyelembe hogy ha bekapcsolod ezt gyorsabban fog merülni a telefonod. Tartsa bekapcsolva a képernyőt - "Csak a Lollipopon elérhető." - A jelenlegi zeneszámok albumborítóját zárolt háttérképként használja. Értesítések, navigáció stb. Blokkolja az album borítóját a zárolás képernyőjén. Problémákat okozhat harmadik féltől származó alkalmazásokkal és kütyükkel. diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index 2384cd20..3047bbf2 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -48,7 +48,6 @@ Simpan antrean pemutar Pindai - Pindai direktori Cari @@ -476,7 +475,6 @@ anda dapat berdonasi disini Klik atau geser untuk membuka layar sedang diputar Klik atau geser - "Hanya tersedia di Lollipop" Efek salju jatuh @@ -622,8 +620,6 @@ anda dapat berdonasi disini Pilih foto banner - Pilih Preset - Terpilih Kirim catatan kerusakan diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 77ca8fd0..c2c1c962 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -204,8 +204,6 @@ Gambar Layarkunci - "Hanya tersedia pada Lollipop." - Menggunakan gambar album sebagai latar layarkunci. Pemberitahuan, navigasi, dll. Kaburkan gambar album pada layarkunci. Dapat menyebabkan masalah pada apl pihak ketiga dan widget. diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index d9c2737a..ad5361cc 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -49,7 +49,6 @@ Salva coda Scansiona - Scansiona cartella Cerca @@ -214,8 +213,6 @@ Tipo buio - Chiaro Scuro (alpha) - Nessun testo Elimina playlist @@ -422,8 +419,6 @@ Personalizza la schermata riproduzione Più di 9 schermate di riproduzione - Acceso - Solo tramite Wi-fi Funzionalità avanzate @@ -488,8 +483,6 @@ Premi per aprire o scorri nella schermata di riproduzione Premi o scorri - "Disponibile solo con Lollipop" - Effetto neve Imposta la copertina del brano riprodotto come sfondo del blocco schermo @@ -555,8 +548,6 @@ Controlli volume Info utente - Ottieni premium - Colore primario Il colore primario del tema, blu-grigio di default, per ora funziona con colori scuri @@ -638,8 +629,6 @@ Seleziona la foto del banner - Seleziona preimpostato - Selezionato Invia registro errori @@ -755,8 +744,6 @@ Aggiornamento... - Passa a premium - Nome utente Versione diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index c681223b..2a185e6e 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -46,7 +46,6 @@ 再生キューを保存 スキャン - ディレクトリをスキャン 検索 @@ -466,8 +465,6 @@ 現在再生中の画面に移動せずに、クリックまたはスライドして開く クリックもしくはスライド - "Lollipop バージョンでのみ利用できます" - スノーフォールエフェクト 再生中のジャケットをロック画面の壁紙に適用する diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index a52f7d3b..651a09ee 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -310,8 +310,6 @@ 잠금 화면 재생목록 - "안드로이드 롤리팝에서만 사용할 수 있습니다." - 현재 재생 중인 노래의 앨범 커버를 잠금 화면 배경화면으로 사용합니다. 알림, 탐색 등 잠금 화면의 앨범 커버에 흐림 효과를 적용합니다. 서드 파티 앱 및 위젯에서 문제가 생길 수 있습니다. diff --git a/app/src/main/res/values-land/dimens.xml b/app/src/main/res/values-land/dimens.xml index 6c3a3c44..489db133 100644 --- a/app/src/main/res/values-land/dimens.xml +++ b/app/src/main/res/values-land/dimens.xml @@ -1,6 +1,4 @@ - 52dp 52dp - 52dp \ No newline at end of file diff --git a/app/src/main/res/values-land/integers.xml b/app/src/main/res/values-land/integers.xml index e6db0711..a6b3daec 100644 --- a/app/src/main/res/values-land/integers.xml +++ b/app/src/main/res/values-land/integers.xml @@ -1,4 +1,2 @@ - - 96 - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/values-ms/strings.xml b/app/src/main/res/values-ms/strings.xml index abc6ddae..ffdaaead 100644 --- a/app/src/main/res/values-ms/strings.xml +++ b/app/src/main/res/values-ms/strings.xml @@ -280,7 +280,6 @@ Skrin kunci Senarai main - "Hanya tersedia pada Lollipop." Menggunakan kulit album lagu semasa sebagai hias latar skrin kunci Pemberitahuan, pandu arah dan lain-lain. diff --git a/app/src/main/res/values-night/is_dark_mode.xml b/app/src/main/res/values-night/is_dark_mode.xml deleted file mode 100644 index 584f8e3f..00000000 --- a/app/src/main/res/values-night/is_dark_mode.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - true - \ 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 c76ed717..28348d25 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -265,8 +265,6 @@ Vergrendelscherm Afspeellijsten - "Alleen beschikbaar op Lollipop" - Gebruik de huidige cover als vergrendelscherm achtergrond. Notificaties, bediening etc. Vervaagt de album cover op het vergrendelscherm. Kan problemen veroorzaken met apps van derde en widgets/ diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 15ac130e..8fdbf7e5 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -49,7 +49,6 @@ Zapisz kolejkę Skanuj - Przeszukaj katalog Szukaj @@ -418,8 +417,6 @@ Dostosuj panel aktualnie odtwarzanych 9+ motywów Teraz odtwarzane - Włącz - Tylko przez Wi-Fi Zaawansowane funkcje eksperymentalne @@ -484,7 +481,6 @@ Kliknij aby otworzyć z lub przesunąć do przezroczystej nawigacji ekranu teraz odtwarzane Kliknij albo przesuń - "Dostępne tylko na Androidzie Lolipop" Efekt spadającego śniegu @@ -551,8 +547,6 @@ Sterowanie głośnością Informacje użytkownika - Kup Premium - Kolor podstawowy Główny kolor motywu, domyślnie niebieski, działa teraz z ciemnymi kolorami @@ -634,8 +628,6 @@ Wybierz zdjęcie banera - Wybierz zdefiniowane - Zaznaczone Zgłoś awarię @@ -751,8 +743,6 @@ Aktualizowanie... - Sięgnij po wersję Premium - Nazwa użytkownika Wersja diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 956aacf4..893d1c14 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -49,7 +49,6 @@ Salvar fila de reprodução Escanear - Escanear diretório Pesquisar @@ -214,8 +213,6 @@ Meio escuro - Day Night(alpha) - Sem letras Excluir playlist @@ -422,8 +419,6 @@ Personalizar tela de reprodução Incríveis 9 temas para a interface do reprodutor - Ligado - Apenas com Wi-Fi Recursos avançados em teste @@ -488,8 +483,6 @@ Clique para abrir ou deslizar sem a navegação transparente da tela que está sendo reproduzida agora Clique ou deslize - "Disponível apenas no Android Lollipop" - Efeito de neve caindo Usar a capa do álbum da música em reprodução como papel de parede na tela de bloqueio @@ -555,8 +548,6 @@ Controles do volume Informação do usuário - Obtenha o Premium - Cor primária A cor principal do tema por padrão é cinza azulado, por enquanto funciona com cores escuras @@ -638,8 +629,6 @@ Selecione a foto do mural - Selecionar predefinição - Selecionado Enviar log de falha @@ -756,8 +745,6 @@ Atualizando... - Atualize para o premium - Nome de usuário Versão diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index e57513c2..ee2ac001 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -310,8 +310,6 @@ Ecran de blocare Playlist-uri - "Valabil doar pe Lollipop" - Folosește coperta de album curentă ca imagine de fundal pe ecranul de blocare. Notificațiile, navigarea etc. Spălăcește coperta de album pe ecranul de blocare. Poate cauza probleme cu alte aplcicatii sau widget-uri. diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 4f2d6236..d7c0bab3 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -49,7 +49,6 @@ Сохранить очередь воспроизведения Сканировать - Сканирование каталога Поиск @@ -474,8 +473,6 @@ Нажмите, чтобы открыть экран воспроизведения с прозрачной навигации или проведите чтобы открыть без прозрачной навигации Нажмите или Проведите - "Доступно только на Lollipop." - Эффект снегопада Использовать обложку альбома текущей песни в качестве обоев на экране блокировки. diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index c762a3cd..dabfcc26 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -276,8 +276,6 @@ Zakljucan ekran Plejliste - "Dostupno samo na Android Lollipop-u" - Koristi omot albuma kao pozadinu kada se reprodukuje muzika Obavestenja, navigacija itd. Zamuti omot albuma na zakljucanom ekranu. (moze izazvati probleme sa drugim aplikacijama i vidzetima) diff --git a/app/src/main/res/values-sw600dp-land/dimens.xml b/app/src/main/res/values-sw600dp-land/dimens.xml deleted file mode 100644 index 507db6dc..00000000 --- a/app/src/main/res/values-sw600dp-land/dimens.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - 128dp - \ No newline at end of file diff --git a/app/src/main/res/values-sw600dp/dimens.xml b/app/src/main/res/values-sw600dp/dimens.xml deleted file mode 100644 index 4900bde3..00000000 --- a/app/src/main/res/values-sw600dp/dimens.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - 600dp - 32dp - \ No newline at end of file diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index b19033d2..bd920f5b 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -49,7 +49,6 @@ Oynatma kuyruğunu kaydet Tara - Tarama rehberi Ara @@ -214,8 +213,6 @@ Koyu - Gündüz Gece (alpha) - Şarkı sözü yok Çalma listesini sil @@ -422,8 +419,6 @@ Şimdi oynatılıyor ekranını özelleştirin 9+ şimdi oynatılıyor temaları - Açık - Sadece Wi-Fi ile Gelişmiş test özellikleri @@ -488,8 +483,6 @@ Çalmakta olan ekrana şeffaf gezinme olmadan açmak veya kaydırmak için tıklayın Tıkla veya Kaydır - "Sadece Lollipop'da kullanılabilir." - Kar yağışı efekti Çalmakta olan şarkı albüm kapağını kilit ekranı duvar kağıdı olarak kullanın @@ -555,8 +548,6 @@ Ses kontrolleri Kullanıcı bilgisi - Premium\'u al - Ana renk Ana tema rengi, varsayılanı mavi griye, şimdilik koyu renklerle çalışıyor @@ -638,8 +629,6 @@ Afiş fotoğrafını seçin - Ön ayar seç - Seçilmiş Çökme raporu gönder @@ -756,8 +745,6 @@ Güncelleniyor ... - Premium\'a yükselt - Kullanıcı Adı Sürüm diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 5941de59..4b2768e1 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -49,7 +49,6 @@ Lưu hàng đợi phát Quét - Quét thư mục Tìm kiếm @@ -481,8 +480,6 @@ tiếp tục xảy ra hãy \"Xóa dữ liệu ứng dụng\" Nhấp hoặc trượt để mở mà không cần điều hướng của màn hình đang phát Nhấp hoặc Trượt - "Chỉ có trên phiên bản Lollipop" - Hiệu ứng tuyết rơi Sử dụng ảnh bìa album bài hát đang phát làm ảnh nền màn hình khóa. @@ -548,8 +545,6 @@ tiếp tục xảy ra hãy \"Xóa dữ liệu ứng dụng\" Điều khiển âm lượng Thông tin người dùng - Nâng cấp Premium - Màu chủ đạo Màu sắc chủ đạo, mặc định là màu xanh xám, bây giờ hoạt động với màu tối @@ -629,8 +624,6 @@ tiếp tục xảy ra hãy \"Xóa dữ liệu ứng dụng\" Chọn ảnh biểu ngữ - Chọn Preset - Đã chọn Gửi bản ghi lỗi @@ -744,8 +737,6 @@ tiếp tục xảy ra hãy \"Xóa dữ liệu ứng dụng\" Đang cập nhật... - Nâng cấp lên Premium - Tên người dùng Phiên bản diff --git a/app/src/main/res/values-xlarge/dimens.xml b/app/src/main/res/values-xlarge/dimens.xml index cecf6e52..0e0dab15 100644 --- a/app/src/main/res/values-xlarge/dimens.xml +++ b/app/src/main/res/values-xlarge/dimens.xml @@ -5,5 +5,4 @@ 64dp 16dp 72dp - 128dp diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index f4618170..6f817ecc 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -1,5 +1,5 @@ - + 团队,社交链接 主题色 @@ -46,7 +46,6 @@ 保存播放队列 扫描 - 目录扫描 搜索 @@ -73,7 +72,7 @@ 添加歌词 - 添加\n头像 + 添加\n头像 "添加到播放列表" @@ -116,9 +115,9 @@ 自动 - 基础颜色主题 + 基础颜色主题 - 低音增强 + 低音增强 个性签名 @@ -144,7 +143,7 @@ 请输入问题标题 请输入您有效的 GitHub 用户名 出错了,如一直崩溃请尝试清除应用数据或发送邮件给开发者 - 提交此报告 + 提交此报告 使用 GitHub 帐户发送 取消 @@ -157,13 +156,13 @@ 卡片 - 圆盘传送带 + 圆盘传送带 在播放界面使用轮播效果 层叠 - 投射 + 投射 更新日志 @@ -171,7 +170,7 @@ 圆形 - 古典 + 古典 清空 @@ -188,7 +187,7 @@ 颜色 - 颜色 + 颜色 更多颜色 @@ -211,7 +210,7 @@ 暗夜黑 - 暂无歌词 + 暂无歌词 删除播放列表 %1$s 吗?]]> @@ -247,7 +246,7 @@ 编辑 - 编辑专辑封面 + 编辑专辑封面 空空如也 @@ -280,7 +279,7 @@ 在GitHub上克隆项目 - 加入Google+社区获得帮助或者更新信息 + 加入Google+社区获得帮助或者更新信息 1 2 @@ -325,7 +324,7 @@ 最后一首 - 来点音乐吧! + 来点音乐吧! 音乐库 @@ -426,7 +425,7 @@ 从本地选取 - 选择图片 + 选择图片 Pinterest 在 Pintrest 页面关注 Retro Music 的设计灵感 @@ -444,7 +443,7 @@ 播放列表 - 专辑详细风格 + 专辑详细风格 应用于模糊主题,数值越低加载越快 模糊值 @@ -462,12 +461,11 @@ 请注意,启用此功能可能会降低电池续航时间 保持屏幕常亮 - 点击打开或者滑动到非正在播放界面的透明导航栏 - 单击或划动 + 点击打开或者滑动到非正在播放界面的透明导航栏 + 单击或划动 - "仅在Android 5.x(Lollipop)上可用" - 降雪效果 + 降雪效果 将正在播放的歌曲专辑封面设置为锁屏壁纸 系统音响起或消息提醒时降低音量 @@ -479,19 +477,19 @@ 使用经典通知栏设计 背景色以及控件色跟随正在播放界面的专辑封面变化 将快捷方式颜色更改为强调色,每次颜色更改后需要切换一下该设置才能生效 - 修改导航栏颜色为主调色 + 修改导航栏颜色为主调色 "\u4ee5\u5c01\u9762\u7684\u4e3b\u8272\u8c03\u914d\u7f6e\u901a\u77e5\u680f\u989c\u8272" 从专辑封面或艺术家图中选取主色调 给迷你播放器添加额外控件 "在一些设备上可能会播放异常" - 切换流派标签 + 切换流派标签 切换主页横幅样式 可以提高封面质量,但加载时间较慢 (建议只在不满意图片分辨率过低时开启) 使用Retro Music的自定义锁屏 开源许可详情 使应用边角圆滑 - 切换底部导航栏的标签标题 + 切换底部导航栏的标签标题 沉浸式 检测到耳机后自动播放 播放新列表时关闭随机播放 @@ -507,20 +505,20 @@ 自动下载艺术家图片 黑名单 模糊专辑封面 - 选择均衡器 + 选择均衡器 经典通知栏设计 自适应颜色 带颜色的通知栏 额外控件 无间隙连续播放 应用主题 - 显示流派标签 + 显示流派标签 主页艺术家网格 主页横幅 忽略多媒体商店封面 上次添加播放列表到现在的间隔 全屏控件 - 带颜色的导航栏 + 带颜色的导航栏 播放主题 开源许可 边角 @@ -528,20 +526,20 @@ 轮播效果 主色调 全屏应用 - 标签标题 + 标签标题 音频播放 随机播放 音量控件 - 用户信息 + 用户信息 - 主颜色 - 默认蓝灰色为主要颜色,目前使用深色 + 主颜色 + 默认蓝灰色为主要颜色,目前使用深色 个人概况 购买 - *购买前请先考虑,不要征询退款。 + *购买前请先考虑,不要征询退款。 队列 @@ -585,7 +583,7 @@ 恢复购买中 ... - Retro Music 均衡器 + Retro Music 均衡器 Retro Music高级版 @@ -630,9 +628,9 @@ 睡眠定时已取消 睡眠定时器设置为%d分钟。 - 滑动 + 滑动 - 小专辑 + 小专辑 社交 @@ -655,9 +653,9 @@ 搜索媒体库 - 建议 + 建议 - 仅仅在主页上显示你的名字 + 仅仅在主页上显示你的名字 支持开发者 @@ -665,7 +663,7 @@ 滚动歌词 - 系统均衡器 + 系统均衡器 Telegram @@ -685,15 +683,15 @@ 标题 - 仪表盘 + 仪表盘 - 下午好 - 美好的一天 - 傍晚好 - 早上好 - 晚上好 + 下午好 + 美好的一天 + 傍晚好 + 早上好 + 晚上好 - 你的名字是什么 + 你的名字是什么 今日 @@ -728,7 +726,7 @@ 垂直滚动 - 虚拟器 + 虚拟器 网络搜索 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 9cebc4a8..adeb57cf 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -49,7 +49,6 @@ 儲存播放清單 掃描 - 掃描資料夾 搜尋 @@ -214,8 +213,6 @@ 暗黑 - 夜間模式(Alpha) - 沒有歌詞 移除播放清單 @@ -422,8 +419,6 @@ 個人化現在播放界面 9+ 現在播放介面主題 - 開啟 - 僅透過Wi-Fi 進階測試功能 @@ -488,8 +483,6 @@ 點擊或滑動開啟無透明現在播放導航欄 點擊或滑動 - "只適合於Lollipop。" - 雪花效果 使用現在播放歌曲的專輯圖片來用作鎖定畫面背景圖片 @@ -555,8 +548,6 @@ 音量控制 使用者資料 - 獲得Premium - 原色 主原色預設為灰藍色,現在適用於深色色彩 @@ -638,8 +629,6 @@ 選擇橫幅圖片 - 選擇預定設置 - 已選 傳送報告 @@ -755,8 +744,6 @@ 更新中... - 升級至Premium - 用戶名稱 版本 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index a9909f8f..fcb8c208 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -233,8 +233,6 @@ 圖片 鎖定螢幕 - "只適用於 Lollipop。" - 將播放中歌曲的專輯封面設為鎖定螢幕背景。 通知鈴聲、導航語音等。 在鎖定畫面上模糊化專輯圖片。第三方程式和小工具可能不正常運作。 diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index a628637b..15178800 100755 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -102,9 +102,6 @@ never - - @layout/activity_album - @string/today @@ -174,29 +171,9 @@ https://cdn.techjuice.pk/wp-content/uploads/2016/07/1.png - - @string/system_equalizer - @string/retro_equalizer - - - - system - retro - - - - @string/normal - @string/small - @layout/activity_album - - 0 - 1 - - - \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index fda58cdb..d1335b93 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -9,8 +9,6 @@ #121212 #2C2D30 #121212 - #1E1E1E - #000000 #FFFFFF #202020 diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 66325418..42c15480 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -2,7 +2,6 @@ 0dp 4dp - 16dp 2dp @@ -11,30 +10,12 @@ 48dp - 5dp - 4dp - 16dp - - - 20sp - 112dp - - - - - 8dp 48dp - - - 96dp 96dp 250dp @@ -50,24 +31,18 @@ http://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout 56dp 250dp - 64dp 128dp 2dp 12dp 32dp - 0dp - 0dp 104dp 30dp - 56dp - 4dp 8dp 48dp 0dp 52dp 10dp 4dp - 8dp 14dp diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index 37ac3ee4..d83ae81b 100755 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -11,9 +11,7 @@ Retro Music - Google Plus GitHub - Social Buttons @string/last_added diff --git a/app/src/main/res/values/integers.xml b/app/src/main/res/values/integers.xml index 5f560a32..3402473b 100644 --- a/app/src/main/res/values/integers.xml +++ b/app/src/main/res/values/integers.xml @@ -12,5 +12,4 @@ 6 200 - 240 \ No newline at end of file diff --git a/app/src/main/res/values/is_dark_mode.xml b/app/src/main/res/values/is_dark_mode.xml deleted file mode 100644 index ef08b381..00000000 --- a/app/src/main/res/values/is_dark_mode.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - false - \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a0710b71..c4715a46 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -35,7 +35,6 @@ Rename Save playing queue Scan - Scan directory Search Start Set as ringtone @@ -66,7 +65,6 @@ The title or artist is empty. Albums - Albums Always @@ -84,7 +82,6 @@ Artist Artists - Artists Audio focus denied. Change the sound settings and adjust the equalizer controls @@ -177,8 +174,6 @@ Kinda Dark - Day Night(alpha) - No Lyrics Delete playlist @@ -248,7 +243,6 @@ Genre Genres - Genres Fork the project on GitHub @@ -267,7 +261,6 @@ Hinge History - History Home @@ -363,8 +356,6 @@ Customize the now playing screen 9+ now playing themes - On - Only on Wi-Fi Advanced testing features @@ -402,7 +393,6 @@ Playlist name Playlists - Playlists Album detail style Amount of blur applied for blur themes, lower is faster @@ -423,7 +413,7 @@ Keep the screen on Click to open with or slide to without transparent navigation of now playing screen Click or Slide - "Only available on Lollipop." + Snow fall effect Use the currently playing song album cover as the lockscreen wallpaper Lower the volume when a system sound is played or a notification is received @@ -489,8 +479,6 @@ Volume controls User info - Get Premium - Primary color The primary theme color, defaults to blue grey, for now works with dark colors @@ -502,7 +490,6 @@ *Think before buying, don\'t ask for refund. Queue - Queue Rate the app Love this app? Let us know in the Google Play Store how we can make it even better @@ -551,8 +538,6 @@ Select your SD card in navigation drawer Do not open any sub-folders Tap \'select\' button at the bottom of the screen - File access required. Pick %s - SD card access required. Please pick root directory of SD card File write failed: %s Save @@ -573,7 +558,6 @@ Select all Select banner photo - Select preset Selected @@ -658,7 +642,6 @@ Top albums Top artists - Top Tracks "Track (2 for track 2 or 3004 for CD3 track 4)" Track number @@ -679,8 +662,6 @@ Updating… - Upgrade to premium - Username Version @@ -709,4 +690,6 @@ You will be forwarded to the issue tracker website. Your account data is only used for authentication. + + More from %s diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 5ba325cd..713d6170 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -48,14 +48,6 @@ 0.0125 - - - - - - - - - - - - - - - - - - - - @@ -213,11 +149,6 @@ @font/circular - - - - - - - - - - - - - - - - - -