diff --git a/app/src/main/java/com/kabouzeid/gramophone/dialogs/LyricsDialog.java b/app/src/main/java/com/kabouzeid/gramophone/dialogs/LyricsDialog.java deleted file mode 100644 index 18d6d5f0..00000000 --- a/app/src/main/java/com/kabouzeid/gramophone/dialogs/LyricsDialog.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.kabouzeid.gramophone.dialogs; - -import android.app.Dialog; -import android.os.Bundle; -import androidx.annotation.NonNull; -import androidx.fragment.app.DialogFragment; - -import com.afollestad.materialdialogs.MaterialDialog; -import com.kabouzeid.gramophone.model.lyrics.Lyrics; - -/** - * @author Karim Abou Zeid (kabouzeid) - */ -public class LyricsDialog extends DialogFragment { - public static LyricsDialog create(@NonNull Lyrics lyrics) { - LyricsDialog dialog = new LyricsDialog(); - Bundle args = new Bundle(); - args.putString("title", lyrics.song.title); - args.putString("lyrics", lyrics.getText()); - dialog.setArguments(args); - return dialog; - } - - @NonNull - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - //noinspection ConstantConditions - return new MaterialDialog.Builder(getActivity()) - .title(getArguments().getString("title")) - .content(getArguments().getString("lyrics")) - .build(); - } -} diff --git a/app/src/main/java/com/kabouzeid/gramophone/model/lyrics/AbsSynchronizedLyrics.java b/app/src/main/java/com/kabouzeid/gramophone/model/lyrics/AbsSynchronizedLyrics.java deleted file mode 100644 index 6ae8de9a..00000000 --- a/app/src/main/java/com/kabouzeid/gramophone/model/lyrics/AbsSynchronizedLyrics.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.kabouzeid.gramophone.model.lyrics; - -import android.util.SparseArray; - -public abstract class AbsSynchronizedLyrics extends Lyrics { - private static final int TIME_OFFSET_MS = 500; // time adjustment to display line before it actually starts - - protected final SparseArray lines = new SparseArray<>(); - protected int offset = 0; - - public String getLine(int time) { - time += offset + AbsSynchronizedLyrics.TIME_OFFSET_MS; - - int lastLineTime = lines.keyAt(0); - - for (int i = 0; i < lines.size(); i++) { - int lineTime = lines.keyAt(i); - - if (time >= lineTime) { - lastLineTime = lineTime; - } else { - break; - } - } - - return lines.get(lastLineTime); - } - - public boolean isSynchronized() { - return true; - } - - public boolean isValid() { - parse(true); - return valid; - } - - @Override - public String getText() { - parse(false); - - if (valid) { - StringBuilder sb = new StringBuilder(); - - for (int i = 0; i < lines.size(); i++) { - String line = lines.valueAt(i); - sb.append(line).append("\r\n"); - } - - return sb.toString().trim().replaceAll("(\r?\n){3,}", "\r\n\r\n"); - } - - return super.getText(); - } -} diff --git a/app/src/main/java/com/kabouzeid/gramophone/model/lyrics/Lyrics.java b/app/src/main/java/com/kabouzeid/gramophone/model/lyrics/Lyrics.java deleted file mode 100644 index eb6d54eb..00000000 --- a/app/src/main/java/com/kabouzeid/gramophone/model/lyrics/Lyrics.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.kabouzeid.gramophone.model.lyrics; - -import com.kabouzeid.gramophone.model.Song; - -import java.util.ArrayList; -import java.util.List; - -public class Lyrics { - private static final List> FORMATS = new ArrayList<>(); - - public Song song; - public String data; - - protected boolean parsed = false; - protected boolean valid = false; - - public Lyrics setData(Song song, String data) { - this.song = song; - this.data = data; - return this; - } - - public static Lyrics parse(Song song, String data) { - for (Class format : Lyrics.FORMATS) { - try { - Lyrics lyrics = format.newInstance().setData(song, data); - if (lyrics.isValid()) return lyrics.parse(false); - } catch (Exception e) { - e.printStackTrace(); - } - } - return new Lyrics().setData(song, data).parse(false); - } - - public static boolean isSynchronized(String data) { - for (Class format : Lyrics.FORMATS) { - try { - Lyrics lyrics = format.newInstance().setData(null, data); - if (lyrics.isValid()) return true; - } catch (Exception e) { - e.printStackTrace(); - } - } - return false; - } - - public Lyrics parse(boolean check) { - this.valid = true; - this.parsed = true; - return this; - } - - public boolean isSynchronized() { - return false; - } - - public boolean isValid() { - this.parse(true); - return this.valid; - } - - public String getText() { - return this.data.trim().replaceAll("(\r?\n){3,}", "\r\n\r\n"); - } - - static { - Lyrics.FORMATS.add(SynchronizedLyricsLRC.class); - } -} diff --git a/app/src/main/java/com/kabouzeid/gramophone/model/lyrics/SynchronizedLyricsLRC.java b/app/src/main/java/com/kabouzeid/gramophone/model/lyrics/SynchronizedLyricsLRC.java deleted file mode 100644 index 3d1e3632..00000000 --- a/app/src/main/java/com/kabouzeid/gramophone/model/lyrics/SynchronizedLyricsLRC.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.kabouzeid.gramophone.model.lyrics; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -class SynchronizedLyricsLRC extends AbsSynchronizedLyrics { - private static final Pattern LRC_LINE_PATTERN = Pattern.compile("((?:\\[.*?\\])+)(.*)"); - private static final Pattern LRC_TIME_PATTERN = Pattern.compile("\\[(\\d+):(\\d{2}(?:\\.\\d+)?)\\]"); - private static final Pattern LRC_ATTRIBUTE_PATTERN = Pattern.compile("\\[(\\D+):(.+)\\]"); - - private static final float LRC_SECONDS_TO_MS_MULTIPLIER = 1000f; - private static final int LRC_MINUTES_TO_MS_MULTIPLIER = 60000; - - @Override - public SynchronizedLyricsLRC parse(boolean check) { - if (this.parsed || this.data == null || this.data.isEmpty()) { - return this; - } - - String[] lines = this.data.split("\r?\n"); - - for (String line : lines) { - line = line.trim(); - if (line.isEmpty()) { - continue; - } - - Matcher attrMatcher = SynchronizedLyricsLRC.LRC_ATTRIBUTE_PATTERN.matcher(line); - if (attrMatcher.find()) { - try { - String attr = attrMatcher.group(1).toLowerCase().trim(); - String value = attrMatcher.group(2).toLowerCase().trim(); - switch (attr) { - case "offset": - this.offset = Integer.parseInt(value); - break; - } - } catch (Exception ex) { - ex.printStackTrace(); - } - } else { - Matcher matcher = SynchronizedLyricsLRC.LRC_LINE_PATTERN.matcher(line); - if (matcher.find()) { - String time = matcher.group(1); - String text = matcher.group(2); - - Matcher timeMatcher = SynchronizedLyricsLRC.LRC_TIME_PATTERN.matcher(time); - while (timeMatcher.find()) { - int m = 0; - float s = 0f; - try { - m = Integer.parseInt(timeMatcher.group(1)); - s = Float.parseFloat(timeMatcher.group(2)); - } catch (NumberFormatException ex) { - ex.printStackTrace(); - } - int ms = (int) (s * LRC_SECONDS_TO_MS_MULTIPLIER) + m * LRC_MINUTES_TO_MS_MULTIPLIER; - - this.valid = true; - if (check) return this; - - this.lines.append(ms, text); - } - } - } - } - - this.parsed = true; - - return this; - } -} diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerAlbumCoverFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerAlbumCoverFragment.java index 814483bd..9bf66c6f 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerAlbumCoverFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerAlbumCoverFragment.java @@ -11,19 +11,13 @@ import android.view.View; import android.view.ViewGroup; import android.view.animation.AccelerateInterpolator; import android.view.animation.DecelerateInterpolator; -import android.widget.FrameLayout; import android.widget.ImageView; -import android.widget.TextView; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.adapter.AlbumCoverPagerAdapter; import com.kabouzeid.gramophone.helper.MusicPlayerRemote; -import com.kabouzeid.gramophone.helper.MusicProgressViewUpdateHelper; import com.kabouzeid.gramophone.misc.SimpleAnimatorListener; -import com.kabouzeid.gramophone.model.lyrics.AbsSynchronizedLyrics; -import com.kabouzeid.gramophone.model.lyrics.Lyrics; import com.kabouzeid.gramophone.ui.fragments.AbsMusicServiceFragment; -import com.kabouzeid.gramophone.util.PreferenceUtil; import com.kabouzeid.gramophone.util.ViewUtil; import butterknife.BindView; @@ -33,7 +27,7 @@ import butterknife.Unbinder; /** * @author Karim Abou Zeid (kabouzeid) */ -public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements ViewPager.OnPageChangeListener, MusicProgressViewUpdateHelper.Callback { +public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements ViewPager.OnPageChangeListener { public static final int VISIBILITY_ANIM_DURATION = 300; @@ -44,19 +38,9 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements @BindView(R.id.player_favorite_icon) ImageView favoriteIcon; - @BindView(R.id.player_lyrics) - FrameLayout lyricsLayout; - @BindView(R.id.player_lyrics_line1) - TextView lyricsLine1; - @BindView(R.id.player_lyrics_line2) - TextView lyricsLine2; - private Callbacks callbacks; private int currentPosition; - private Lyrics lyrics; - private MusicProgressViewUpdateHelper progressViewUpdateHelper; - @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_player_album_cover, container, false); @@ -85,15 +69,12 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements return gestureDetector.onTouchEvent(event); } }); - progressViewUpdateHelper = new MusicProgressViewUpdateHelper(this, 500, 1000); - progressViewUpdateHelper.start(); } @Override public void onDestroyView() { super.onDestroyView(); viewPager.removeOnPageChangeListener(this); - progressViewUpdateHelper.stop(); unbinder.unbind(); } @@ -176,40 +157,6 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements .start(); } - private boolean isLyricsLayoutVisible() { - return lyrics != null && lyrics.isSynchronized() && lyrics.isValid() && PreferenceUtil.getInstance(getActivity()).synchronizedLyricsShow(); - } - - private boolean isLyricsLayoutBound() { - return lyricsLayout != null && lyricsLine1 != null && lyricsLine2 != null; - } - - private void hideLyricsLayout() { - lyricsLayout.animate().alpha(0f).setDuration(PlayerAlbumCoverFragment.VISIBILITY_ANIM_DURATION).withEndAction(() -> { - if (!isLyricsLayoutBound()) return; - lyricsLayout.setVisibility(View.GONE); - lyricsLine1.setText(null); - lyricsLine2.setText(null); - }); - } - - public void setLyrics(Lyrics l) { - lyrics = l; - - if (!isLyricsLayoutBound()) return; - - if (!isLyricsLayoutVisible()) { - hideLyricsLayout(); - return; - } - - lyricsLine1.setText(null); - lyricsLine2.setText(null); - - lyricsLayout.setVisibility(View.VISIBLE); - lyricsLayout.animate().alpha(1f).setDuration(PlayerAlbumCoverFragment.VISIBILITY_ANIM_DURATION); - } - private void notifyColorChange(int color) { if (callbacks != null) callbacks.onColorChanged(color); } @@ -218,44 +165,6 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements callbacks = listener; } - @Override - public void onUpdateProgressViews(int progress, int total) { - if (!isLyricsLayoutBound()) return; - - if (!isLyricsLayoutVisible()) { - hideLyricsLayout(); - return; - } - - if (!(lyrics instanceof AbsSynchronizedLyrics)) return; - AbsSynchronizedLyrics synchronizedLyrics = (AbsSynchronizedLyrics) lyrics; - - lyricsLayout.setVisibility(View.VISIBLE); - lyricsLayout.setAlpha(1f); - - String oldLine = lyricsLine2.getText().toString(); - String line = synchronizedLyrics.getLine(progress); - - if (!oldLine.equals(line) || oldLine.isEmpty()) { - lyricsLine1.setText(oldLine); - lyricsLine2.setText(line); - - lyricsLine1.setVisibility(View.VISIBLE); - lyricsLine2.setVisibility(View.VISIBLE); - - lyricsLine2.measure(View.MeasureSpec.makeMeasureSpec(lyricsLine2.getMeasuredWidth(), View.MeasureSpec.EXACTLY), View.MeasureSpec.UNSPECIFIED); - int h = lyricsLine2.getMeasuredHeight(); - - lyricsLine1.setAlpha(1f); - lyricsLine1.setTranslationY(0f); - lyricsLine1.animate().alpha(0f).translationY(-h).setDuration(PlayerAlbumCoverFragment.VISIBILITY_ANIM_DURATION); - - lyricsLine2.setAlpha(0f); - lyricsLine2.setTranslationY(h); - lyricsLine2.animate().alpha(1f).translationY(0f).setDuration(PlayerAlbumCoverFragment.VISIBILITY_ANIM_DURATION); - } - } - public interface Callbacks { void onColorChanged(int color); @@ -263,4 +172,4 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements void onToolbarToggled(); } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerFragment.java index f7f6074e..f80fcb4a 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerFragment.java @@ -17,9 +17,8 @@ import androidx.cardview.widget.CardView; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.appcompat.widget.Toolbar; -import android.text.TextUtils; + import android.view.LayoutInflater; -import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewAnimationUtils; @@ -40,12 +39,10 @@ import com.kabouzeid.appthemehelper.util.ToolbarContentTintHelper; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.adapter.base.MediaEntryViewHolder; import com.kabouzeid.gramophone.adapter.song.PlayingQueueAdapter; -import com.kabouzeid.gramophone.dialogs.LyricsDialog; import com.kabouzeid.gramophone.dialogs.SongShareDialog; import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.helper.menu.SongMenuHelper; import com.kabouzeid.gramophone.model.Song; -import com.kabouzeid.gramophone.model.lyrics.Lyrics; import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity; import com.kabouzeid.gramophone.ui.fragments.player.AbsPlayerFragment; import com.kabouzeid.gramophone.ui.fragments.player.PlayerAlbumCoverFragment; @@ -93,9 +90,6 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum private RecyclerViewDragDropManager recyclerViewDragDropManager; private AsyncTask updateIsFavoriteTask; - private AsyncTask updateLyricsAsyncTask; - - private Lyrics lyrics; private Impl impl; @@ -183,7 +177,6 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum updateQueue(); updateCurrentSong(); updateIsFavorite(); - updateLyrics(); } @Override @@ -191,7 +184,6 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum updateCurrentSong(); updateIsFavorite(); updateQueuePosition(); - updateLyrics(); } @Override @@ -239,17 +231,6 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum toolbar.setOnMenuItemClickListener(this); } - @Override - public boolean onMenuItemClick(MenuItem item) { - switch (item.getItemId()) { - case R.id.action_show_lyrics: - if (lyrics != null) - LyricsDialog.create(lyrics).show(getFragmentManager(), "LYRICS"); - return true; - } - return super.onMenuItemClick(item); - } - private void setUpRecyclerView() { recyclerViewDragDropManager = new RecyclerViewDragDropManager(); final GeneralItemAnimator animator = new RefactoredDefaultItemAnimator(); @@ -303,56 +284,6 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum }.execute(MusicPlayerRemote.getCurrentSong()); } - private void updateLyrics() { - if (updateLyricsAsyncTask != null) updateLyricsAsyncTask.cancel(false); - final Song song = MusicPlayerRemote.getCurrentSong(); - updateLyricsAsyncTask = new AsyncTask() { - @Override - protected void onPreExecute() { - super.onPreExecute(); - lyrics = null; - playerAlbumCoverFragment.setLyrics(null); - toolbar.getMenu().removeItem(R.id.action_show_lyrics); - } - - @Override - protected Lyrics doInBackground(Void... params) { - String data = MusicUtil.getLyrics(song); - if (TextUtils.isEmpty(data)) { - return null; - } - return Lyrics.parse(song, data); - } - - @Override - protected void onPostExecute(Lyrics l) { - lyrics = l; - playerAlbumCoverFragment.setLyrics(lyrics); - if (lyrics == null) { - if (toolbar != null) { - toolbar.getMenu().removeItem(R.id.action_show_lyrics); - } - } else { - Activity activity = getActivity(); - if (toolbar != null && activity != null) - if (toolbar.getMenu().findItem(R.id.action_show_lyrics) == null) { - int color = ToolbarContentTintHelper.toolbarContentColor(activity, Color.TRANSPARENT); - Drawable drawable = ImageUtil.getTintedVectorDrawable(activity, R.drawable.ic_comment_text_outline_white_24dp, color); - toolbar.getMenu() - .add(Menu.NONE, R.id.action_show_lyrics, Menu.NONE, R.string.action_show_lyrics) - .setIcon(drawable) - .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); - } - } - } - - @Override - protected void onCancelled(Lyrics s) { - onPostExecute(null); - } - }.execute(); - } - @Override @ColorInt public int getPaletteColor() { diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerFragment.java index 948d043c..ce0fde0d 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerFragment.java @@ -10,14 +10,12 @@ import android.os.AsyncTask; import android.os.Bundle; import androidx.annotation.ColorInt; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.appcompat.widget.Toolbar; -import android.text.TextUtils; + import android.view.LayoutInflater; -import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; @@ -37,12 +35,10 @@ import com.kabouzeid.appthemehelper.util.ToolbarContentTintHelper; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.adapter.base.MediaEntryViewHolder; import com.kabouzeid.gramophone.adapter.song.PlayingQueueAdapter; -import com.kabouzeid.gramophone.dialogs.LyricsDialog; import com.kabouzeid.gramophone.dialogs.SongShareDialog; import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.helper.menu.SongMenuHelper; import com.kabouzeid.gramophone.model.Song; -import com.kabouzeid.gramophone.model.lyrics.Lyrics; import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity; import com.kabouzeid.gramophone.ui.fragments.player.AbsPlayerFragment; import com.kabouzeid.gramophone.ui.fragments.player.PlayerAlbumCoverFragment; @@ -63,12 +59,10 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum @BindView(R.id.player_status_bar) View playerStatusBar; - @Nullable @BindView(R.id.toolbar_container) FrameLayout toolbarContainer; @BindView(R.id.player_toolbar) Toolbar toolbar; - @Nullable @BindView(R.id.player_sliding_layout) SlidingUpPanelLayout slidingUpPanelLayout; @BindView(R.id.player_recycler_view) @@ -89,9 +83,6 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum private RecyclerViewDragDropManager recyclerViewDragDropManager; private AsyncTask updateIsFavoriteTask; - private AsyncTask updateLyricsAsyncTask; - - private Lyrics lyrics; private Impl impl; @@ -178,7 +169,6 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum updateQueue(); updateCurrentSong(); updateIsFavorite(); - updateLyrics(); } @Override @@ -186,7 +176,6 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum updateCurrentSong(); updateIsFavorite(); updateQueuePosition(); - updateLyrics(); } @Override @@ -234,17 +223,6 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum toolbar.setOnMenuItemClickListener(this); } - @Override - public boolean onMenuItemClick(MenuItem item) { - switch (item.getItemId()) { - case R.id.action_show_lyrics: - if (lyrics != null) - LyricsDialog.create(lyrics).show(getFragmentManager(), "LYRICS"); - return true; - } - return super.onMenuItemClick(item); - } - private void setUpRecyclerView() { recyclerViewDragDropManager = new RecyclerViewDragDropManager(); final GeneralItemAnimator animator = new RefactoredDefaultItemAnimator(); @@ -298,56 +276,6 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum }.execute(MusicPlayerRemote.getCurrentSong()); } - private void updateLyrics() { - if (updateLyricsAsyncTask != null) updateLyricsAsyncTask.cancel(false); - final Song song = MusicPlayerRemote.getCurrentSong(); - updateLyricsAsyncTask = new AsyncTask() { - @Override - protected void onPreExecute() { - super.onPreExecute(); - lyrics = null; - playerAlbumCoverFragment.setLyrics(null); - toolbar.getMenu().removeItem(R.id.action_show_lyrics); - } - - @Override - protected Lyrics doInBackground(Void... params) { - String data = MusicUtil.getLyrics(song); - if (TextUtils.isEmpty(data)) { - return null; - } - return Lyrics.parse(song, data); - } - - @Override - protected void onPostExecute(Lyrics l) { - lyrics = l; - playerAlbumCoverFragment.setLyrics(lyrics); - if (lyrics == null) { - if (toolbar != null) { - toolbar.getMenu().removeItem(R.id.action_show_lyrics); - } - } else { - Activity activity = getActivity(); - if (toolbar != null && activity != null) - if (toolbar.getMenu().findItem(R.id.action_show_lyrics) == null) { - int color = ToolbarContentTintHelper.toolbarContentColor(activity, Color.TRANSPARENT); - Drawable drawable = ImageUtil.getTintedVectorDrawable(activity, R.drawable.ic_comment_text_outline_white_24dp, color); - toolbar.getMenu() - .add(Menu.NONE, R.id.action_show_lyrics, Menu.NONE, R.string.action_show_lyrics) - .setIcon(drawable) - .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); - } - } - } - - @Override - protected void onCancelled(Lyrics s) { - onPostExecute(null); - } - }.execute(); - } - @Override @ColorInt public int getPaletteColor() { diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java index 2b6aa498..82d9d897 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java @@ -10,7 +10,7 @@ import android.net.Uri; import android.os.Environment; import android.provider.BaseColumns; import android.provider.MediaStore; -import android.provider.Settings; + import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.FileProvider; @@ -27,17 +27,11 @@ import com.kabouzeid.gramophone.model.Artist; import com.kabouzeid.gramophone.model.Genre; import com.kabouzeid.gramophone.model.Playlist; import com.kabouzeid.gramophone.model.Song; -import com.kabouzeid.gramophone.model.lyrics.AbsSynchronizedLyrics; - -import org.jaudiotagger.audio.AudioFileIO; -import org.jaudiotagger.tag.FieldKey; import java.io.File; import java.io.IOException; -import java.util.ArrayList; import java.util.List; import java.util.Locale; -import java.util.regex.Pattern; /** * @author Karim Abou Zeid (kabouzeid) @@ -323,56 +317,4 @@ public class MusicUtil { if (musicMediaTitle.isEmpty()) return ""; return String.valueOf(musicMediaTitle.charAt(0)).toUpperCase(); } - - @Nullable - public static String getLyrics(Song song) { - String lyrics = null; - - File file = new File(song.data); - - try { - lyrics = AudioFileIO.read(file).getTagOrCreateDefault().getFirst(FieldKey.LYRICS); - } catch (Exception e) { - e.printStackTrace(); - } - - if (lyrics == null || lyrics.trim().isEmpty() || !AbsSynchronizedLyrics.isSynchronized(lyrics)) { - File dir = file.getAbsoluteFile().getParentFile(); - - if (dir != null && dir.exists() && dir.isDirectory()) { - String format = ".*%s.*\\.(lrc|txt)"; - String filename = Pattern.quote(FileUtil.stripExtension(file.getName())); - String songtitle = Pattern.quote(song.title); - - final List patterns = new ArrayList<>(); - patterns.add(Pattern.compile(String.format(format, filename), Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE)); - patterns.add(Pattern.compile(String.format(format, songtitle), Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE)); - - File[] files = dir.listFiles(f -> { - for (Pattern pattern : patterns) { - if (pattern.matcher(f.getName()).matches()) return true; - } - return false; - }); - - if (files != null && files.length > 0) { - for (File f : files) { - try { - String newLyrics = FileUtil.read(f); - if (newLyrics != null && !newLyrics.trim().isEmpty()) { - if (AbsSynchronizedLyrics.isSynchronized(newLyrics)) { - return newLyrics; - } - lyrics = newLyrics; - } - } catch (Exception e) { - e.printStackTrace(); - } - } - } - } - } - - return lyrics; - } } diff --git a/app/src/main/res/layout/card_special_thanks.xml b/app/src/main/res/layout/card_special_thanks.xml index 7e597f97..963d4453 100644 --- a/app/src/main/res/layout/card_special_thanks.xml +++ b/app/src/main/res/layout/card_special_thanks.xml @@ -105,7 +105,7 @@ - - - - - - - - فنان الألبوم السنة "المقطع (2 للمقطع 2 أو 3004 لـCD3 للمقطع 4)" - كلمات الأغاني التفاصيل اسم الملف مسار الملف @@ -85,7 +84,6 @@ خلط قائمة التشغيل مسح قائمة التشغيل حفظ قائمة التشغيل - عرض كلمات الأغاني فاتح غامق دائماً @@ -117,7 +115,6 @@ تشغيل بدون فواصل خفض الصوت عند فقدان التركيز فترة قائمة تشغيل المضافة مؤخراً - عرض كلمات الأغاني المتزامنة تذكر آخر لسان "شغل أغنية أولاً، ثم حاول مرة أخرى." حذف @@ -149,7 +146,6 @@ تلوين شريط التنقل باللون الأساسي. تلوين اختصارات التطبيق باللون الأساسي. الإشعارات، التنقل، إلخ. - حالياً كلمات الأغاني المتزامنة بصيغة LRC هي المدعومة فقط. سواء كانت مدمجة أو كملف منفصل. الذهاب إلى آخر لسان مفتوح عند التشغيل البحث في مكتبتك... المفضلة diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index debcfa56..4290bc8d 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -37,7 +37,6 @@ Изпълнител Година "Трак (2 за трак 2 или 3004 за CD3 трак 4)" - Текст на песента Детайли Име на файл Местоположение на файла @@ -81,7 +80,6 @@ Разбъркай артист Разбъркай този плейлист Изчисти списъкът с възпроизвеждащи се песни - Покажи текст Светъл изглед Тъмен изглед Винаги diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index c7547d39..c4d42a03 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -38,7 +38,6 @@ Interpret alba Rok "Stopa (2 pro stopu 2; 3004 pro stopu 4 na CD3)" - Text Podrobnosti Název souboru Umístění souboru @@ -85,7 +84,6 @@ Přehrát playlist náhodně Vyčistit frontu přehrávání Uložit frontu přehrávání - Zobrazit text Světlý Tmavý Vždy @@ -117,7 +115,6 @@ Přehrávání bez mezer Snížit hlasitost při ztrátě priority zvuku Poslední přidaný interval playlistu - Zobrazit synchronizovaný text Pamatovat poslední kartu "Nejdříve přehrajte píseň, poté zkuste znovu. " Smazat @@ -149,7 +146,6 @@ Barvy navigačního panelu v primární barvě Zbarví zkratky aplikace primární barvou Oznámení, navigace atd. - V současné době jsou podporovány pouze synchronizované texty ve formátu LRC. Buď vestavěný nebo jako samostatný soubor. Přejděte na poslední otevřenou kartu při spuštění Vyhledat zvukové soubory... Oblíbené diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 715882d1..0721553b 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -38,7 +38,6 @@ Album Interpret Jahr "Track (2 für Track 2 oder 3004 für CD 3 Track 4)" - Songtext Details Dateiname Dateipfad @@ -86,7 +85,6 @@ Wiedergabeliste zufällig wiedergeben Warteschlange leeren Warteschlange speichern - Songtext anzeigen Hell Dunkel Immer @@ -119,7 +117,6 @@ Lückenlose Wiedergabe Lautstärke bei Fokusverlust verringern Intervall der \"Zuletzt hinzugefügt\"-Wiedergabeliste - Synchronisierten Songtext anzeigen Letzten Tab merken Shuffle-Einstellung merken "Keine Audio ID, spiele etwas ab und versuche es erneut." @@ -152,7 +149,6 @@ Färbt die Navigationsleiste mit der Hauptfarbe. Färbt die App-Shortcuts mit der Hauptfarbe. Benachrichtigungen, Navigation etc. - Aktuell werden nur synchronisierte Songtexte im LRC-Format unterstützt, entweder eingebettet oder als separate Datei. Zuletzt geöffneten Tab beim Start anzeigen Shuffle bleibt aktiviert, wenn neue Songs ausgewählt werden Durchsuche deine Mediathek diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 5e18caed..dc6d2aed 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -38,7 +38,6 @@ Καλλιτέχνης Άλμπουμ Έτος "Κομμάτι (2 για κομμάτι 2 ή 3004 από CD3 κομμάτι 4)" - Στίχοι Λεπτομέρειες Όνομα αρχείου Διαδρομή αρχείου @@ -86,7 +85,6 @@ Τυχαία λίστα αναπαραγωγής Εκκαθάριση της ουράς αναπαραγωγής Αποθήκευση της σειράς αναπαραγωγής - Εμφάνιση στίχων Ανοιχτό Σκούρο Πάντα diff --git a/app/src/main/res/values-en-rCA/strings.xml b/app/src/main/res/values-en-rCA/strings.xml index b43a999a..15a13b0c 100644 --- a/app/src/main/res/values-en-rCA/strings.xml +++ b/app/src/main/res/values-en-rCA/strings.xml @@ -37,7 +37,6 @@ Album artist Year "Track (2 for track 2 or 3004 for CD3 track 4)" - Lyrics Details File name File path @@ -83,7 +82,6 @@ Shuffle playlist Clear playing queue Save playing queue - Show lyrics Light Dark Always @@ -114,7 +112,6 @@ Gapless playback Reduce volume on focus loss Last added playlist interval - Show synchronised lyrics "Play a song first, then try again." Delete Clear @@ -143,7 +140,6 @@ Colors the navigation bar in the primary color. Colors the app shortcuts in the primary color. Notifications, navigation etc. - Currently only synchronized lyrics in LRC format are supported. Either embedded or as a separate file. Search your library… Favorites Last added diff --git a/app/src/main/res/values-en-rGB/strings.xml b/app/src/main/res/values-en-rGB/strings.xml index 009142dc..42c5154f 100644 --- a/app/src/main/res/values-en-rGB/strings.xml +++ b/app/src/main/res/values-en-rGB/strings.xml @@ -38,7 +38,6 @@ Album artist Year "Track (2 for track 2 or 3004 for CD3 track 4)" - Lyrics Details File name File path @@ -84,7 +83,6 @@ Shuffle playlist Clear playing queue Save playing queue - Show lyrics Light Dark Always @@ -116,7 +114,6 @@ Gapless playback Reduce volume on focus loss Last added playlist interval - Show synchronised lyrics Remember last tab "Play a song first, then try again." Delete @@ -148,7 +145,6 @@ Colours the navigation bar in the primary colour. Colours the app shortcuts in the primary colour. Notifications, navigation etc. - Currently only synchronised lyrics in LRC format are supported. Either embedded or as a separate file. Go to the last opened tab on launch Search your library… Favourites diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index 24d8fe55..0bf182a7 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -38,7 +38,6 @@ Artista del álbum Año "Pista (2 para pista 2 o 3004 para CD3 pista 4)" - Letras Detalles Nombre del archivo Ubicación del archivo @@ -86,7 +85,6 @@ Reproducción aleatoria de la lista de reproducción Vaciar cola de reproducción Guardar cola de reproducción - Mostrar letras Claro Oscuro Siempre @@ -119,7 +117,6 @@ Reproducción sin interrupciones Reducir volumen en la pérdida del enfoque Intervalo de la última lista de reproducción - Mostrar letras sincronizadas Recordar la última pestaña Recordar aleatorio "Reproduce una canción primero, luego intentalo otra vez." @@ -152,7 +149,6 @@ Colorea la barra de navegación con el color principal. Colorea los accesos directos con el color principal Notificaciones, navegación etc. - Actualmente sólo se admiten las letras sincronizadas en formato LRC. Tanto si están embebidas como si están en un archivo aparte. Ir a la última pestaña abierta en el lanzamiento Modo aleatorio estará activado cuando se seleccione una nueva lista de canciones Buscar en la biblioteca... diff --git a/app/src/main/res/values-es-rUS/strings.xml b/app/src/main/res/values-es-rUS/strings.xml index 197d11ae..710c5b98 100644 --- a/app/src/main/res/values-es-rUS/strings.xml +++ b/app/src/main/res/values-es-rUS/strings.xml @@ -38,7 +38,6 @@ Artista del álbum Año "Pista (2 para pista 2 o 3004 para CD3 pista 4)" - Letras Detalles Nombre del archivo Ubicación del archivo @@ -85,7 +84,6 @@ Reproducción aleatoria de la lista de reproducción Limpiar cola de reproducción Guardar cola de reproducción - Mostrar letra Claro Oscuro Siempre @@ -117,7 +115,6 @@ Reproducción sin pausas Reducir volumen al recibir notificaciones Último intervalo de lista de reproducción añadido - Mostrat letras sincronizadas Recordar la última pestaña "Reproduce una canción primero, e intenta de nuevo." Eliminar @@ -149,7 +146,6 @@ Colorea la barra de navegación con el color principal. Colorea los accesos directos con el color principal. Notificaciones, navegación, etc. - Actualmente sólo se admiten las letras sincronizadas en formato LRC. Ya sea incorporado o como un archivo independiente. Ir a la última pestaña abierta al iniciar Buscar en la biblioteca... Favoritos diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 565d563f..487e8ed3 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -38,7 +38,6 @@ Albumin artisti Vuosi "Raita" - Sanoitukset Yksityiskohdat Tiedostonimi Tiedostopolku @@ -86,7 +85,6 @@ Sekoita soittolistat Tyhjennä toistojono Tallenna toistojono - Näytä lyriikat Vaalea Tumma Aina @@ -119,7 +117,6 @@ Tauoton toisto Hiljennä ääntä, kun kohdistus menetetään Viimeksi lisätyt -soittolistan aikaväli - Näytä synkronoidut sanoitukset Muista viimeisin välilehti Muista sekoitus "Toista jokin kappale ensin, koita sitten uudelleen." @@ -152,7 +149,6 @@ Värittää navigaatiopalkin päävärillä. Värittää sovelluksen pikavalinnat päävärillä. Ilmoitukset, liikkuminen jne. - Nykyiseltään sovellus tukee vain LRC-muodossa olevia sanoituksia, joko sulautettuna tai erillisinä tiedostoina. Palauttaa käynnistyessään viimeksi avoinna olleen välilehden. Sekoitus-tila pysyy päällä, kun valitset uuden listan kappaleita Etsi kirjastostasi... diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 5d73756b..7971bbc8 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -38,7 +38,6 @@ Artiste de l\'album Année "Piste (2 pour piste 2 ou 3004 pour CD3 piste 4)" - Paroles Détails Nom du fichier Chemin du fichier @@ -85,7 +84,6 @@ Lecture aléatoire Effacer la file de lecture Sauvegarder la file de lecture - Afficher les paroles Clair Sombre Toujours @@ -117,7 +115,6 @@ Lecture sans coupure Réduire le volume lorse que le focus est interrompu Intervalle de la playlist \"Derniers ajouts\" - Afficher les paroles synchronisées Se souvenir de la dernière fenêtre "Faire jouer un titre d'abord, puis réessayer." Supprimer @@ -149,7 +146,6 @@ Colore la barre de navigation en fonction de la couleur principale. Colore les raccourcis de l\'application selon la couleur primaire. Notifications, navigation, etc. - Pour le moment seul les paroles synchronisées en format LRC sont supportées. Aussi bien en fichier intégré ou en fichier séparé. Aller à la dernière catégorie ouverte lors du lancement Recherche dans votre bibliothèque... Favoris diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index 15fbdcf5..20b27ad9 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -38,7 +38,6 @@ אמן האלבום שנה "שיר (2 בשביל שיר 2 או 3004 בשביל דיסק 3 שיר 4)" - מילים פרטים שם הקובץ מיקום הקובץ @@ -85,7 +84,6 @@ ערבב רשימת השמעה איפוס תור השמעה שמור תור פעיל - הצג מילים בהיר כהה תמיד @@ -117,7 +115,6 @@ ניגון ללא מרווחים בין השירים הפחת את עוצמת הקול באובדן מיקוד הפסקת רשימת השמעה אחרונה שהוספה - הראה מילות שיר מסוכרנות זכור את הכרטיסיה האחרונה "נגן/י שיר ואז נסה/י שנית." מחיקה @@ -149,7 +146,6 @@ צובע את שורת הניווט בצבע הראשי. צובע את קיצורי האפליקציה בצבע הראשי. התראות, ניווט וכו\' - כרגע מסכרן מילות שירים רק בפורמט LRC. מילות שרים מוטבעות או בקובץ נפרד. עבור לכרטיסייה האחרונה שהייתה פתוחה בהפעלה חפש בספרייה שלך... מועדפים diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 209fc7ce..6cf97204 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -38,7 +38,6 @@ Izvođač albuma Godina "Redni broj (2 za pjesmu broj 2 ili 3004 za CD3 pjesmu broj 4)" - Stihovi Detalji Naziv datoteke Odredište datoteke @@ -85,7 +84,6 @@ Izmiješaj popis naslova Očisti red čekanja Spremi red čekanja - Prikaži stihove Svijetla Tamna Uvijek @@ -117,7 +115,6 @@ Reprodukcija bez prekida Smanji glasn. prilikom drugih zvukova Interval nedavnog popisa - Prikaži sinkronizirane stihove Zapamti zadnju karticu "Reproducirajte nešto i pokušajte opet." Izbriši @@ -149,7 +146,6 @@ Boja navigacijsku traku primarnom bojom. Boja prečace aplikacije u primarnu boju. Obavijesti, navigacija itd. - Trenutno su samo sinkronizirani stihovi u LRC formatu podržani. Ili ugrađeni ili u zasebnoj datoteci. Pri pokretanju otvori zadnje otvorenu karticu Pretražite svoju biblioteku... Favoriti diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 7cfa0e82..7e4bc777 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -38,7 +38,6 @@ Album előadó Év "Dal sorszáma az albumban" - Dalszöveg Részletek Fájlnév Útvonal @@ -85,7 +84,6 @@ Lejátszási lista keverése Lejátszási lista törlése Mentés a lejátszási sorba - Dalszöveg Világos Sötét Mindig @@ -117,7 +115,6 @@ Áttűnéses lejátszás Hangerő csökkentése Utoljára hozzáadott lejátszási lista intervallum - Szinkronizált dalszöveg Emlékezz az utolsó fülre "Először játsszon le egy dalt, majd próbálja újra." Törlés @@ -149,7 +146,6 @@ Navigációs sáv színezése az alapértelmezett színnel. Az alkalmazás hivatkozások színezése az elsődleges szín szerint. Beérkező értesítéskor a lejátszás hangereje lecsökken, majd az értesítés végén visszaáll az eredeti hangerőre. - Jelenleg csak az LRC formátumban szinkronizált szövegeket támogatják. Beágyazott vagy külön fájlként. Menjen az utolsó megnyitott fülre az indításkor Keresés a könyvtárban... Kedvencek diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index d34b26e1..b3a2c0db 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -38,7 +38,6 @@ Artis album Tahun "Trek (2 untuk trek ke-2 atau 3004 untuk CD3 trek ke-4)" - Lirik Rincian Nama berkas Lokasi berkas @@ -86,7 +85,6 @@ Putar daftar putar secara acak Kosongkan antrean yang sedang diputar Menyimpan antrian yang diputar - Tampilkan lirik Terang Gelap Selalu @@ -119,7 +117,6 @@ Pemutaran tanpa jeda Kurangi suara saat ada pemberitahuan Sela daftar putar yang terakhir ditambahkan - Tampilkan lirik yang tersinkronisasi Ingat tab terakhir Ingat putar acak "Silahkan mainkan sebuah lagu dan coba lagi. " @@ -152,7 +149,6 @@ "Mewarnai bilah navigasi dengan warna primer. " Mewarnai pintasan-pintasan dengan warna utama. Pemberitahuan, navigasi dll. - Saat ini hanya mendukung lirik dalam format LRC yang disinkronkan. Antara tertanam atau sebagai file terpisah. Pergi ke tab yang terakhir saat aplikasi dibuka Mode putar acak akan tetap aktif saat memilih daftar lagu baru Mencari pustaka Anda... diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index d34b26e1..b3a2c0db 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -38,7 +38,6 @@ Artis album Tahun "Trek (2 untuk trek ke-2 atau 3004 untuk CD3 trek ke-4)" - Lirik Rincian Nama berkas Lokasi berkas @@ -86,7 +85,6 @@ Putar daftar putar secara acak Kosongkan antrean yang sedang diputar Menyimpan antrian yang diputar - Tampilkan lirik Terang Gelap Selalu @@ -119,7 +117,6 @@ Pemutaran tanpa jeda Kurangi suara saat ada pemberitahuan Sela daftar putar yang terakhir ditambahkan - Tampilkan lirik yang tersinkronisasi Ingat tab terakhir Ingat putar acak "Silahkan mainkan sebuah lagu dan coba lagi. " @@ -152,7 +149,6 @@ "Mewarnai bilah navigasi dengan warna primer. " Mewarnai pintasan-pintasan dengan warna utama. Pemberitahuan, navigasi dll. - Saat ini hanya mendukung lirik dalam format LRC yang disinkronkan. Antara tertanam atau sebagai file terpisah. Pergi ke tab yang terakhir saat aplikasi dibuka Mode putar acak akan tetap aktif saat memilih daftar lagu baru Mencari pustaka Anda... diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 7f19b811..2ec4d90d 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -38,7 +38,6 @@ Artista dell\'album Anno "Traccia (2 per traccia 2, o 3004 per CD3 traccia 4)" - Testi Dettagli Nome file Percorso file @@ -86,7 +85,6 @@ Riproduzione casuale playlist Svuota coda di riproduzione Salva la coda di riproduzione - Mostra testo Chiaro Scuro Sempre @@ -119,7 +117,6 @@ Riproduzione senza intervalli Riduci volume in caso di perdita di focus audio Ultimo intervallo di playlist aggiunto - Mostra testi sincronizzati Ricorda ultima scheda Ricorda casuale "Riproduci un brano e prova di nuovo." @@ -152,7 +149,6 @@ Colora la barra di navigazione del colore principale. Colora le scorciatoie dell\'app con il colore principale. Notifiche, navigazione ecc. - Attualmente solo i testi sincronizzati in formato LRC sono supportati. Sia integrati o come file separati. All\'avvio vai all\'ultima scheda aperta La modalità casuale rimarrà attiva quando si seleziona un nuovo elenco di brani Cercando nella tua libreria... diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index 15fbdcf5..20b27ad9 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -38,7 +38,6 @@ אמן האלבום שנה "שיר (2 בשביל שיר 2 או 3004 בשביל דיסק 3 שיר 4)" - מילים פרטים שם הקובץ מיקום הקובץ @@ -85,7 +84,6 @@ ערבב רשימת השמעה איפוס תור השמעה שמור תור פעיל - הצג מילים בהיר כהה תמיד @@ -117,7 +115,6 @@ ניגון ללא מרווחים בין השירים הפחת את עוצמת הקול באובדן מיקוד הפסקת רשימת השמעה אחרונה שהוספה - הראה מילות שיר מסוכרנות זכור את הכרטיסיה האחרונה "נגן/י שיר ואז נסה/י שנית." מחיקה @@ -149,7 +146,6 @@ צובע את שורת הניווט בצבע הראשי. צובע את קיצורי האפליקציה בצבע הראשי. התראות, ניווט וכו\' - כרגע מסכרן מילות שירים רק בפורמט LRC. מילות שרים מוטבעות או בקובץ נפרד. עבור לכרטיסייה האחרונה שהייתה פתוחה בהפעלה חפש בספרייה שלך... מועדפים diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 7ca6c7b1..732ee34b 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -38,7 +38,6 @@ アルバムアーティスト "トラック (例: '2'ならトラック2, '3004'ならCD3のトラック4)" - 歌詞 詳細情報 ファイル名 パス @@ -85,7 +84,6 @@ プレイリストをシャッフル 再生キューを消去 再生キューを保存 - 歌詞を表示 ライト ダーク いつでも @@ -117,7 +115,6 @@ ギャップレス再生 音声フォーカス喪失時に音量を下げる 最近追加された曲に含まれる期間 - 同期された歌詞を表示 最後のタブの記憶 "何か曲を再生してもう一度お試しください" 削除 @@ -149,7 +146,6 @@ ナビゲーションバーの背景色をメインカラーに変更します。 アプリのショートカットの色をメインカラーに変更します。 通知やナビなどです。 - 現時点では LRC 形式の同期歌詞のみに対応しています。埋め込みと別ファイルのどちらにも対応しています。 アプリ起動時に最後に開いていたタブを開く ライブラリ内を検索… お気に入り diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 5de008ea..2bae2bf2 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -38,7 +38,6 @@ 앨범 아티스트 연도 "트랙 (트랙 2는 2, CD 3의 트랙 4는 3004로 입력)" - 가사 세부 정보 파일 이름 파일 경로 @@ -85,7 +84,6 @@ 재생 목록 랜덤 재생 재생 대기열 비우기 재생 대기열 저장 - 가사 보기 밝은 테마 어두운 테마 항상 @@ -117,7 +115,6 @@ 갭리스 재생 포커스 상실 시 볼륨 감소하기 최근 추가된 재생 목록 간격 - 동기화된 가사 보기 마지막 탭 기억 "먼저 노래를 재생한 후 다시 시도해 주세요." 삭제 @@ -151,7 +148,6 @@ 하단바가 색깔을 주 색상으로 색칠합니다. 주 색상으로 앱 바로가기 색칠 알림 소리, 버튼음 등 - 현재는 임베딩 또는 별개로 저장된 LRC 형식의 동기화된 자막 파일만 지원합니다. 마지막으로 연 탭으로 시작 저장소 검색... 즐겨찾기 diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 9aa9b83d..9a966449 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -38,7 +38,6 @@ Album artiest Jaar "Nummer (2 voor nr. 2, of 3004 voor CD3 nr. 4)" - Songteksten Details Bestandsnaam Bestandspad @@ -85,7 +84,6 @@ Shuffle afspeellijst Leeg afspeelwachtrij Afspeelwachtrij opslaan - Toon songtekst Licht Donker Altijd @@ -117,7 +115,6 @@ Afspelen zonder pauzes Verminder volume bij focusverlies Laatst toegevoegd afspeellijst tussenpoos - Gesynchr. songtekst weergeven Laatste tabblad onthouden "Speel eerst iets af, probeer dan opnieuw." Verwijderen @@ -149,7 +146,6 @@ Kleurt de navigatiebalk in de primaire kleur. Kleurt de app-snelkoppelingen in de primaire kleur. Notificaties, navigatie, etc. - Momenteel worden gesynchr. songteksten alleen ondersteund in LRC-formaat. Of ingebed, of als separaat bestand. Ga naar het laatst geopende tabblad bij opstarten Zoek in je bibliotheek… Favorieten diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index e1be4dd6..7fd42fd5 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -38,7 +38,6 @@ Wykonawca albumu Rok "Numer utworu (2 dla utworu 2 lub 3004 dla CD3 utworu 4)" - Tekst Szczegóły Nazwa pliku Ścieżka pliku @@ -85,7 +84,6 @@ Losowa lista odtwarzania Wyczyść kolejkę odtwarzania Zapisz obecnie odtwarzaną kolejkę - Pokaż teksty Jasny Ciemny Zawsze @@ -117,7 +115,6 @@ Odtwarzanie bez przerw Zmniejszaj głośność przy powiadomieniach Okres ostatnio dodanych list odtwarzania - Pokazuj zsynchronizowany tekst "Zapamiętaj ostatnią zakładkę " "Odegraj utwór, następnie ponów próbę" Usuń @@ -149,7 +146,6 @@ Kolory paska nawigacyjnego będą odpowiadały kolorowi podstawowemu Kolory skrótów aplikacji w kolorze podstawowym Notyfikacje, nawigacja, itp. - Obecnie wspierane są tylko napisy w formacie LRC oraz te osadzone w osobnym pliku. Idź do ostatniej otwartej zakładki przy starcie Szukaj w bibliotece... Ulubione diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index eaa8f7f4..ac09c5a2 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -38,7 +38,6 @@ Artista do álbum Ano "Música (2 para a música 2 ou 3004 para a música 4 do CD3)" - Letra Detalhes Nome do arquivo Endereço do arquivo @@ -86,7 +85,6 @@ Misturar playlist Limpar fila de reprodução Salvar fila de reprodução - Mostrar letras Claro Escuro Sempre @@ -119,7 +117,6 @@ Reprodução contínua Reduzir o volume de perda de foco Intervalo de adição das playlists mais recentes - Exibir letras sincronizadas Lembrar última aba Memorizar aleatorização "Sem identificação de áudio, reproduza algo e tente novamente." @@ -152,7 +149,6 @@ Cores da barra de navegação na cor primária. Colore os atalhos do app com a cor primária. Notificações, navegação, etc. - Atualmente damos suporte apenas a letras de música no formato LRC. Tanto as encorporadas quanto as anexadas por um arquivo separado. Ir para a última aba aberta ao iniciar Modo aleatório continuará ativo quando uma nova lista de músicas for selecionada Pesquisar na sua biblioteca... diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 0c667d08..42777677 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -77,7 +77,6 @@ Embaralhar Artista Embaralhar lista de reprodução Limpar fila de reprodução - Mostrar letra Claro Escuro Sempre diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index d73c1dc3..3a9e7f90 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -38,7 +38,6 @@ Artistul albumului An "Număr (2 pentru melodia a 2-a sau 3004 pentru CD3 melodia a 4-a)" - Versuri Detalii Nume fișier Cale fișier @@ -85,7 +84,6 @@ Amestecare listă de redare Golește lista de redare Salvați lista de redare - Arată versuri Light (Alb) Dark (Negru) Mereu @@ -117,7 +115,6 @@ Redare fără întreruperi Se reduce volumul la pierderea focalizării Ultimul interval al listei de redare adăugate - Afişare versuri sincronizate Rețineți ultima filă "Redă o melodie mai întâi, apoi încearcă din nou." Șterge @@ -149,7 +146,6 @@ Colorare bară de navigare în culoarea primară. Colorarea comenzilor rapide ale aplicației în culoarea primară. Notificări, navigație etc. - În prezent sunt acceptate numai versurile sincronizate în format LRC. Fie încorporate, fie ca fişier separat. Accesați ultima filă deschisă la lansare Căutați în bibliotecă. Favorite diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index a7dc6475..2f4d7e68 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -38,7 +38,6 @@ Альбом исполнителя Год "Трек (2 для трека 2 или 3004 для трека 4 CD3)" - Текст песни Подробнее Имя файла Расположение @@ -86,7 +85,6 @@ Перемешать плейлист "Очистить очередь воспроизведения " Сохранить очередь воспроизведения - Показать текст песни Светлая Тёмная Всегда @@ -119,7 +117,6 @@ Воспроизведение без пауз Уменьшить громкость при уведомлениях Интервал последнего добавленного плейлиста - Показать синхронизированные тексты Запомнить последнюю вкладку Запомнить перемешивание "Сначала воспроизведите песню, а затем попробуйте снова." @@ -152,7 +149,6 @@ Окрашивает панель навигации в основной цвет. Окрашивает шорткаты в основной цвет. Уведомления, навигация, т.д. - В настоящее время поддерживаются только синхронизированные тексты в формате LRC. Либо встроенные, либо как отдельный файл. Перейти на последнюю открытую вкладку при запуске Режим перемешивания останется включенным при выборе нового списка песен Поиск в библиотеке... diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index c08b7417..a1fe9518 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -38,7 +38,6 @@ Albüm sanatçısı Yıl "Parça (2. parça için 2 ya da CD3 4. parça için 3004)" - Şarkı sözleri Ayrıntılar Dosya adı Dosya yolu @@ -85,7 +84,6 @@ Çalma listesini karıştır Çalma sırasını temizle Çalma sırasını kaydet - Şarkı sözlerini göster Açık Koyu Her zaman @@ -117,7 +115,6 @@ Aralıksız çalma Odak kaybına neden olacak sesi azalt Son eklenen çalma listesi süresi - Senkronize şarkı sözlerini göster Son sekmeyi hatırla "ilk şarkıyı çalın, daha sonra tekrar deneyin." Sil @@ -149,7 +146,6 @@ Gezinme çubuğunu ana renk ile renklendir. Uygulama kısayollarını ana renk ile renklendir. Bildirimler, gezinme vb. - Şu anda yalnızca LRC formatında senkronize edilmiş sözler desteklenmektedir. Gömülü veya ayrı bir dosya olarak. Başlatıldığında son açılan sekmeye git Kitaplığınız taranıyor... Favoriler diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 174a2bb1..f7da1659 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -38,7 +38,6 @@ Альбом виконавця Рік "Доріжка (2 для доріжки 2 або 3004 для CD3 доріжки 4)" - Текст пісні Подробиці Назва файлу Шлях до файлу @@ -84,7 +83,6 @@ Перемішати список відтворення Очистити чергу відтворення Зберегти чергу відтворення - Показати текст Світла Темна Завжди @@ -116,7 +114,6 @@ Безперервне відтворення Зменшити гучнiсть при отриманнi повiдомлення Інтервал останнього доданого списку відтворення - Показати синхронізований текст пісні Запам‘ятати останню вкладку "Спочатку відтворіть пісню, потім спробуйте ще раз." Видалити @@ -148,7 +145,6 @@ Фарбує панель навігації у переважний колір. Фарбує ярлики додатків у переважний колір. Повiдомлення, навiгацiя, т.д. - Наразі підтримується тільки синхронізований текст у форматі LCR як вбудований або окремий файл. Перейдіть до останньої відкритої вкладки, щоб запустити Пошук бібліотеки... Улюблені diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 1d13951f..38f3d180 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -37,7 +37,6 @@ Album của nghệ sĩ Năm "Số thứ tự (ghi 2 nếu là bài thứ 2 hoặc ghi 3004 nếu là CD 3, bài thứ 4)" - Lời bài hát Chi tiết Tên tập tin Đường dẫn tập tin @@ -82,7 +81,6 @@ Trộn danh sách nhạc Dọn hàng đợi phát Lưu hàng đợi phát - Hiện lời bài hát Sáng Tối Luôn luôn @@ -113,7 +111,6 @@ Phát lại quãng lặng Giảm âm lượng khi mất tập trung Thời gian danh sách nhạc được thêm vào sau cùng - Hiển thị lời bài hát được đồng bộ "Phát một bài hát đầu tiên, sau đó thử lại." Xóa Dọn @@ -142,7 +139,6 @@ Màu sắc thanh điều hướng trong các màu cơ bản. Màu sắc chủ đạo của biểu tượng ứng dụng. Thông báo, điều hướng, vv. - Hiện tại chỉ được đồng bộ lời bài hát ở định dạng LRC. Nhúng hoặc là một tập tin riêng biệt. Tìm kiếm thư viện của bạn... Yêu thích Được thêm sau cùng diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 93e4627a..0808cfe8 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -38,7 +38,6 @@ 专辑艺术家 年份 "音轨(如用 2 表示第 2 首歌或用 3004 表示 CD3 里的第 4 首歌)" - 歌词 详情 文件名 文件路径 @@ -86,7 +85,6 @@ 随机播放此播放列表 清空播放队列 保存播放队列 - 显示歌词 浅色 暗色 总是 @@ -119,7 +117,6 @@ 无缝播放 音频焦点丢失时降低音量 最近添加播放列表间隔 - 显示同步歌词 记住最后打开页面 "请在播放歌曲后再次尝试此操作。" 删除 @@ -151,7 +148,6 @@ 用主色调着色导航栏。 用主色调着色应用快捷方式。 通知、导航等 - 当前仅支持 LRC 格式同步歌词。内嵌或外置均可。 启动时跳转到最后打开页面 正在扫描 收藏夹 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 7707e9f7..ef11c943 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -39,7 +39,6 @@ 專輯演出者 年代 "音軌(用2表示第2首歌或3004表示CD3的第4首歌)" - 歌詞 詳細資訊 檔案名稱 檔案路徑 @@ -87,7 +86,6 @@ 隨機播放清單 清空播放佇列 保存播放佇列 - 顯示歌詞 明亮 暗沉 永遠 @@ -120,7 +118,6 @@ 無縫播放 在焦點音訊響起時降低音量 最後新增列表的時間範圍 - 同步顯示歌詞 記住最後開啟的頁面 記住隨機播放 "請先播放一首歌後再重試一遍。" @@ -153,7 +150,6 @@ 將專輯封面的主色調設為導航列的顏色。 將主色調設為應用快捷方式的顏色 通知鈴聲、導航語音等。 - 目前僅支援 LRC 格式歌詞。內嵌或外掛皆可。 開啟時顯示最後使用的頁面 當選擇新歌曲列表時維持隨機播放模式 搜尋音樂庫… diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index b24f9c9f..90c0c902 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -5,7 +5,7 @@ Karim Abou Zeid Aidan Follestad Maarten Corpel - Michael Cook (Cookicons) + Michael Cook Aleksandar Tešić Eugene Cheung Adrian diff --git a/app/src/main/res/values/ids.xml b/app/src/main/res/values/ids.xml index a5756383..5c5bcbfc 100644 --- a/app/src/main/res/values/ids.xml +++ b/app/src/main/res/values/ids.xml @@ -1,7 +1,6 @@ - diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 05030b22..66d76b8d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -39,7 +39,6 @@ Album artist Year "Track (2 for track 2 or 3004 for CD3 track 4)" - Lyrics Details File name File path @@ -87,7 +86,6 @@ Shuffle playlist Clear playing queue Save playing queue - Show lyrics Light Dark Black @@ -121,7 +119,6 @@ Gapless playback Reduce volume on focus loss Last added playlist interval - Show synchronized lyrics Remember last tab Remember shuffle "Play a song first, then try again." @@ -154,7 +151,6 @@ Colors the navigation bar in the primary color. Colors the app shortcuts in the primary color. Notifications, navigation etc. - Currently only synchronized lyrics in LRC format are supported. Either embedded or as a separate file. Go to the last opened tab on launch Shuffle mode will stay on when selecting a new list of songs Search your library… diff --git a/app/src/main/res/xml/pref_now_playing_screen.xml b/app/src/main/res/xml/pref_now_playing_screen.xml index 78b993ea..df191ce7 100644 --- a/app/src/main/res/xml/pref_now_playing_screen.xml +++ b/app/src/main/res/xml/pref_now_playing_screen.xml @@ -9,13 +9,6 @@ android:key="now_playing_screen_id" android:title="@string/pref_title_now_playing_screen_appearance" /> - - \ No newline at end of file