diff --git a/app/build.gradle b/app/build.gradle index 8e413197..05254cdb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -50,8 +50,8 @@ android { applicationId "com.kabouzeid.gramophone" minSdkVersion 16 targetSdkVersion 23 - versionCode 68 - versionName "0.9.44 beta2" + versionCode 70 + versionName "0.9.44 beta4" } buildTypes { release { diff --git a/app/src/main/assets/changelog.html b/app/src/main/assets/changelog.html index 1b71ebc8..bb16e651 100644 --- a/app/src/main/assets/changelog.html +++ b/app/src/main/assets/changelog.html @@ -25,6 +25,13 @@

You can view the changelog dialog again at any time from the about section.

+

Version 0.9.44 beta3

+ +
    +
  1. NEW: See changes from beta2, as beta2 was only released internal.
  2. +
  3. IMPROVEMENT: Synced translations.
  4. +
+

Version 0.9.44 beta2

    diff --git a/app/src/main/java/com/kabouzeid/gramophone/helper/ColorPalette.java b/app/src/main/java/com/kabouzeid/gramophone/helper/ColorPalette.java index 57119d40..ca699f9d 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/helper/ColorPalette.java +++ b/app/src/main/java/com/kabouzeid/gramophone/helper/ColorPalette.java @@ -262,23 +262,23 @@ public class ColorPalette { }; public static int[] MAIN_ACCENT_COLOR_INDEXES = new int[]{ + 2, 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1 + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2 }; public static int[][] ACCENT_COLORS = new int[][]{ diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java index d4073a80..a23504d8 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java @@ -2,6 +2,7 @@ package com.kabouzeid.gramophone.ui.activities; import android.annotation.SuppressLint; import android.content.ComponentName; +import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; @@ -14,6 +15,7 @@ import android.os.Handler; import android.os.IBinder; import android.provider.MediaStore; import android.support.annotation.ColorInt; +import android.support.annotation.LayoutRes; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.design.widget.AppBarLayout; @@ -26,11 +28,13 @@ import android.support.v4.view.ViewPager; import android.support.v4.widget.DrawerLayout; import android.support.v7.widget.Toolbar; import android.util.Log; +import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.SubMenu; import android.view.View; import android.view.ViewGroup; +import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; @@ -40,6 +44,7 @@ import com.afollestad.materialdialogs.MaterialDialog; import com.afollestad.materialdialogs.ThemeSingleton; import com.anjlab.android.iab.v3.BillingProcessor; import com.anjlab.android.iab.v3.BillingProcessor.IBillingHandler; +import com.anjlab.android.iab.v3.SkuDetails; import com.anjlab.android.iab.v3.TransactionDetails; import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.R; @@ -73,6 +78,8 @@ import java.io.File; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import butterknife.Bind; import butterknife.ButterKnife; @@ -607,19 +614,64 @@ public class MainActivity extends AbsSlidingMusicPanelActivity } } + static class SkuDetailsAdapter extends ArrayAdapter { + @LayoutRes + private static int LAYOUT_RES_ID = R.layout.item_donation_option; + + public SkuDetailsAdapter(@NonNull Context context, @NonNull List objects) { + super(context, LAYOUT_RES_ID, objects); + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + if (convertView == null) { + convertView = LayoutInflater.from(getContext()).inflate(LAYOUT_RES_ID, parent, false); + } + + SkuDetails skuDetails = getItem(position); + ViewHolder viewHolder = new ViewHolder(convertView); + + viewHolder.title.setText(skuDetails.title.replace("(Phonograph Music Player)", "").trim()); + viewHolder.text.setText(skuDetails.description); + viewHolder.price.setText(skuDetails.priceText); + + return convertView; + } + + static class ViewHolder { + @Bind(R.id.title) + TextView title; + @Bind(R.id.text) + TextView text; + @Bind(R.id.price) + TextView price; + + public ViewHolder(View view) { + ButterKnife.bind(this, view); + } + } + } + private void showDonationDialog() { + final String[] ids = getResources().getStringArray(R.array.donation_ids); + List skuDetailsList = billingProcessor.getPurchaseListingDetails(new ArrayList<>(Arrays.asList(ids))); + if (skuDetailsList == null) return; + new MaterialDialog.Builder(this) .title(R.string.support_development) - .items(R.array.donation_names) - .itemsCallback(new MaterialDialog.ListCallback() { + .adapter(new SkuDetailsAdapter(this, skuDetailsList), new MaterialDialog.ListCallback() { @Override public void onSelection(MaterialDialog materialDialog, View view, int i, CharSequence charSequence) { - final String[] ids = getResources().getStringArray(R.array.donation_ids); - billingProcessor.purchase(MainActivity.this, ids[i]); + donate(i); } }).show(); } + private void donate(int i) { + final String[] ids = getResources().getStringArray(R.array.donation_ids); + billingProcessor.purchase(MainActivity.this, ids[i]); + } + @Override public void onProductPurchased(String productId, TransactionDetails details) { billingProcessor.consumePurchase(productId); @@ -633,8 +685,8 @@ public class MainActivity extends AbsSlidingMusicPanelActivity @Override public void onBillingError(int errorCode, Throwable error) { - Toast.makeText(this, "Billing error: code = " + errorCode + ", error: " + - (error != null ? error.getMessage() : "?"), Toast.LENGTH_LONG).show(); + Toast.makeText(this, "Billing error: code = " + errorCode + + (error != null ? ", error: " + error.getMessage() : ""), Toast.LENGTH_SHORT).show(); } @Override diff --git a/app/src/main/res/layout/item_donation_option.xml b/app/src/main/res/layout/item_donation_option.xml new file mode 100644 index 00000000..4cbc5f93 --- /dev/null +++ b/app/src/main/res/layout/item_donation_option.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index c91fcb30..b05a7cf2 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -174,4 +174,7 @@ Besonderes Dankeschön an Änderungen Die Rechte um auf den externen Speicher zuzugreifen wurden verweigert. + zurück + Unterstütze die Entwicklung + Vielen Dank! diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index 39278bd2..125a0c15 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -174,4 +174,7 @@ Agradecimientos a Lista de cambios Permiso para acceder al almacenamiento externo denegado. + regresar + Apoyar desarrollo + ¡Gracias! diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 3fa00371..da1a8b45 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -19,14 +19,14 @@ Ajouter à la liste de lecture Retirer de la liste de lecture Ajouter à une playlist... - Éditeur de tags + Éditeur d\'infos Supprimer de l\'appareil Détails Albums Artistes Titres Playlists - La lecture de ce titre a \u00e9chou\u00e9. + La lecture de ce titre a \u00e9chou\u00e9e. La biographie de l\'artiste est introuvable. Biographie Focus audio refusé. @@ -52,7 +52,7 @@ Voir l\'album File de lecture Sauvegarder - Icône par + Icône fournie par "Phonograph est un lecteur de musique entièrement gratuit suivant le concept du Material Design. Phonograph vous est apporté par" Aucun résultat Actualiser l\'image de l\'artiste @@ -143,15 +143,15 @@ La pochette de l\'album dans l\'écran de lecture en cours est forcée à rester carrée. La barre d\'outil est opaque et ne recouvre pas la vignette de l\'album. Colore la barre de statut. - La boîte en dessous de la vignette de l\'album où se trouvent le titre de la musique et l\'artiste est plus large dans sa hauteur. - Utilise une barre de progression qui ne recouvre pas la vignette de l\'album à la place de la barre de progression normale. - Affiche une carte derrière les boutons de lecture (lecture/pause etc.) - Countourner le stockage media, ce qui peut augmenter la qualité des images mais peut causer des temps de chargement plus longs. N\'activez cette option que si vous avez des problèmes de basse résolution des images. + La boîte en dessous de la pochette de l\'album où se trouvent le titre de la musique et l\'artiste est plus large dans sa hauteur. + Utilise une barre de progression qui ne recouvre pas la pochette de l\'album à la place de la barre de progression normale. + Affiche une carte derrière les contrôles de lecture (boutons Lecture/Pause, Lecture Aléatoire et Répéter) + Peut augmenter la qualité des pochettes d\'albums, mais peut causer des temps de chargement plus longs. N\'activez cette option que si vous avez des problèmes de basse résolution des pochettes. Masque la barre où s\'affichent les informations de lecture. Il est toujours possible de faire glisser le bouton Lecture/Pause pour ouvrir l\'écran de lecture en cours. - Colore le bouton Lecture/Pause, le bouton Lecture Al\u00e9atoire ainsi que la barre de progression en fonction de la pochette de l\'album. + Colore les contr\u00f4les de lecture (boutons Lecture/Pause, Lecture Al\u00e9atoire et R\u00e9p\u00e9ter) ainsi que la barre de progression en fonction de la pochette de l\'album. Dans quelles vues la barre navigation doit être colorée. "Impossible de t\u00e9l\u00e9charger la vignette correspondant \u00e0 l'album." - Rechercher dans votre bibliothèque... + Recherche dans votre bibliothèque... Réanalyse des médias… Favoris Derniers ajouts @@ -165,7 +165,7 @@ Régler Annuler le minuteur actuel Le minuteur actuel a été annulé - Arrêt de la musique dans %d minutes + Arrêt de la musique dans %d minutes. Nouvelle playlist… Nouvelle playlist Grille @@ -174,4 +174,5 @@ Un grand merci à Changelog Accès au stockage externe refusé. + Retour diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 5e2dce67..57de6907 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -174,4 +174,5 @@ Ringraziamenti speciali a Modifiche Permesso per accedere alla memoria esterna negato. + indietro diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index f4f7a3b4..24abc283 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -174,4 +174,7 @@ Speciale dank aan Changelog Toegang tot externe opslag geweigerd. + Terug + Ondersteun ontwikkeling + Dankjewel! diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 71aa889e..2b21088b 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -138,7 +138,7 @@ Utwór "Dostępne tylko w androidzie Lollipop" Okładki albumów obecnie granych utworów będą zastępowały tapetę na ekranie blokady - "Odtwarzacz w pasku powiadomie\u0144 ma kolor ok\u0142adki albumu" + "Odtwarzacz w pasku powiadomie\u0144 ma tonacj\u0119 ok\u0142adki albumu" "Na niektórych urządzeniach mogą wystąpić problemy z odtwarzaniem" Okładki albumów na ekranie \'\'Obecnie Grane\'\' będą zawsze kadrowane Kolorowy pasek narzędzi @@ -148,7 +148,7 @@ Wyświetla kartę pod przyciskami \'\'Graj/Pauzuj\'\', \'\'Pomiń\'\', \'\'Przewiń\'\', \'\'Losowo\'\' i \'\'Powtórz\'\' Polepszy to jakość okładek, ale może spowodować ich wolniejsze ładowanie. Zaznacz tylko wtedy, gdy masz kłopoty z niską jakością grafik Ukrywa dolną belkę z informacjami o obecnie granym utworze. Nadal można przesuwać przycisk Graj/Pauza w dowolnym kierunku, aby otworzyć widok obecnie granego utworu - Przyciski \'\'Graj/Pauzuj\'\', \'\'Losowo\'\', \'\'Powt\u00f3rz\'\' oraz pasek post\u0119pu, b\u0119d\u0105 w kolorach z ok\u0142adek album\u00f3w + Przyciski \'\'Graj/Pauzuj\'\', \'\'Losowo\'\', \'\'Powt\u00f3rz\'\' oraz pasek post\u0119pu, b\u0119d\u0105 w tonacjach ok\u0142adek album\u00f3w Kolory paska nawigacyjnego będą odpowiadały kolorowi podstawowemu "Nie uda\u0142o si\u0119 pobra\u0107 pasuj\u0105cej ok\u0142adki albumu" Szukaj w bibliotece... @@ -174,4 +174,7 @@ Specjalne podziękowania dla Lista zmian Pozwolenie na dostęp do pamięci zewnętrznej odrzucone + Wróć + Wspomóż rozwój + Dziękuję! diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 2691c2fa..aacc2ea3 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -56,7 +56,7 @@ "O Phonograph é um player de música completamente grátis com Material Design feito por" Sem resultados Atualizar imagem do artista - Imagem do artista atualizada. + Imagem do artista atualizado. N\u00e3o foi poss\u00edvel atualizar a imagem do artista. Atualizando... "1 título adicionado à fila de reprodução" @@ -67,19 +67,19 @@ A playlist %1$s foi criada A playlist %1$s foi excluída %1$d músicas excluidas - N\u00e3o foi poss\u00edvel criar a playlist + N\u00e3o foi poss\u00edvel criar playlist. %1$s? ]]> %1$s? Isto n\u00e3o pode ser desfeito!]]> %1$d playlists?]]> - %1$s? ]]> - %1$d faixas? ]]> + %1$s?]]> + %1$d faixas?]]> %1$s da playlist?]]> %1$d músicas da playlist?]]> Excluir música Excluir músicas Remover música da Playlist Remover músicas da Playlist - Renomear Playlist + Renomear playlist Excluir playlist Excluir playlists Limpar playlist @@ -94,25 +94,25 @@ Equalizador Cores Tocando agora - Tema Geral + Tema geral Áudio Geral Imagens Bloqueio de tela - Barra de Navegação Colorida + Barra de navegação colorida Página inicial - Imagem do álbum no bloqueio de tela - Notificação Colorida - Ignorar artwork Media Store - Reprodução Contínua - Forçar a Capa do Álbum Quadrada - Barra de Ações Opaca - Barra de Status Opaca - Caixa de Titulo Maior - Barra de Progresso Alternativa - Mostrar cartão abaixo dos controles de reprodução + Capa do álbum no bloqueio de tela + Notificação colorida + Ignorar capas Media Store + Reprodução contínua + Capa do álbum quadrado + Barra de ferramentas opaca + Barra de status opaca + Caixa título maior + Barra de progresso alternativa + Mostrar cartão abaixo controles de reprodução Controles de reprodução coloridos - Ocultar Barra Inferior + Ocultar barra inferior Nenhum equalizador encontrado. "Sem identificação de áudio, reproduza algo e tente novamente." Excluir @@ -123,11 +123,11 @@ %1$d selecionado Selecionar Padrão - Cor Primária - Cor dos Detalhes + Cor primária + Cor dos detalhes A cor do tema principal, o padrão é índigo. A cor dos detalhes do tema, o padrão é rosa. - Atualizar Imagem + Atualizar imagem Esta lista está vazia Nenhuma playlist Nenhum Album @@ -139,17 +139,17 @@ "Apenas disponível no Lollipop." A imagem do álbum está sendo mostrada no bloqueio de tela. Você deve reiniciar o Phonograph para as mudanças fazerem efeito. "A notifica\u00e7\u00e3o \u00e9 colorida com a cor mais vibrante do \u00e1lbum." - "Elimina o silêncio entre duas músicas. Desativar isso pode corrigir problemas de reprodução." - A arte do álbum na tela de execução agora é forçado a ser quadrado. + "Pode causar problemas de reprodução em alguns dispositivos." + Capas de álbuns reproduzindo agora estão sempre ao quadrado. A barra de ações está opaca e não cobre mais a capa do álbum. - A Barra de status é opaca e não cobre a capa do álbum. + Colorir a barra de status. A caixa embaixo da capa do álbum onde o titulo da musica e o artista são mostrados é mais largo na sua altura. Usa uma barra de progresso que não cobre a capa do álbum substituindo a barra padrão. - Mostra um cartão abaixo dos controles de reprodução (tocar/pausar etc.) - O Android Media Store armazena em cache sua capa do álbum embutido, mas em alguns dispositivos que parece para armazená-lo em uma resolução baixa. Ativar essa vai ignorar o Media Store, que pode aumentar a qualidade do álbum, mas faz com que tempos imagem de carregamento lento. + Mostra um cartão abaixo play/pause, saltar, retroceder, shuffle e repetir. + Pode aumentar a qualidade da capa do álbum, mas faz com tempos de carregamento mais lento imagem. Só habilite esta opção se você tiver problemas com obras de arte de baixa resolução. Ocultar a barra de informações da música atual. Você ainda pode arrastar o botão tocar/pausar em qualquer direção para abrir a tela de execução. Cores play/pause, aleat\u00f3rio e repetir assim como a barra de progresso na cor vibrante da capa do \u00e1lbum. - Definir onde a barra de navegação deve ser colorida. + Cores da barra de navegação na cor primária. "N\u00e3o foi poss\u00edvel baixar uma capa do \u00e1lbum correspondente." Pesquisar na sua biblioteca... Verificando mídia novamente... @@ -174,4 +174,7 @@ Agradecimentos especiais para Novidades Permissão para acessar armazenamento externo negado. + voltar + Apoiar o desenvolvimento + Obrigado! diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 65d4beab..e31fe0ae 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -4,7 +4,7 @@ Şu anda %2$s nın %1$s parçası çalıyor. Ses dosyası %1$s yı zil sesi olarak ayarlamak ister misiniz? - %1$s zil sesiniz olarak ayarlandı. + %1$s \'yı zil sesi olarak ayarla. Zil sesi olarak ayarla Paylaş "Ayarlar" @@ -26,7 +26,7 @@ Sanatçılar Şarkılar Çalma listeleri - Bu \u015fark\u0131 oynat\u0131l\u0131rken bir hata olu\u015ftu + Bu \u015fark\u0131 oynat\u0131lamad\u0131. Bu sanat\u00e7\u0131 ile ilgili bilgi bulunamad\u0131 Biyografi Ses odağı reddedildi. @@ -56,7 +56,7 @@ "Phonograph tamamen ücretsiz, material tasarımlı müzik çalar. Yapan" Sonuç bulunamadı Sanatçı resmini güncelle - Güncellenmiş sanatçı resmi. + Sanatçı resmi güncellendi. Sanat\u00e7\u0131 resmi g\u00fcncellenemedi. Güncelleniyor... "Çalma kuyruğuna 1 başlık eklendi." @@ -68,7 +68,7 @@ Çalma listesi %1$s silindi. %1$d parça silindi. \u00c7alma listesi olu\u015fturulamad\u0131 - %1$s çalma listesini silmek istiyor musunuz?]]> + %1$s çalma listesini sil?]]> %1$s \u00e7alma listesini temizlemek istedi\u011finize emin misiniz? Bu geri al\u0131namaz!]]> %1$d çalma listelerini silmek istiyor musunuz?]]> %1$s şarkıyı silmek istiyor musunuz?]]> @@ -174,4 +174,5 @@ Özel teşekkür Sürüm Notları Harici depolamaya erişmek için izin verilmedi + geri diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 1708c353..ef2ec67f 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -174,4 +174,5 @@ 特别感谢 更新日志 访问外部存储的权限被拒绝。 + 返回 diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index 32d15801..3e3948cc 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -5,20 +5,12 @@ \u0020Karim Abou Zeid.\nGoogle+   Twitter\n\n \u0020Aidan Follestad\n\n - - $1.00 - $3.00 - $5.00 - $10.00 - $15.00 - $20.00 - donation_1 + donation_2 donation_3 + donation_4 donation_5 - donation_10 - donation_15 - donation_20 + donation_6 \ No newline at end of file