From 8ecd9803bb91cb39256718927b4ea6724ab82582 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Fri, 23 Oct 2020 22:50:45 +0200 Subject: Fixed played state sometimes not being displayed --- .../antennapod/adapter/EpisodeItemListAdapter.java | 4 +- .../view/viewholder/EpisodeItemViewHolder.java | 9 +- app/src/main/res/layout/feeditemlist_item.xml | 407 +++++++++++---------- 3 files changed, 216 insertions(+), 204 deletions(-) diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/EpisodeItemListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/EpisodeItemListAdapter.java index 8efc89c9a..4762622d1 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/EpisodeItemListAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/EpisodeItemListAdapter.java @@ -92,11 +92,11 @@ public class EpisodeItemListAdapter extends RecyclerView.Adapter recycledViewPool -> EpisodeItemViewHolder -> Listener -> Fragment (can not be garbage collected) holder.itemView.setOnClickListener(null); + holder.itemView.setOnCreateContextMenuListener(null); + holder.itemView.setOnLongClickListener(null); holder.secondaryActionButton.setOnClickListener(null); holder.dragHandle.setOnTouchListener(null); holder.coverHolder.setOnTouchListener(null); - holder.container.setOnCreateContextMenuListener(null); - holder.container.setOnLongClickListener(null); } /** diff --git a/app/src/main/java/de/danoeh/antennapod/view/viewholder/EpisodeItemViewHolder.java b/app/src/main/java/de/danoeh/antennapod/view/viewholder/EpisodeItemViewHolder.java index 902e5094b..35744227f 100644 --- a/app/src/main/java/de/danoeh/antennapod/view/viewholder/EpisodeItemViewHolder.java +++ b/app/src/main/java/de/danoeh/antennapod/view/viewholder/EpisodeItemViewHolder.java @@ -39,7 +39,7 @@ import de.danoeh.antennapod.view.CircularProgressBar; public class EpisodeItemViewHolder extends RecyclerView.ViewHolder { private static final String TAG = "EpisodeItemViewHolder"; - public final View container; + private final View container; public final ImageView dragHandle; private final TextView placeholder; private final ImageView cover; @@ -102,7 +102,7 @@ public class EpisodeItemViewHolder extends RecyclerView.ViewHolder { isNew.setVisibility(item.isNew() ? View.VISIBLE : View.GONE); isFavorite.setVisibility(item.isTagged(FeedItem.TAG_FAVORITE) ? View.VISIBLE : View.GONE); isInQueue.setVisibility(item.isTagged(FeedItem.TAG_QUEUE) ? View.VISIBLE : View.GONE); - itemView.setAlpha(item.isPlayed() ? 0.5f : 1.0f); + container.setAlpha(item.isPlayed() ? 0.5f : 1.0f); ItemActionButton actionButton = ItemActionButton.forItem(item, true, true); actionButton.configure(secondaryActionButton, secondaryActionIcon, activity); @@ -116,6 +116,7 @@ public class EpisodeItemViewHolder extends RecyclerView.ViewHolder { progressBar.setVisibility(View.GONE); duration.setVisibility(View.GONE); position.setVisibility(View.GONE); + itemView.setBackgroundResource(ThemeUtils.getDrawableFromAttr(activity, R.attr.selectableItemBackground)); } if (coverHolder.getVisibility() == View.VISIBLE) { @@ -136,9 +137,9 @@ public class EpisodeItemViewHolder extends RecyclerView.ViewHolder { Converter.getDurationStringLocalized(activity, media.getDuration()))); if (media.isCurrentlyPlaying()) { - container.setBackgroundColor(ThemeUtils.getColorFromAttr(activity, R.attr.currently_playing_background)); + itemView.setBackgroundColor(ThemeUtils.getColorFromAttr(activity, R.attr.currently_playing_background)); } else { - container.setBackgroundResource(ThemeUtils.getDrawableFromAttr(activity, R.attr.selectableItemBackground)); + itemView.setBackgroundResource(ThemeUtils.getDrawableFromAttr(activity, R.attr.selectableItemBackground)); } if (DownloadRequester.getInstance().isDownloadingFile(media)) { diff --git a/app/src/main/res/layout/feeditemlist_item.xml b/app/src/main/res/layout/feeditemlist_item.xml index 7083365e7..a8ae5743e 100644 --- a/app/src/main/res/layout/feeditemlist_item.xml +++ b/app/src/main/res/layout/feeditemlist_item.xml @@ -1,225 +1,236 @@ - + android:layout_height="wrap_content"> - - - - - - - - - - - - - - + + android:orientation="horizontal" + android:gravity="center_vertical" + android:baselineAligned="false" + android:paddingStart="12dp" + android:paddingLeft="12dp" + android:paddingEnd="0dp" + android:paddingRight="0dp" + tools:ignore="UselessParent"> - - - - - - - + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:id="@+id/left_padding" + android:minWidth="4dp"> - - - - - - - - + android:id="@+id/drag_handle" + android:layout_width="16dp" + android:layout_height="match_parent" + android:importantForAccessibility="no" + android:scaleType="fitCenter" + android:src="?attr/dragview_background" + android:paddingStart="0dp" + android:paddingLeft="0dp" + android:paddingEnd="4dp" + android:paddingRight="4dp" + tools:src="@drawable/ic_drag_darktheme" + tools:background="@android:color/holo_green_dark"/> - - + + + + + + + + + - + android:layout_marginBottom="@dimen/listitem_threeline_verticalpadding" + android:layout_marginRight="@dimen/listitem_threeline_textrightpadding" + android:layout_marginEnd="@dimen/listitem_threeline_textrightpadding" + android:layout_marginTop="@dimen/listitem_threeline_verticalpadding" + android:layout_weight="1" + tools:background="@android:color/holo_red_dark" + android:orientation="vertical"> + + + + + + + + + + + + + + + + + + + + + + - - - + android:id="@+id/progress" + android:orientation="horizontal" + android:gravity="center_vertical"> + + + + + + + + - + - - - + + -- cgit v1.2.3 From 058885ac09743829ab98c45bfbe680e0e82e8f4d Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Sat, 24 Oct 2020 23:52:09 +0200 Subject: Prevent play/pause button not doing anything in some cases --- .../java/de/danoeh/antennapod/core/util/playback/PlaybackController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java index 44f5f9b11..77525e1e5 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java @@ -512,6 +512,7 @@ public class PlaybackController { new PlaybackServiceStarter(activity, media) .startWhenPrepared(true) .streamIfLastWasStream() + .callEvenIfRunning(true) .start(); Log.w(TAG, "Play/Pause button was pressed and PlaybackService state was unknown"); break; -- cgit v1.2.3 From fc5418637332f7257c08574bff204fdb238999e2 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Mon, 26 Oct 2020 10:56:27 +0100 Subject: Fixed NPEs related to bottom sheet --- app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java | 3 +++ .../java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java index fffe5be60..8ada58b3a 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java @@ -166,6 +166,9 @@ public class MainActivity extends CastEnabledActivity { public void onSlide(@NonNull View view, float slideOffset) { AudioPlayerFragment audioPlayer = (AudioPlayerFragment) getSupportFragmentManager() .findFragmentByTag(AudioPlayerFragment.TAG); + if (audioPlayer == null) { + return; + } float condensedSlideOffset = Math.max(0.0f, Math.min(0.2f, slideOffset - 0.2f)) / 0.2f; audioPlayer.getExternalPlayerHolder().setAlpha(1 - condensedSlideOffset); audioPlayer.getExternalPlayerHolder().setVisibility( diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java index e32fdb095..f456a8268 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java @@ -135,7 +135,12 @@ public class AudioPlayerFragment extends Fragment implements pager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { @Override public void onPageSelected(int position) { - pager.post(() -> ((MainActivity) getActivity()).getBottomSheet().updateScrollingChild()); + pager.post(() -> { + if (getActivity() != null) { + // By the time this is posted, the activity might be closed again. + ((MainActivity) getActivity()).getBottomSheet().updateScrollingChild(); + } + }); } }); pageIndicator = root.findViewById(R.id.page_indicator); -- cgit v1.2.3 From 2da36919b394681a1a96b9d9f478de15d0c6c871 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Mon, 26 Oct 2020 10:49:41 +0100 Subject: Only accept media control buttons while actually playing --- .../core/service/playback/PlaybackService.java | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java index 585510ef8..f284f2988 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java @@ -623,7 +623,9 @@ public class PlaybackService extends MediaBrowserServiceCompat { } return false; case KeyEvent.KEYCODE_MEDIA_NEXT: - if (notificationButton || UserPreferences.shouldHardwareButtonSkip()) { + if (getStatus() != PlayerStatus.PLAYING && getStatus() != PlayerStatus.PAUSED) { + return false; + } else if (notificationButton || UserPreferences.shouldHardwareButtonSkip()) { // assume the skip command comes from a notification or the lockscreen // a >| skip button should actually skip mediaPlayer.skip(); @@ -634,10 +636,15 @@ public class PlaybackService extends MediaBrowserServiceCompat { } return true; case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: - mediaPlayer.seekDelta(UserPreferences.getFastForwardSecs() * 1000); - return true; + if (getStatus() == PlayerStatus.PLAYING || getStatus() == PlayerStatus.PAUSED) { + mediaPlayer.seekDelta(UserPreferences.getFastForwardSecs() * 1000); + return true; + } + return false; case KeyEvent.KEYCODE_MEDIA_PREVIOUS: - if (UserPreferences.shouldHardwarePreviousButtonRestart()) { + if (getStatus() != PlayerStatus.PLAYING && getStatus() != PlayerStatus.PAUSED) { + return false; + } else if (UserPreferences.shouldHardwarePreviousButtonRestart()) { // user wants to restart current episode mediaPlayer.seekTo(0); } else { @@ -646,7 +653,11 @@ public class PlaybackService extends MediaBrowserServiceCompat { } return true; case KeyEvent.KEYCODE_MEDIA_REWIND: - mediaPlayer.seekDelta(-UserPreferences.getRewindSecs() * 1000); + if (getStatus() == PlayerStatus.PLAYING || getStatus() == PlayerStatus.PAUSED) { + mediaPlayer.seekDelta(-UserPreferences.getRewindSecs() * 1000); + } else { + return false; + } return true; case KeyEvent.KEYCODE_MEDIA_STOP: if (status == PlayerStatus.PLAYING) { -- cgit v1.2.3 From 3a9829bd5edfd569329f236c3df52f6a6421e74a Mon Sep 17 00:00:00 2001 From: Tony Tam <149837+tonytamsf@users.noreply.github.com> Date: Wed, 28 Oct 2020 01:06:42 -0700 Subject: When doing Auto Skip to End, do the right thing (#4594) --- .../core/service/playback/PlaybackService.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java index f284f2988..e9c8e1bbb 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java @@ -212,7 +212,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { private Disposable positionEventTimer; private PlaybackServiceNotificationBuilder notificationBuilder; - private long autoSkippedFeedMediaId = -1; + private String autoSkippedFeedMediaId = null; /** * Used for Lollipop notifications, Android Wear, and Android Auto. @@ -1046,18 +1046,21 @@ public class PlaybackService extends MediaBrowserServiceCompat { Log.d(TAG, "smart mark as played"); } + boolean autoSkipped = false; + if (autoSkippedFeedMediaId != null && autoSkippedFeedMediaId.equals(item.getIdentifyingValue())) { + autoSkippedFeedMediaId = null; + autoSkipped = true; + } + if (ended || smartMarkAsPlayed) { media.onPlaybackCompleted(getApplicationContext()); } else { media.onPlaybackPause(getApplicationContext()); } - if (autoSkippedFeedMediaId >= 0 && autoSkippedFeedMediaId == media.getId()) { - ended = true; - } - if (item != null) { if (ended || smartMarkAsPlayed + || autoSkipped || (skipped && !UserPreferences.shouldSkipKeepEpisode())) { // only mark the item as played if we're not keeping it anyways DBWriter.markItemPlayed(item, FeedItem.PLAYED, ended); @@ -1109,7 +1112,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { FeedPreferences preferences = feedMedia.getItem().getFeed().getPreferences(); int skipEnd = preferences.getFeedSkipEnding(); if (skipEnd > 0 - && skipEnd < getDuration() + && skipEnd * 1000 < getDuration() && (remainingTime - (skipEnd * 1000) > 0) && ((remainingTime - skipEnd * 1000) < (getCurrentPlaybackSpeed() * 1000))) { Log.d(TAG, "skipEndingIfNecessary: Skipping the remaining " + remainingTime + " " + skipEnd * 1000 + " speed " + getCurrentPlaybackSpeed()); @@ -1118,7 +1121,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { Toast toast = Toast.makeText(context, skipMesg, Toast.LENGTH_LONG); toast.show(); - this.autoSkippedFeedMediaId = feedMedia.getItem().getId(); + this.autoSkippedFeedMediaId = feedMedia.getItem().getIdentifyingValue(); mediaPlayer.skip(); } } -- cgit v1.2.3 From fa6e0542129808e0391ef4472f169f633bdffcd9 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Wed, 28 Oct 2020 10:37:18 +0100 Subject: Updated translations --- core/src/main/res/values-ca/strings.xml | 108 ++++++++++++++++++++++++++++ core/src/main/res/values-es/strings.xml | 2 + core/src/main/res/values-fr/strings.xml | 2 +- core/src/main/res/values-gl/strings.xml | 2 +- core/src/main/res/values-pt-rBR/strings.xml | 72 ++++++++++++++++++- core/src/main/res/values-zh-rTW/strings.xml | 41 +++++------ 6 files changed, 203 insertions(+), 24 deletions(-) diff --git a/core/src/main/res/values-ca/strings.xml b/core/src/main/res/values-ca/strings.xml index 30a71465a..998d06213 100644 --- a/core/src/main/res/values-ca/strings.xml +++ b/core/src/main/res/values-ca/strings.xml @@ -420,18 +420,30 @@ Canvia les dades d\'inici de sessió del vostre compte de gpodder.net Sincronitza ara Sincronitza amb gpodder.net les subscripcions i els estats dels episodis. + Força sincronització completa Sincronitza amb gpodder.net totes les subscripcions i els estats dels episodis. %1$s amb el dispositiu %2$s]]> Notifica els errors de sincronització Aquest paràmetre no s\'aplica als errors d\'autenticació. Velocitats de reproducció Personalitzeu les velocitats disponibles per a una velocitat de reproducció d\'àudio variable + La velocitat a usar quan comence la reproducció per a episodis en aquest podcast + Auto Ometre + Omet introduccions i crèdits finals + Omet final (en segons): + Omet introducció (en segons): + Omesos els últims %dsegons + Omesos els primers %d segons + Ajusta la informació dels medis a la velocitat de reproducció + La posició i la duració son adaptades a la velocitat de reproducció Temps de salt de l\'Avanç ràpid Personalitzar el nombre de segons del salt endavant quan es prem el botó d\'Avanç ràpid. Temps de salt del Rebobinat Personalitza el nombre de segons del salt endarrere quan es prem el botó de Rebobinat Definex nom del servidor Utilitza el servidor per defecte + Alta prioritat de notificacions + Açò normalment expandeix la notificació per a mostrar botons de reproducció Botons de reproducció persistents Manté els controls a l\'àrea de notificacions i pantalla de bloqueig quan la reproducció estigui aturada Estableix els botons del bloqueig de pantalla @@ -442,15 +454,29 @@ Estableix el fons del bloqueig de pantalla a la imatge de l\'episodi actual. Com a efecte secundari, això també mostrarà la imatge en aplicacions de tercers. Mostra informació de baixades Si les descàrregues fallen, genera un informe que mostra els detalls de la fallada. + Mostra Informe de baixades automàtiques + Mostra una notificació per a episodis descarregats automàticament Les versions d\'Android anteriors a la 4.1 no suporten les notificacions ampliades. + Posició d\'entrada en cola + Afegit episodis a: %1$s + Final + Principi + Després de l\'episodi actual Desactivat Mida de la memòria cau de les imatges Mida de la memòria cau en el disc de les imatges. + Fòrum d\'usuaris + Informa d\'un bug + Obri rastrejador de bugs + Exporta els logs + Còpia al porta-retalls + Copiat al porta-retalls Experimental Seleccioneu el reproductor multimèdia per a reproduir fitxers Valor actual: %1$s Servidor intermediari Estableix un servidor intermediari + Preguntes Freqüents No s\'ha trobat cap navegador web. Suport per a Chromecast Habilita el suport per la reproducció remota en dispositius de difusió (com ara Chromecast, Audio Speakers o Android TV). @@ -458,18 +484,59 @@ Afegeix les baixades a la cua Afegeix els episodis descarregats a la cua Reproductor Android estàndard + Canvia a ExoPlayer + Canviat a ExoPlayer + Omet Silenci en Audio En sortir d\'un vídeo Comportament a l\'abandonar la reproducció d\'un vídeo Atura reproducció Continuar reproducció d\'audio + Comportament + Comportament del botó \"endarrere\" + Canvia el comportament del botó \"endarrere\" + Per defecte + Obri el calaix de navegació + Doble toc per a eixir + Confema per a eixir + Estàs segur que vols tancar AntennaPod? + Toca el botó \"endarrere\" un altra vegada per a eixir + Ves a la pàgina... + Selecciona pàgina + \"Esborrar\" remou de la cua + Remou automàticament un episodi de la cua quan siga esborrat Quant a + Versió d\'AntennaPod + Contributors + Tothom pot ajudar a fer AntennaPod millor - amb codi, traduccions o ajudant als usuaris al nostre fòrum + Desenvolupadors + Traductors + Agraïments especials + Política de privacitat + Llicències + AntennaPod usa altre programati genial No s\'ha trobat cap resultat Cerca No s\'han trobat resultats per \"%1$s\" + Sincronització començada + Pujant canvis d\'episodi + Descarregant canvis d\'episodi... + Pujant estat de reproducció... + Sincronitzant subscripcions... + Sincronització exitosa + Sincronització fallida + Mou subscripcions i cola a un altre dispositiu + Base de dades + OPML + HTML + Mostra les teues subscripcions a un amic + Transfereix les teues subscripcions a un altra aplicació de podcast + Importa les teues subscripcions des d\'un altra aplicació de podcast + Transfereix subscripcions i cola a AntennaPod en un altre dispositiu + Importa base de dades d\'AntennaPod des d\'un altre dispositiu Importació d\'OPML S\'ha produït un error en llegir el document OPML: Cap fitxer seleccionat! @@ -477,17 +544,26 @@ Deselecciona-ho tot Exportació OPML Exporta HTML + Exporta base de dades + Importa base de dades + Importar una base de dades reemplaçarà totes les teues subscripcions i històric de reproducció. Deuries exportar la teua base de dades com a còpia de seguretat. Vols reemplaçar? + Per favor, espera... Error d\'exportació Exportació correcta S\'ha exportat el fitxer a:\n\n%1$s Per llegir arxius OPML és necessari accés a la memòria externa Tria un fitxer per a importar S\'ha importat amb èxit.\n\nPremeu D\'acord per a reiniciar l\'AntennaPod. + Aquesta base de dades va ser exportada amb una versió més nova d\'AntennaPod. La versió que tens ara mateixa no sap com processar-la. + Exportar preferits + Exportar episodis favorits a un arxiu Defineix un temporitzador Desactiva el temporitzador Temporitzador L\'entrada no és vàlida, ja que el temps ha de ser un nombre i no ho és + Agita per a resetejar + Vibra un poc abans del final segons minuts hores @@ -536,12 +612,14 @@ S\'ha produït un error durant la sincronització:\u0020 Correcte Ha fallat + Noms d\'usuari sols poden contindre lletres, dígits, guions i guions baixos. Carpeta seleccionada: Crea una carpeta Selecció de la carpeta de dades Selecciona l\'arrel del teu directori d\'informació. AntennaPod crearà els subdirectoris pertinents Es requereix accés a l\'emmagatzematge extern per canviar el directori d\'informació + %1$s de %2$s lliures Voleu crear una nova carpeta amb el nom \"%1$s\"? S\'ha creat la nova carpeta No es pot escriure dins d\'aquesta carpeta @@ -560,16 +638,25 @@ AntennaPod s\'ha de reiniciar perquè aquest canvi tingui efecte. Subscriu + Subscrivint... + Vista prelimiar + Atura vista preliminar Rebobina Avança ràpidament + Augmenta la velocitat + Disminueix la velocitat Àudio Vídeo Navega cap amunt S\'està baixant l\'episodi S\'ha afegit l\'episodi a la cua + L\'episodi està marcat com a favorit Arrossegueu l\'element per canviar-ne la posició Carrega la següent pàgina + Canvia pàgines + Posició: %1$s + Aplica acció Autenticació Canvieu el nom d\'usuari i contrasenya per a aquest podcast i els seus episodis. @@ -580,6 +667,8 @@ Exclou Una paraula \n\"Diverses paraules\" Manté actualitzat + Incloure aquest podcast quan (auto-)actualitzen tots els podcasts + La baixada automàtica està deshabilitada als ajustos generals d\'AntennaPod Actualitzant la base de dades @@ -588,9 +677,12 @@ Cerca podcast… Cerca a iTunes Cerca a fyyd + Avançat + Afegir podcast per URL Navega gpodder.net Descobreix més » + Cerca feta per %1$s Filtra Tot @@ -618,6 +710,12 @@ Data (Antic \u2192 Nou) Duració (Curt \u2192 Llarg) Duration (Llarg \u2192 Curt) + A \u2192 Z + Z \u2192 A + Nou \u2192 Antic + Antic \u2192 Nou + Curt \u2192 Llarg + Llarg \u2192 Curt T\'agrada AntennaPod? Apreciaríem que et prenguessis un temps per valorar AntennaPod @@ -633,6 +731,7 @@ Efectes de so Downmix: D\'estereo a mono Només Sonic + ExoPlayer solament Tipus Host @@ -646,6 +745,7 @@ El host no és una adreça IP o domini vàlid El port no és vàlid + Número de columnes Reproduir a... Desconnectar la sessió de difusió @@ -669,6 +769,14 @@ Permet controlar la reproducció. Aquesta és la notificació principal que veureu durant la reproducció d\'un podcast. Errors Mostrar si quelcom va malament, per exemple si una baixada o sincronització fallen. + Baixades automàtiques + Mostrat quan els episodis han sigut descarregats automàticament + Settings del widget + Crear widget + Opacitat + Ajust actualitzar exitosament + Pareix que escoltes en línia molt a sovint. Vols que les llistes d\'episodis mostren botons per a escoltar en línia? + Pareix que baixes molt a sovint. Vols que les llistes d\'episodis mostren botons per a baixar episodis? diff --git a/core/src/main/res/values-es/strings.xml b/core/src/main/res/values-es/strings.xml index 5f956d839..e3a443991 100644 --- a/core/src/main/res/values-es/strings.xml +++ b/core/src/main/res/values-es/strings.xml @@ -509,6 +509,7 @@ Versión de AntennaPod Desarrolladores Traductores + Gracias especiales Política de privacidad Licencias AntennaPod usa otros software estupendos @@ -552,6 +553,7 @@ Seleccionar archivo a importar Importación exitosa.\n\nPulse OK para reiniciar AntennaPod Esta base de datos fue exportada con una versión más moderna de AntennaPod. La versión instalada no puede manejarla. + Exportar favoritos Establecer un temporizador Desactivar el temporizador diff --git a/core/src/main/res/values-fr/strings.xml b/core/src/main/res/values-fr/strings.xml index c602960c3..04e4eb695 100644 --- a/core/src/main/res/values-fr/strings.xml +++ b/core/src/main/res/values-fr/strings.xml @@ -17,7 +17,7 @@ Journal Abonnements Liste des abonnements - Annuler les téléchargements + Annuler le téléchargement Journal de lecture gpodder.net Identifiants gpodder.net diff --git a/core/src/main/res/values-gl/strings.xml b/core/src/main/res/values-gl/strings.xml index 5b8278bbe..a2756cf07 100644 --- a/core/src/main/res/values-gl/strings.xml +++ b/core/src/main/res/values-gl/strings.xml @@ -465,7 +465,7 @@ Desactivado Tamaño da caché de imaxes Tamaño da caché en disco para as imaxes. - Foro de usuarios + Foro de usuarias Informar de fallo Abrir seguimento de fallos Exportar rexistro diff --git a/core/src/main/res/values-pt-rBR/strings.xml b/core/src/main/res/values-pt-rBR/strings.xml index 59e3af044..d285f81fb 100644 --- a/core/src/main/res/values-pt-rBR/strings.xml +++ b/core/src/main/res/values-pt-rBR/strings.xml @@ -29,13 +29,13 @@ Tempo total de podcasts reproduzidos: %1$d de %2$d episódios iniciados.\n\nReproduzidos %3$s de %4$s. Modo Estatística - Calcular a duração que já foi tocada. Tocar das vezes é contado o dobro, enquanto marcar como tocada não é contado + Calcular a duração que foi realmente tocada. Tocar duas vezes é contado em dobro, enquanto marcar como tocada não é contado Somar todos os podcasts marcados como tocados Nota: A velocidade de reprodução nunca é levada em conta. Limpar dados de estatísticas Isso ira apagar o histórico de reprodução de todos os episódios. Tem certeza que deseja continuar? - Tamanho total dos episódios baixados. + Tamanho total dos episódios baixados: Abrir menu Fechar menu @@ -502,14 +502,41 @@ Clique novamente no botão voltar para sair Vá para a página... Selecione a página + Apagar remove da fila + Remove automaticamente um episódio da fila quando ele é apagado. Sobre + Versão do AntennaPod + Contribuidores + Todos podem ajudar a tornar o AntennaPod melhor - com código, traduções ou ajudando os usuários em nosso fórum + Desenvolvedores + Tradutores + Agradecimentos especiais + Política de privacidade + Licenças + O AntennaPod usa outros ótimos softwares Nenhum resultado encontrado Pesquisar Nenhum resultado para \"%1$s\" + Sincronização iniciada + Enviando mudanças de episódio ... + Baixando mudanças de episódio… + Fazendo upload do status de reprodução... + Sincronizando assinaturas... + Sincronização bem sucedida + Sincronização falhou + Mover assinaturas e fila para outro dispositivo + Banco de dados + OPML + HTML + Mostre suas assinaturas para um amigo + Transfira suas assinaturas para outro aplicativo de podcast + Importe suas assinaturas de outro aplicativo de podcast + Transfira assinaturas, episódios ouvidos e fila para o AntennaPod em outro dispositivo + Importar banco de dados AntennaPod de outro dispositivo Importação de OPML Um erro ocorreu ao ler o documento OPML: Nenhum arquivo selecionado! @@ -517,17 +544,26 @@ Remover seleção Exportar OPML Exportar HTML + Exportação do banco de dados + Importação do banco de dados + A importação de um banco de dados substituirá todas as suas assinaturas atuais e histórico de reprodução. Você deve exportar seu banco de dados atual como um backup. Você quer substituir? + Por favor aguarde... Erro na exportação Exportado com sucesso O arquivo foi exportado para:\n\n%1$s Acesso ao armazenamento externo é necessária para ler o arquivo OPML Selecione arquivo para importar Importado com sucesso.\n\nFavor pressionar OK para reiniciar o AntennaPod + Este banco de dados foi exportado com uma versão mais recente do AntennaPod. Sua instalação atual ainda não sabe como lidar com este arquivo. + Exportar favoritos + Exportar favoritos salvos para arquivo Configura desligamento automático Desabilita desligamento automático Desligamento automático Entrada inválida, a duração precisa ser um número inteiro + Agite para reiniciar + Vibrar um pouco antes do fim segundos minutos horas @@ -576,12 +612,14 @@ Ocorreu um erro durante a sincronização:\u0020 Sucesso Falhou + Os nomes de usuário podem conter apenas letras, dígitos, hifens e sublinhados. Selecionar pasta: Criar pasta Escolher pasta de dados Por favor escolha a raiz da sua pasta de dados. O AntennaPod irá criar os sub-diretórios apropriados. Acesso ao armazenamento externo é necessário para mudar o repositório de dados + %1$s de %2$s grátis Criar nova pasta com o nome \"%1$s\"? Nova pasta criada Não é possível escrever nesta pasta @@ -600,16 +638,25 @@ AntennaPod deve ser reiniciado para que esta mudanças tenha efeito. Assinar + Assinando... + Pré-visualizar + Parar pré-visualização Voltar Avançar + Aumentar velocidade + Diminuir velocidade Áudio Vídeo Navegar para cima O epísódio está sendo baixado Episódio está na fila + Episódio está marcado como favorito Arraste para mudar a posição deste item Carregar a próxima página + Trocar páginas + Posição: %1$s + Aplicar ação Autenticação Mudar o seu usuário e senha para este podcast e seus episódios. @@ -620,14 +667,22 @@ Excluir Única palavra \n\"Múltiplas palavras\" Manter Atualizado + Incluir este podcast ao atualizar todos os podcasts + O download automático está desativado nas configurações principais do AntennaPod Atualizando o banco de dados Importando assinaturas de aplicativos de finalidade única... + Procurar podcast... Procurar no iTunes Pesquisar em fyyd + Avançado + Adicionar podcast usando uma URL Pesquisar no gpodder.net + Descobrir + mais » + Pesquisa usando %1$s Filtrar Todos @@ -655,6 +710,12 @@ Data (Velho \u2192 Novo) Duração (Curta \u2192 Longa) Duração (Longa \u2192 Curta) + A \u2192 Z + Z \u2192 A + Novo \u2192 Antigo + Antigo \u2192 Novo + Curto \u2192 Longo + Longo \u2192 Curto Gostou do AntennaPod? Nós gostaríamos que você dedicasse um tempo para avaliar o AntennaPod. @@ -708,7 +769,14 @@ Permite controlar a reprodução. Essa é a principal notificação vista ao reproduzir um podcast. Erros Exibido caso algo dê errado, por exemplo se houver falha no download ou na sincronização com o gpodder. + Downloads automáticos + Exibido quando os episódios foram baixados automaticamente. + Configurações de widgets + Criar widget Opacidade + Configuração atualizada com sucesso + Parece que você faz muito stream. Quer que as listas de episódios mostrem botões de stream? + Parece que você faz muitos downloads. Quer que as listas de episódios mostrem botões de download? diff --git a/core/src/main/res/values-zh-rTW/strings.xml b/core/src/main/res/values-zh-rTW/strings.xml index 0b3f88797..c432cab3e 100644 --- a/core/src/main/res/values-zh-rTW/strings.xml +++ b/core/src/main/res/values-zh-rTW/strings.xml @@ -29,7 +29,7 @@ Podcast 總播放時長: 聽過 %1$d/%2$d集。\n\n播過%3$s/%4$s集。 統計模式 - 計算真實的播放時長。如果播放同一劇集兩遍,則會記錄兩遍的市場。如果只是標記為已播放,則不會被計入播放時長。 + 計算真實的播放時長。如果播放同一劇集兩遍,則會記錄兩遍的時間;如果只是標記為已播放,則不會被計入播放時長 累加所有標記為已播放的 Podcast 注意:播放速度不被計入。 重設統計數據 @@ -89,7 +89,7 @@ 關閉 - \u0020同時下載 + 目前設定可同步下載 \u0020 集 預設值 總是 不予下載 @@ -155,7 +155,7 @@ 播放 暫停 - + 串流播放 刪除 刪除文件失敗。重啟設備試試看。 刪除這一集 @@ -314,7 +314,7 @@ 儲存空間 自動刪除、匯入、匯出 - 項目 + 專案 待播清單 同步 利用 gpodder.net 與其他裝置同步 @@ -335,17 +335,17 @@ 耳機或藍牙斷開連接時暫停播放 當耳機再次連接時繼續播放 當藍牙再次連接時繼續播放 - 快進按鈕跳過 + 快轉鈕視為跳過單集 當按下藍牙連接裝置上的快轉鈕時,不要快轉,而是播放下一集 - 後退鍵重新播放 - 當按下實體的倒轉鈕時,不要倒轉,而是重新播放本集。 + 倒轉鈕視為重新播放 + 當按下實體的倒轉鈕時,不要倒轉,而是重新播放本集 當播放完畢時自動跳至待播清單中的下一集 播放完畢後刪除該集 自動刪除 - 若離開時還剩下特定秒數以內,也將該集標記為已播放。 - 智慧標記為已播放過 - 當跳過時,保留該集 - 保留跳過 + 若離開時還剩下特定秒數以內,也將該集標記為已播放 + 提前視為已播放 + 當跳過某集不播放時,仍於清單中保留該集 + 保留跳過的單集 保留標記為最愛的各單集 保留最愛單集 播放 @@ -381,7 +381,7 @@ 設定訂閱排序方式 更改您訂閱頻道的排序方式 設定訂閱計數器 - 調整訂閱計數器中要顯示的東西,同時也會在排序方式設定為「計數」時影響排序。 + 調整訂閱計數器中要顯示的東西,同時也會在排序方式設定為「計數」時影響排序 更改 AntennaPod 的外觀 自動下載 設定單集自動下載機制 @@ -389,11 +389,11 @@ 限定於特定 Wi-Fi 連線時自動下載 未充電時下載 允許未充電時也自動下載 - 平行下載 + 同步下載 暫存集數 在本機中可以暫存的集數,若達上限則將停止自動下載。 使用單集的封面圖 - 在單集有專屬封面的情況下使用該封面圖。如果取消,則一律使用 Podcast 的封面圖。 + 在單集有專屬封面的情況下使用該封面圖。如果取消,則一律使用 Podcast 的封面圖 依據系統設定 淡色 深色 @@ -435,17 +435,17 @@ 優先通知 此功能通常會加大通知訊息以便顯示控制鈕 保留播放控制鈕 - 暫停播放時,在通知列及鎖定畫面上保留播放控制鈕。 + 暫停播放時,在通知列及鎖定畫面上保留播放控制鈕 設定鎖定畫面按鈕 - 設定鎖定畫面上的播放控制鈕。「暫停/播放」鈕一定會出現。 + 設定鎖定畫面上的播放控制鈕。「暫停/播放」鈕一定會出現 最多可選擇 %1$d 項 您最多只能選擇 %1$d 項。 設定鎖定畫面背景 - 在鎖定畫面背景採用本單集的圖片,同時也會在第三方 App 裡顯示圖片。 + 在鎖定畫面背景採用本單集的圖片,同時也會在第三方 App 裡顯示圖片 顯示下載報告 - 如果下載失敗,產生錯誤相關細節的報告。 + 如果下載失敗,產生錯誤相關細節的報告 顯示自動下載報告 - 顯示自動下載通知。 + 顯示自動下載通知 Android 4.1 以前尚未支援延伸通知工具。 待播清單新增位置 將這幾集加到:%1$s @@ -574,7 +574,7 @@ 建議 搜尋 gpodder.net 登入 - 歡迎登入 gpodder.net,請先輸入您的登入資訊: + 歡迎登入 gpodder.net,請輸入登入資訊: 登入 如果您還沒有帳號,可以先註冊一個:\nhttps://gpodder.net/register/ 帳號 @@ -635,6 +635,7 @@ 放慢 聲音 影片 + Navigate upwards 正在下載這集 單集已在待播清單中 已將此單集標為最愛 -- cgit v1.2.3 From 81e2be8f2b7bd7e6bc7cb8c427443ec6cb596859 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Wed, 28 Oct 2020 10:38:01 +0100 Subject: Bumped version to 2.0.3 --- app/build.gradle | 4 ++-- app/src/main/play/release-notes/en-US/default.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index d713ea8fd..94d2fa3a4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -14,8 +14,8 @@ android { // "1.2.3-SNAPSHOT" -> 1020300 // "1.2.3-RC4" -> 1020304 // "1.2.3" -> 1020395 - versionCode 2000295 - versionName "2.0.2" + versionCode 2000395 + versionName "2.0.3" multiDexEnabled false vectorDrawables.useSupportLibrary true diff --git a/app/src/main/play/release-notes/en-US/default.txt b/app/src/main/play/release-notes/en-US/default.txt index b44fd22bd..a27f2d0c0 100644 --- a/app/src/main/play/release-notes/en-US/default.txt +++ b/app/src/main/play/release-notes/en-US/default.txt @@ -1,4 +1,4 @@ -We are proud to release version 2.0.0 with a new logo and refreshed user interface. +We are proud to release version 2.0 with a new logo and refreshed user interface. Thank you to 6420 users who participated in the vote for the new logo! - Support for chapter images (only new episodes, by @ByteHamster) -- cgit v1.2.3