From c95e86d0d9acd071e97cd57c02edc154ac062050 Mon Sep 17 00:00:00 2001 From: dhk2 Date: Sun, 17 Jan 2021 13:13:32 -0800 Subject: [PATCH 01/15] fix issue #234 Making X in pip mode stop background audio properly --- .../peertube/activity/VideoPlayActivity.java | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/net/schueller/peertube/activity/VideoPlayActivity.java b/app/src/main/java/net/schueller/peertube/activity/VideoPlayActivity.java index f73041c..0571fe9 100644 --- a/app/src/main/java/net/schueller/peertube/activity/VideoPlayActivity.java +++ b/app/src/main/java/net/schueller/peertube/activity/VideoPlayActivity.java @@ -71,6 +71,7 @@ public class VideoPlayActivity extends AppCompatActivity { private static final String TAG = "VideoPlayActivity"; static boolean floatMode = false; + static boolean fullStop=true; private static final int REQUEST_CODE = 101; private BroadcastReceiver receiver; @@ -138,6 +139,7 @@ public class VideoPlayActivity extends AppCompatActivity { receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { + fullStop=true; String action = intent.getAction(); assert action != null; if (action.equals(ACTION_PAUSE)) { @@ -150,11 +152,12 @@ public class VideoPlayActivity extends AppCompatActivity { } if (action.equals(getString(R.string.app_background_audio))) { - unregisterReceiver(receiver); + safeUnregisterReceiver(); + fullStop=false; finish(); } if (action.equals(ACTION_STOP)) { - unregisterReceiver(receiver); + safeUnregisterReceiver(); finishAndRemoveTask(); } } @@ -173,7 +176,7 @@ public class VideoPlayActivity extends AppCompatActivity { assert videoPlayerFragment != null; videoPlayerFragment.showControls(true); if (receiver != null) { - unregisterReceiver(receiver); + safeUnregisterReceiver(); } Log.v(TAG, "switched to normal"); floatMode = false; @@ -333,9 +336,13 @@ public class VideoPlayActivity extends AppCompatActivity { getSupportFragmentManager().findFragmentById(R.id.video_player_fragment); assert videoPlayerFragment != null; - videoPlayerFragment.stopVideo(); - Log.v(TAG, "onStop()..."); + safeUnregisterReceiver(); + if (fullStop) { + stopService(new Intent(this, VideoPlayerService.class)); + finishAndRemoveTask(); + } + finish(); } @Override @@ -498,5 +505,12 @@ public class VideoPlayActivity extends AppCompatActivity { Log.e(TAG, "videoPlayerFragment is NULL"); } } - + private void safeUnregisterReceiver() + { + try { + unregisterReceiver(receiver); + } catch (Exception e) { + Log.e("VideoPlayerService", "attempted to unregister a nonregistered service"); + } + } } From bf17a9ee61353eadf25d288d97ad9a0464667793 Mon Sep 17 00:00:00 2001 From: dhk2 Date: Sun, 17 Jan 2021 14:34:42 -0800 Subject: [PATCH 02/15] fix issue #244 by adding clear search history option to settings menu --- .../peertube/activity/SettingsActivity.java | 24 +++++++++++++++++ .../peertube/activity/VideoPlayActivity.java | 26 +++++-------------- app/src/main/res/values/constants.xml | 1 + app/src/main/res/xml/root_preferences.xml | 7 +++++ 4 files changed, 38 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/net/schueller/peertube/activity/SettingsActivity.java b/app/src/main/java/net/schueller/peertube/activity/SettingsActivity.java index 147a3c6..fdc65e5 100644 --- a/app/src/main/java/net/schueller/peertube/activity/SettingsActivity.java +++ b/app/src/main/java/net/schueller/peertube/activity/SettingsActivity.java @@ -20,6 +20,7 @@ import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; +import android.provider.SearchRecentSuggestions; import android.util.Log; import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AlertDialog.Builder; @@ -30,6 +31,7 @@ import androidx.preference.PreferenceFragmentCompat; import androidx.preference.SwitchPreference; import net.schueller.peertube.BuildConfig; import net.schueller.peertube.R; +import net.schueller.peertube.provider.SearchSuggestionsProvider; public class SettingsActivity extends CommonActivity { @@ -108,6 +110,28 @@ public class SettingsActivity extends CommonActivity { return true; }); } + //clear search history buttonish + Preference button = findPreference(getString(R.string.pref_clear_history_key)); + button.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + new Builder(preference.getContext()) + .setTitle(R.string.clear_search_history) + .setMessage(R.string.clear_search_history_prompt) + .setIcon(R.drawable.ic_info_black_24dp) + .setNegativeButton(R.string.pref_insecure_confirm_no, (dialog, whichButton) -> { + // do nothing + }) + .setPositiveButton(R.string.pref_insecure_confirm_yes, (dialog, whichButton) -> { + // OK has been pressed + SearchRecentSuggestions suggestions = new SearchRecentSuggestions(getContext(), + SearchSuggestionsProvider.AUTHORITY, + SearchSuggestionsProvider.MODE); + suggestions.clearHistory(); + }).create().show(); + return true; + } + }); } } } \ No newline at end of file diff --git a/app/src/main/java/net/schueller/peertube/activity/VideoPlayActivity.java b/app/src/main/java/net/schueller/peertube/activity/VideoPlayActivity.java index 0571fe9..f73041c 100644 --- a/app/src/main/java/net/schueller/peertube/activity/VideoPlayActivity.java +++ b/app/src/main/java/net/schueller/peertube/activity/VideoPlayActivity.java @@ -71,7 +71,6 @@ public class VideoPlayActivity extends AppCompatActivity { private static final String TAG = "VideoPlayActivity"; static boolean floatMode = false; - static boolean fullStop=true; private static final int REQUEST_CODE = 101; private BroadcastReceiver receiver; @@ -139,7 +138,6 @@ public class VideoPlayActivity extends AppCompatActivity { receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { - fullStop=true; String action = intent.getAction(); assert action != null; if (action.equals(ACTION_PAUSE)) { @@ -152,12 +150,11 @@ public class VideoPlayActivity extends AppCompatActivity { } if (action.equals(getString(R.string.app_background_audio))) { - safeUnregisterReceiver(); - fullStop=false; + unregisterReceiver(receiver); finish(); } if (action.equals(ACTION_STOP)) { - safeUnregisterReceiver(); + unregisterReceiver(receiver); finishAndRemoveTask(); } } @@ -176,7 +173,7 @@ public class VideoPlayActivity extends AppCompatActivity { assert videoPlayerFragment != null; videoPlayerFragment.showControls(true); if (receiver != null) { - safeUnregisterReceiver(); + unregisterReceiver(receiver); } Log.v(TAG, "switched to normal"); floatMode = false; @@ -336,13 +333,9 @@ public class VideoPlayActivity extends AppCompatActivity { getSupportFragmentManager().findFragmentById(R.id.video_player_fragment); assert videoPlayerFragment != null; + videoPlayerFragment.stopVideo(); + Log.v(TAG, "onStop()..."); - safeUnregisterReceiver(); - if (fullStop) { - stopService(new Intent(this, VideoPlayerService.class)); - finishAndRemoveTask(); - } - finish(); } @Override @@ -505,12 +498,5 @@ public class VideoPlayActivity extends AppCompatActivity { Log.e(TAG, "videoPlayerFragment is NULL"); } } - private void safeUnregisterReceiver() - { - try { - unregisterReceiver(receiver); - } catch (Exception e) { - Log.e("VideoPlayerService", "attempted to unregister a nonregistered service"); - } - } + } diff --git a/app/src/main/res/values/constants.xml b/app/src/main/res/values/constants.xml index 7feb602..72c48d6 100644 --- a/app/src/main/res/values/constants.xml +++ b/app/src/main/res/values/constants.xml @@ -17,6 +17,7 @@ pref_accept_insecure + pref_clear_history https://troll.tv AppTheme.BLUE diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml index 96736b3..949d57f 100644 --- a/app/src/main/res/xml/root_preferences.xml +++ b/app/src/main/res/xml/root_preferences.xml @@ -84,6 +84,13 @@ app:title="@string/pref_title_accept_insecure" app:iconSpaceReserved="false"/> + + /> + From b238b8bff9a88f629066f7d27fba9069c91a1d67 Mon Sep 17 00:00:00 2001 From: Nikita Epifanov Date: Mon, 18 Jan 2021 10:56:32 +0000 Subject: [PATCH 03/15] Translated using Weblate (Russian) Currently translated at 100.0% (353 of 353 strings) Translation: PeerTube/Android Translate-URL: https://hosted.weblate.org/projects/peertube/android/ru/ --- app/src/main/res/values-ru/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 01208b9..2935ae4 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -360,4 +360,5 @@ Внимание! Игнорировать незащищенные соединения. Используйте только если знаете сервер к которому подключаетесь. Требуется перезапуск приложения. "Вы собираетесь отключить валидацию всех SSL сертификатов в Thorium. Это может быть очень опасно если peertube сервер вами не контролируется, потому что \"атака посредника\" может направить трафик на другой сервер. Злоумышленник может записывать пароли и другие личные данные." + Сохранить \ No newline at end of file From 30e6c12f7faa45cb0931507a0c764832481fe4ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Mon, 18 Jan 2021 06:26:02 +0000 Subject: [PATCH 04/15] Translated using Weblate (Turkish) Currently translated at 100.0% (353 of 353 strings) Translation: PeerTube/Android Translate-URL: https://hosted.weblate.org/projects/peertube/android/tr/ --- app/src/main/res/values-tr/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 4cda69d..48afa66 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -369,4 +369,5 @@ Gelişmiş SSL Sertifika Denetimini Devre Dışı Bırak Güvenli olmayan bağlantıları yok sayın. Bunu yalnızca bağlandığınız sunucuyu biliyorsanız kullanın. Uygulamanın yeniden başlatılmasını gerektirir. + Kaydet \ No newline at end of file From d09f8458aadf1b4a019b98ff99cf715b2fa1bde9 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Mon, 18 Jan 2021 01:16:28 +0000 Subject: [PATCH 05/15] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (353 of 353 strings) Translation: PeerTube/Android Translate-URL: https://hosted.weblate.org/projects/peertube/android/zh_Hant/ --- app/src/main/res/values-zh-rTW/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 56776c9..f104775 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -354,4 +354,5 @@ 進階 停用 SSL 憑證檢查 忽略不安全的連線。僅在您了解您要連線的伺服器時才使用此選項。需要重新啟動應用程式。 + 儲存 \ No newline at end of file From de9cc8759a510e6ebbc8ae602b1098473c7e313c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Mon, 18 Jan 2021 06:29:21 +0000 Subject: [PATCH 06/15] Translated using Weblate (Turkish) Currently translated at 100.0% (10 of 10 strings) Translation: PeerTube/PlayStoreMeta Translate-URL: https://hosted.weblate.org/projects/peertube/playstoremeta/tr/ --- fastlane/metadata/android/tr-TR/changelogs/1051.txt | 5 +++++ fastlane/metadata/android/tr-TR/changelogs/1052.txt | 2 ++ 2 files changed, 7 insertions(+) create mode 100644 fastlane/metadata/android/tr-TR/changelogs/1051.txt create mode 100644 fastlane/metadata/android/tr-TR/changelogs/1052.txt diff --git a/fastlane/metadata/android/tr-TR/changelogs/1051.txt b/fastlane/metadata/android/tr-TR/changelogs/1051.txt new file mode 100644 index 0000000..2832e31 --- /dev/null +++ b/fastlane/metadata/android/tr-TR/changelogs/1051.txt @@ -0,0 +1,5 @@ +- ilk başlangıçta öntanımlı uygulama dili düzeltildi (@kosharskiy) + - Ayarlar ekranı uk ve ru dilleri çevirileri (@kosharskiy) + - app/build.gradle dosyası temizlendi (@kosharskiy) + - video üst verisi görüntüleme sorunu düzeltildi (@kosharskiy) + - çeviriler güncellendi diff --git a/fastlane/metadata/android/tr-TR/changelogs/1052.txt b/fastlane/metadata/android/tr-TR/changelogs/1052.txt new file mode 100644 index 0000000..abda6f4 --- /dev/null +++ b/fastlane/metadata/android/tr-TR/changelogs/1052.txt @@ -0,0 +1,2 @@ +- Sunucu defterinde sunucu düzenleme uygulandı (@kosharskiy) + - Çeviriler güncellendi From 2f709f8a1ba254a04e045c90de5063795b70f680 Mon Sep 17 00:00:00 2001 From: Ihor Hordiichuk Date: Sun, 17 Jan 2021 20:28:58 +0000 Subject: [PATCH 07/15] Translated using Weblate (Ukrainian) Currently translated at 100.0% (10 of 10 strings) Translation: PeerTube/PlayStoreMeta Translate-URL: https://hosted.weblate.org/projects/peertube/playstoremeta/uk/ --- fastlane/metadata/android/uk/changelogs/1051.txt | 5 +++++ fastlane/metadata/android/uk/changelogs/1052.txt | 2 ++ 2 files changed, 7 insertions(+) create mode 100644 fastlane/metadata/android/uk/changelogs/1051.txt create mode 100644 fastlane/metadata/android/uk/changelogs/1052.txt diff --git a/fastlane/metadata/android/uk/changelogs/1051.txt b/fastlane/metadata/android/uk/changelogs/1051.txt new file mode 100644 index 0000000..3c4a57b --- /dev/null +++ b/fastlane/metadata/android/uk/changelogs/1051.txt @@ -0,0 +1,5 @@ +- виправлено типову мову першого запуску застосунку (@kosharskiy) + - Налаштування перекладів екрана uk і ru мов (@kosharskiy) + - очищення файлу app/build.gradle (@kosharskiy) + - виправлено проблему показу метаданих відео (@kosharskiy) + - оновлено переклади diff --git a/fastlane/metadata/android/uk/changelogs/1052.txt b/fastlane/metadata/android/uk/changelogs/1052.txt new file mode 100644 index 0000000..0eceb4f --- /dev/null +++ b/fastlane/metadata/android/uk/changelogs/1052.txt @@ -0,0 +1,2 @@ +- Реалізовано редагування сервера в книзі серверів (@kosharskiy) + - Оновлено переклади From d32f97ef6847d945d23499d7c62ae5487ef9a0a9 Mon Sep 17 00:00:00 2001 From: Ihor Hordiichuk Date: Sun, 17 Jan 2021 19:23:54 +0000 Subject: [PATCH 08/15] Translated using Weblate (Ukrainian) Currently translated at 100.0% (353 of 353 strings) Translation: PeerTube/Android Translate-URL: https://hosted.weblate.org/projects/peertube/android/uk/ --- app/src/main/res/values-uk/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index bac434a..35e70ec 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -354,4 +354,5 @@ Увага! Ви збираєтеся вимкнути всі перевірки сертифікатів SSL у Thorium. Це може бути дуже небезпечно якщо ви не контролюєте сервер peertube, оскільки атака «людина посередині» може направити трафік на інший сервер без вашого відома. Зловмисник може записувати паролі та інші особисті дані. Додатково + Зберегти \ No newline at end of file From 1fc8f4cbd5af6171c121abc7d6c6afa3a753138c Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Mon, 18 Jan 2021 01:20:03 +0000 Subject: [PATCH 09/15] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (10 of 10 strings) Translation: PeerTube/PlayStoreMeta Translate-URL: https://hosted.weblate.org/projects/peertube/playstoremeta/zh_Hant/ --- fastlane/metadata/android/zh-TW/changelogs/1051.txt | 5 +++++ fastlane/metadata/android/zh-TW/changelogs/1052.txt | 2 ++ 2 files changed, 7 insertions(+) create mode 100644 fastlane/metadata/android/zh-TW/changelogs/1051.txt create mode 100644 fastlane/metadata/android/zh-TW/changelogs/1052.txt diff --git a/fastlane/metadata/android/zh-TW/changelogs/1051.txt b/fastlane/metadata/android/zh-TW/changelogs/1051.txt new file mode 100644 index 0000000..8ee10dd --- /dev/null +++ b/fastlane/metadata/android/zh-TW/changelogs/1051.txt @@ -0,0 +1,5 @@ +- 修復第一次啟動時的預設應用程式語言 (@kosharskiy) + - 英式英語與俄語的設定畫面翻譯 (@kosharskiy) + - 清理 app/build.gradle 檔案 (@kosharskiy) + - 已修復影片詮釋資料顯示問題 (@kosharskiy) + - 更新翻譯 diff --git a/fastlane/metadata/android/zh-TW/changelogs/1052.txt b/fastlane/metadata/android/zh-TW/changelogs/1052.txt new file mode 100644 index 0000000..fe676bd --- /dev/null +++ b/fastlane/metadata/android/zh-TW/changelogs/1052.txt @@ -0,0 +1,2 @@ +- 在伺服器手冊中實作編輯伺服器 (@kosharskiy) + - 更新翻譯 From 1f9bb505b932d09685b81e60d7af3520afefc522 Mon Sep 17 00:00:00 2001 From: algorithm314 Date: Wed, 20 Jan 2021 08:36:46 +0000 Subject: [PATCH 10/15] Translated using Weblate (Greek) Currently translated at 13.0% (46 of 353 strings) Translation: PeerTube/Android Translate-URL: https://hosted.weblate.org/projects/peertube/android/el/ --- app/src/main/res/values-el/strings.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 5c41053..e9ca788 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -40,4 +40,9 @@ 1,5× 0,5× + Αναπαραγωγή στο παρασκήνιο + Εξυπηρετητής PeerTube + Επιλογή γλώσσας βίντεο, αντί να εμφανίζονται όλα τα βίντεο σε όλες τις γλώσσες. + Έκδοση + Άδεια χρήσης \ No newline at end of file From 6bbee2a0f67bcd364683626ba9829c54f8e06738 Mon Sep 17 00:00:00 2001 From: Ihor Hordiichuk Date: Tue, 19 Jan 2021 10:17:01 +0000 Subject: [PATCH 11/15] Translated using Weblate (Ukrainian) Currently translated at 100.0% (10 of 10 strings) Translation: PeerTube/PlayStoreMeta Translate-URL: https://hosted.weblate.org/projects/peertube/playstoremeta/uk/ --- fastlane/metadata/android/uk/changelogs/1049.txt | 2 +- fastlane/metadata/android/uk/full_description.txt | 10 +++++----- fastlane/metadata/android/uk/short_description.txt | 2 +- fastlane/metadata/android/uk/title.txt | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/fastlane/metadata/android/uk/changelogs/1049.txt b/fastlane/metadata/android/uk/changelogs/1049.txt index 43cda85..8de1889 100644 --- a/fastlane/metadata/android/uk/changelogs/1049.txt +++ b/fastlane/metadata/android/uk/changelogs/1049.txt @@ -1,7 +1,7 @@ - додано підтримку перенаправлення гіпертексту в опис (@freeboub) - різні виправлення збоїв (@freeboub) - уникайте звз під час виходу з програми через кнопку спільного доступу (@freeboub) - - Додайно можливість фільтрувати список серверів (@freeboub) + - Додано можливість фільтрувати список серверів (@freeboub) - Управління помилками Refactor Toast для розділення помилки мережі (@freeboub) - збереження співвідношення сторін відео для зображення в зображенні (@freeboub) - панель навігації не відновлювалась після виходу з альбомного режиму (@freeboub) diff --git a/fastlane/metadata/android/uk/full_description.txt b/fastlane/metadata/android/uk/full_description.txt index 3110c73..373f8e8 100644 --- a/fastlane/metadata/android/uk/full_description.txt +++ b/fastlane/metadata/android/uk/full_description.txt @@ -1,4 +1,4 @@ -Thorium - це клієнт PeerTube, який може під'єднуватися до будь-якого сервера peertube, що працює версії v1.1.0-alpha.2 або новіших. +Thorium — це клієнт PeerTube, який може під'єднуватися до будь-якого сервера peertube, що працює на версії v1.1.0-alpha.2 або новіших. PeerTube - це об'єднана (ActivityPub) платформа для потокового відео, що використовує P2P (BitTorrent) безпосередньо у браузері. Додаткові відомості та перелік серверів ви знайдете за адресою https://joinpeertube.org/ . @@ -6,7 +6,7 @@ PeerTube - це об'єднана (ActivityPub) платформа для пот Поточні функції: - Під'єднання до будь-якого сервера PeerTube -- Торрент-відео або пряме відтворення +- Торент-відео або пряме відтворення - Пошук у PeerTube - Завантажити / Поділитися відео - Теми / Темний режим @@ -14,8 +14,8 @@ PeerTube - це об'єднана (ActivityPub) платформа для пот - Повноекранне відтворення в альбомному режимі - Швидкість відтворення - Фільтрувати вміст NSFW -- Аутентифікація / Вхід -- Вподобати / не подобається відео +- Автентифікація / Вхід +- Вподобати/не подобається відео Скоро буде: - Коментувати відео @@ -24,7 +24,7 @@ PeerTube - це об'єднана (ActivityPub) платформа для пот - Звіт про відео Дозволи: -- Доступ до сховища, необхідний для завантаження торрента або завантаження відео. +- Доступ до сховища, необхідний для завантаження торента або завантаження відео. Ліцензовано під загальною публічною ліцензією GNU Affero v3.0 diff --git a/fastlane/metadata/android/uk/short_description.txt b/fastlane/metadata/android/uk/short_description.txt index 54abf3f..4963dc1 100644 --- a/fastlane/metadata/android/uk/short_description.txt +++ b/fastlane/metadata/android/uk/short_description.txt @@ -1 +1 @@ -Thorium - неофіційний програвач PeerTube +Thorium — неофіційний програвач PeerTube diff --git a/fastlane/metadata/android/uk/title.txt b/fastlane/metadata/android/uk/title.txt index 991e4f2..d735596 100644 --- a/fastlane/metadata/android/uk/title.txt +++ b/fastlane/metadata/android/uk/title.txt @@ -1 +1 @@ -Thorium неоф. клієнт PeerTube +Thorium — неофіційний клієнт PeerTube From 7c0efb9af5d6329fa936c057cd19b1e86f0718f6 Mon Sep 17 00:00:00 2001 From: Ihor Hordiichuk Date: Tue, 19 Jan 2021 10:59:22 +0000 Subject: [PATCH 12/15] Translated using Weblate (Ukrainian) Currently translated at 100.0% (353 of 353 strings) Translation: PeerTube/Android Translate-URL: https://hosted.weblate.org/projects/peertube/android/uk/ --- app/src/main/res/values-uk/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 35e70ec..a9693c7 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -323,7 +323,7 @@ UrlVideoPlayActivity Аватар облікового запису Ескіз відео - " Перегляди" + " переглядів" Підписки Локальне Нещодавнє From 79e5191f15cd0457f61c2ff5afd5bb44dd3f682f Mon Sep 17 00:00:00 2001 From: Lazarwolfe Date: Wed, 20 Jan 2021 18:12:59 +0000 Subject: [PATCH 13/15] Translated using Weblate (Spanish) Currently translated at 53.5% (189 of 353 strings) Translation: PeerTube/Android Translate-URL: https://hosted.weblate.org/projects/peertube/android/es/ --- app/src/main/res/values-es/strings.xml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 7686ca0..208bba2 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -174,4 +174,21 @@ Continuar como audio en segundo plano Selecciona el idioma de la interfaz de la aplicación. Reinicia para que los cambios se apliquen. Pausar con el botón de retroceso + Portugués Brasileño (Lenguaje de Señas) + Chino (Lenguaje de señas) + Chino + Checheno + Chamorro + Catalán + Birmano + Búlgaro + Idioma de Señas Británico + Bretón + Bosnio + Bislama + Bengalí (Bangladés) + Inhabilitar certificación SSL + Ignorar conexiones inseguras. Usa esta opción únicamente si conoces el servidor al que te vas a conectar. Requiere reiniciar la aplicación. + La manera en que un vídeo responde al ser enviado al fondo + Pausa la reproducción de fondo al presionar atrás durante la reproducción de vídeo. \ No newline at end of file From c2243b46f64a8b902351ea317e026835eefd59ab Mon Sep 17 00:00:00 2001 From: joaooliva Date: Sat, 23 Jan 2021 00:07:32 +0000 Subject: [PATCH 14/15] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (353 of 353 strings) Translation: PeerTube/Android Translate-URL: https://hosted.weblate.org/projects/peertube/android/pt_BR/ --- app/src/main/res/values-pt-rBR/strings.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 25035ac..75d6f85 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -347,4 +347,12 @@ Configurações Erro de acesso à rede, verifique sua conectividade Filtrar a lista + Avançado + Você está prestes a desativar toda a validação de certificação SSL no Thorium. Desativar isso pode ser muito perigoso se o servidor peertube não estiver sob seu controle, pois um ataque man-in-the-middle pode direcionar tráfego para outro servidor sem seu conhecimento. Um atacador pode gravar senhas e outros dados pessoais. + Sim + Não + Aviso! + Salvar + Desativar check do certificado SSL + Ignorar conexões não seguras. Use isto apenas se você conhece o servidor ao qual está se conectando. Requer o reinício do app. \ No newline at end of file From 3730804c8f4666950a8d0c857248715d23b19e7c Mon Sep 17 00:00:00 2001 From: Stefan Schueller Date: Sun, 24 Jan 2021 00:31:51 +0100 Subject: [PATCH 15/15] Bug fixes, code cleanup --- CHANGELOG.md | 9 ++++++++ app/build.gradle | 12 +++++----- app/src/main/AndroidManifest.xml | 7 ++++++ .../peertube/activity/AccountActivity.java | 3 +-- .../peertube/activity/VideoListActivity.java | 22 ++++++++++--------- .../peertube/adapter/ChannelAdapter.java | 2 +- .../peertube/adapter/ServerSearchAdapter.java | 2 +- .../peertube/adapter/VideoAdapter.java | 2 +- .../fragment/VideoMenuQualityFragment.java | 14 +++++++----- .../fragment/VideoMenuSpeedFragment.java | 2 +- .../fragment/VideoMetaDataFragment.java | 12 +++++----- .../fragment/VideoOptionsFragment.java | 6 ++--- .../fragment/VideoPlayerFragment.java | 12 +++++----- .../peertube/service/VideoPlayerService.java | 21 +++++++++++++----- .../main/res/layout/fragment_video_player.xml | 2 +- app/src/main/res/xml/root_preferences.xml | 1 + build.gradle | 2 +- .../android/en-US/changelogs/1053.txt | 7 ++++++ 18 files changed, 87 insertions(+), 51 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/1053.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 278d0ce..52bc736 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +### Version 1.0.53 Tag: v1.0.53 (2021-01-24) + - Making X in pip mode stop background audio properly (@dhk2) + - Adding clear search history option to settings menu (@dhk2) + - Fix no language selected defaults to all video languages + - Updated icon library + - Added buffering indicator to video playback + - Fixed blank video issues on servers offering 0p video. + - Updated translations + ### Version 1.0.52 Tag: v1.0.52 (2021-01-17) - Implemented edit server in server book (@kosharskiy) - Updated translations diff --git a/app/build.gradle b/app/build.gradle index ef4901c..0f94fb4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -109,11 +109,11 @@ dependencies { implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0" implementation "androidx.fragment:fragment-ktx:$fragment_version" - implementation 'de.hdodenhof:circleimageview:3.0.0' + implementation 'de.hdodenhof:circleimageview:3.1.0' // font awesome - implementation "com.mikepenz:iconics-core:3.1.0" - implementation 'com.mikepenz:fontawesome-typeface:5.3.1.1@aar' + implementation 'com.mikepenz:iconics-core:5.2.4' + implementation 'com.mikepenz:fontawesome-typeface:5.9.0.2-kotlin@aar' // http client / REST implementation 'com.squareup.okhttp3:okhttp:4.9.0' @@ -141,10 +141,10 @@ dependencies { implementation "com.google.android.exoplayer:extension-okhttp:$exoplayer" // date formatter - implementation 'org.ocpsoft.prettytime:prettytime:4.0.4.Final' + implementation 'org.ocpsoft.prettytime:prettytime:5.0.0.Final' // Version comparison - implementation 'org.apache.maven:maven-artifact:3.5.0' + implementation 'org.apache.maven:maven-artifact:3.6.3' // database lib implementation "androidx.room:room-runtime:$room_version" @@ -162,7 +162,7 @@ dependencies { implementation 'androidx.preference:preference-ktx:1.1.1' // testing - testImplementation 'junit:junit:4.13' + testImplementation 'junit:junit:4.13.1' androidTestImplementation 'androidx.test:runner:1.3.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' androidTestImplementation "androidx.room:room-testing:$room_version" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3091705..a872992 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -67,6 +67,13 @@ android:exported="false" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/net/schueller/peertube/activity/AccountActivity.java b/app/src/main/java/net/schueller/peertube/activity/AccountActivity.java index f9006d3..6f933cd 100644 --- a/app/src/main/java/net/schueller/peertube/activity/AccountActivity.java +++ b/app/src/main/java/net/schueller/peertube/activity/AccountActivity.java @@ -24,12 +24,11 @@ import android.view.Menu; import android.view.View; import android.widget.ImageView; import android.widget.TextView; -import android.widget.Toast; import com.google.android.material.bottomnavigation.BottomNavigationView; import com.google.android.material.bottomnavigation.LabelVisibilityMode; -import com.mikepenz.fontawesome_typeface_library.FontAwesome; import com.mikepenz.iconics.IconicsDrawable; +import com.mikepenz.iconics.typeface.library.fontawesome.FontAwesome; import com.squareup.picasso.Picasso; import net.schueller.peertube.R; diff --git a/app/src/main/java/net/schueller/peertube/activity/VideoListActivity.java b/app/src/main/java/net/schueller/peertube/activity/VideoListActivity.java index a760c4a..8ee78a6 100644 --- a/app/src/main/java/net/schueller/peertube/activity/VideoListActivity.java +++ b/app/src/main/java/net/schueller/peertube/activity/VideoListActivity.java @@ -50,11 +50,10 @@ import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.TextView; -import android.widget.Toast; -import com.mikepenz.fontawesome_typeface_library.FontAwesome; import com.mikepenz.iconics.IconicsDrawable; +import com.mikepenz.iconics.typeface.library.fontawesome.FontAwesome; import net.schueller.peertube.R; import net.schueller.peertube.adapter.VideoAdapter; import net.schueller.peertube.helper.APIUrlHelper; @@ -130,15 +129,15 @@ public class VideoListActivity extends CommonActivity { // Set an icon in the ActionBar menu.findItem(R.id.action_account).setIcon( - new IconicsDrawable(this, FontAwesome.Icon.faw_user_circle).actionBar()); + new IconicsDrawable(this, FontAwesome.Icon.faw_user_circle)); menu.findItem(R.id.action_server_address_book).setIcon( - new IconicsDrawable(this, FontAwesome.Icon.faw_server).actionBar()); + new IconicsDrawable(this, FontAwesome.Icon.faw_server)); MenuItem searchMenuItem = menu.findItem(R.id.action_search); searchMenuItem.setIcon( - new IconicsDrawable(this, FontAwesome.Icon.faw_search).actionBar()); + new IconicsDrawable(this, FontAwesome.Icon.faw_search)); // Get the SearchView and set the searchable configuration SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); @@ -324,13 +323,16 @@ public class VideoListActivity extends CommonActivity { SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); String nsfw = sharedPref.getBoolean(getString(R.string.pref_show_nsfw_key), false) ? "both" : "false"; - Locale locale = getResources().getConfiguration().locale; - String country = locale.getLanguage(); +// +// Locale locale = getResources().getConfiguration().locale; +// String country = locale.getLanguage(); +// +// HashSet countries = new HashSet<>(1); +// countries.add(country); - HashSet countries = new HashSet<>(1); - countries.add(country); + // We set this to default to null so that on initial start there are videos listed. + Set languages = sharedPref.getStringSet(getString(R.string.pref_video_language_key), null); - Set languages = sharedPref.getStringSet(getString(R.string.pref_video_language_key), countries); String apiBaseURL = APIUrlHelper.getUrlWithVersion(this); GetVideoDataService service = RetrofitInstance.getRetrofitInstance(apiBaseURL, APIUrlHelper.useInsecureConnection(this)).create(GetVideoDataService.class); diff --git a/app/src/main/java/net/schueller/peertube/adapter/ChannelAdapter.java b/app/src/main/java/net/schueller/peertube/adapter/ChannelAdapter.java index 3e92433..55fbb02 100644 --- a/app/src/main/java/net/schueller/peertube/adapter/ChannelAdapter.java +++ b/app/src/main/java/net/schueller/peertube/adapter/ChannelAdapter.java @@ -115,7 +115,7 @@ public class ChannelAdapter extends RecyclerView.Adapter { diff --git a/app/src/main/java/net/schueller/peertube/adapter/ServerSearchAdapter.java b/app/src/main/java/net/schueller/peertube/adapter/ServerSearchAdapter.java index 6a2c74f..ab9dac9 100644 --- a/app/src/main/java/net/schueller/peertube/adapter/ServerSearchAdapter.java +++ b/app/src/main/java/net/schueller/peertube/adapter/ServerSearchAdapter.java @@ -119,7 +119,7 @@ public class ServerSearchAdapter extends RecyclerView.Adapter { // diff --git a/app/src/main/java/net/schueller/peertube/adapter/VideoAdapter.java b/app/src/main/java/net/schueller/peertube/adapter/VideoAdapter.java index 5c720d3..36b5c81 100644 --- a/app/src/main/java/net/schueller/peertube/adapter/VideoAdapter.java +++ b/app/src/main/java/net/schueller/peertube/adapter/VideoAdapter.java @@ -131,7 +131,7 @@ public class VideoAdapter extends RecyclerView.Adapter { diff --git a/app/src/main/java/net/schueller/peertube/fragment/VideoMenuQualityFragment.java b/app/src/main/java/net/schueller/peertube/fragment/VideoMenuQualityFragment.java index d1de80f..04c5485 100644 --- a/app/src/main/java/net/schueller/peertube/fragment/VideoMenuQualityFragment.java +++ b/app/src/main/java/net/schueller/peertube/fragment/VideoMenuQualityFragment.java @@ -52,9 +52,9 @@ public class VideoMenuQualityFragment extends BottomSheetDialogFragment { if (autoQualityFile == null) { autoQualityFile = new File(); Resolution autoQualityResolution = new Resolution(); - autoQualityResolution.setId(0); + autoQualityResolution.setId(999999); autoQualityResolution.setLabel(context.getString(R.string.menu_video_options_quality_automated)); - autoQualityFile.setId(0); + autoQualityFile.setId(999999); autoQualityFile.setResolution(autoQualityResolution); } if (!mFiles.contains(autoQualityFile)) { @@ -74,7 +74,7 @@ public class VideoMenuQualityFragment extends BottomSheetDialogFragment { false); SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getContext()); - Integer videoQuality = sharedPref.getInt(getString(R.string.pref_quality_key), 0); + Integer videoQuality = sharedPref.getInt(getString(R.string.pref_quality_key), 999999); for (File file : mFiles) { @@ -95,11 +95,13 @@ public class VideoMenuQualityFragment extends BottomSheetDialogFragment { for (File fileV : mFiles) { TextView iconViewV = view.findViewById(fileV.getResolution().getId()); - iconViewV.setText(""); + if (iconViewV != null) { + iconViewV.setText(""); + } } iconView.setText(R.string.video_quality_active_icon); - new Iconics.IconicsBuilder().ctx(getContext()).on(iconView).build(); + new Iconics.Builder().on(iconView).build(); //TODO: set new video quality on running video @@ -112,7 +114,7 @@ public class VideoMenuQualityFragment extends BottomSheetDialogFragment { // Set current if (videoQuality.equals(file.getResolution().getId())) { iconView.setText(R.string.video_quality_active_icon); - new Iconics.IconicsBuilder().ctx(getContext()).on(iconView).build(); + new Iconics.Builder().on(iconView).build(); } } diff --git a/app/src/main/java/net/schueller/peertube/fragment/VideoMenuSpeedFragment.java b/app/src/main/java/net/schueller/peertube/fragment/VideoMenuSpeedFragment.java index da7a2fa..c43f084 100644 --- a/app/src/main/java/net/schueller/peertube/fragment/VideoMenuSpeedFragment.java +++ b/app/src/main/java/net/schueller/peertube/fragment/VideoMenuSpeedFragment.java @@ -100,7 +100,7 @@ public class VideoMenuSpeedFragment extends BottomSheetDialogFragment { videoPlayerService.setPlayBackSpeed(speed); icon.setText(R.string.video_speed_active_icon); - new Iconics.IconicsBuilder().ctx(getContext()).on(icon).build(); + new Iconics.Builder().on(icon).build(); } } \ No newline at end of file diff --git a/app/src/main/java/net/schueller/peertube/fragment/VideoMetaDataFragment.java b/app/src/main/java/net/schueller/peertube/fragment/VideoMetaDataFragment.java index d7f30f7..7061288 100644 --- a/app/src/main/java/net/schueller/peertube/fragment/VideoMetaDataFragment.java +++ b/app/src/main/java/net/schueller/peertube/fragment/VideoMetaDataFragment.java @@ -105,7 +105,7 @@ public class VideoMetaDataFragment extends Fragment { Button thumbsUpButton = activity.findViewById(R.id.video_thumbs_up); defaultTextColor = thumbsUpButton.getTextColors(); thumbsUpButton.setText(R.string.video_thumbs_up_icon); - new Iconics.IconicsBuilder().ctx(context).on(thumbsUpButton).build(); + new Iconics.Builder().on(thumbsUpButton).build(); thumbsUpButton.setOnClickListener(v -> { rateVideo(true, video); }); @@ -113,7 +113,7 @@ public class VideoMetaDataFragment extends Fragment { // Thumbs Down Button thumbsDownButton = activity.findViewById(R.id.video_thumbs_down); thumbsDownButton.setText(R.string.video_thumbs_down_icon); - new Iconics.IconicsBuilder().ctx(context).on(thumbsDownButton).build(); + new Iconics.Builder().on(thumbsDownButton).build(); thumbsDownButton.setOnClickListener(v -> { rateVideo(false, video); }); @@ -145,7 +145,7 @@ public class VideoMetaDataFragment extends Fragment { // Share Button videoShareButton = activity.findViewById(R.id.video_share); videoShareButton.setText(R.string.video_share_icon); - new Iconics.IconicsBuilder().ctx(context).on(videoShareButton).build(); + new Iconics.Builder().on(videoShareButton).build(); videoShareButton.setOnClickListener(v -> { leaveAppExpected = true; @@ -155,7 +155,7 @@ public class VideoMetaDataFragment extends Fragment { // Download Button videoDownloadButton = activity.findViewById(R.id.video_download); videoDownloadButton.setText(R.string.video_download_icon); - new Iconics.IconicsBuilder().ctx(context).on(videoDownloadButton).build(); + new Iconics.Builder().on(videoDownloadButton).build(); videoDownloadButton.setOnClickListener(v -> { // get permission to store file if (ActivityCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { @@ -235,7 +235,7 @@ public class VideoMetaDataFragment extends Fragment { // more button TextView moreButton = activity.findViewById(R.id.moreButton); moreButton.setText(R.string.video_more_icon); - new Iconics.IconicsBuilder().ctx(context).on(moreButton).build(); + new Iconics.Builder().on(moreButton).build(); moreButton.setOnClickListener(v -> { PopupMenu popup = new PopupMenu(context, v); @@ -260,7 +260,7 @@ public class VideoMetaDataFragment extends Fragment { // video player options TextView videoOptions = activity.findViewById(R.id.exo_more); videoOptions.setText(R.string.video_more_icon); - new Iconics.IconicsBuilder().ctx(context).on(videoOptions).build(); + new Iconics.Builder().on(videoOptions).build(); videoOptions.setOnClickListener(v -> { VideoOptionsFragment videoOptionsFragment = diff --git a/app/src/main/java/net/schueller/peertube/fragment/VideoOptionsFragment.java b/app/src/main/java/net/schueller/peertube/fragment/VideoOptionsFragment.java index 6f66fe9..3914d34 100644 --- a/app/src/main/java/net/schueller/peertube/fragment/VideoOptionsFragment.java +++ b/app/src/main/java/net/schueller/peertube/fragment/VideoOptionsFragment.java @@ -77,7 +77,7 @@ public class VideoOptionsFragment extends BottomSheetDialogFragment { iconView.setText(R.string.video_option_speed_icon); - new Iconics.IconicsBuilder().ctx(getContext()).on(iconView).build(); + new Iconics.Builder().on(iconView).build(); textView.setOnClickListener(view1 -> { VideoMenuSpeedFragment videoMenuSpeedFragment = VideoMenuSpeedFragment.newInstance(videoPlayerService); @@ -92,7 +92,7 @@ public class VideoOptionsFragment extends BottomSheetDialogFragment { TextView textView2 = menuRow2.findViewById(R.id.video_quality_text); textView2.setText(String.format(getString(R.string.menu_video_options_quality), getCurrentVideoQuality(files))); iconView2.setText(R.string.video_option_quality_icon); - new Iconics.IconicsBuilder().ctx(getContext()).on(iconView2).build(); + new Iconics.Builder().on(iconView2).build(); textView2.setOnClickListener(view1 -> { VideoMenuQualityFragment videoMenuQualityFragment = VideoMenuQualityFragment.newInstance(getContext(), files); @@ -107,7 +107,7 @@ public class VideoOptionsFragment extends BottomSheetDialogFragment { private String getCurrentVideoQuality(ArrayList files) { SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getContext()); - Integer videoQuality = sharedPref.getInt(getString(R.string.pref_quality_key), 0); + Integer videoQuality = sharedPref.getInt(getString(R.string.pref_quality_key), 999999); for (File file : files) { if (videoQuality.equals(file.getResolution().getId())) { diff --git a/app/src/main/java/net/schueller/peertube/fragment/VideoPlayerFragment.java b/app/src/main/java/net/schueller/peertube/fragment/VideoPlayerFragment.java index f63f3de..b51a988 100644 --- a/app/src/main/java/net/schueller/peertube/fragment/VideoPlayerFragment.java +++ b/app/src/main/java/net/schueller/peertube/fragment/VideoPlayerFragment.java @@ -162,7 +162,7 @@ public class VideoPlayerFragment extends Fragment implements VideoRendererEventL FrameLayout fullscreenButton = activity.findViewById(R.id.exo_fullscreen_button); fullscreenText.setText(R.string.video_expand_icon); - new Iconics.IconicsBuilder().ctx(context).on(fullscreenText).build(); + new Iconics.Builder().on(fullscreenText).build(); fullscreenButton.setOnClickListener(view -> { Log.d(TAG, "Fullscreen"); @@ -239,12 +239,12 @@ public class VideoPlayerFragment extends Fragment implements VideoRendererEventL torrentStream.startStream(stream); } else { - Integer videoQuality = sharedPref.getInt(getString(R.string.pref_quality_key), 0); + Integer videoQuality = sharedPref.getInt(getString(R.string.pref_quality_key), 999999); - //get video qualities - /// # + // get video qualities + // TODO: if auto is set all versions except 0p should be added to a track and have exoplayer auto select optimal bitrate if (video.getFiles().size() > 0) { - String urlToPlay = video.getFiles().get( 0 ).getFileUrl(); + String urlToPlay = video.getFiles().get( 0 ).getFileUrl(); // default, take first found, usually highest res for ( File file : video.getFiles() ) { // Set quality if it matches if ( file.getResolution().getId().equals( videoQuality ) ) { @@ -321,7 +321,7 @@ public class VideoPlayerFragment extends Fragment implements VideoRendererEventL } else { fullscreenButton.setText(R.string.video_expand_icon); } - new Iconics.IconicsBuilder().ctx(getContext()).on(fullscreenButton).build(); + new Iconics.Builder().on(fullscreenButton).build(); } public Boolean getIsFullscreen() { diff --git a/app/src/main/java/net/schueller/peertube/service/VideoPlayerService.java b/app/src/main/java/net/schueller/peertube/service/VideoPlayerService.java index 905aa98..0e73eca 100644 --- a/app/src/main/java/net/schueller/peertube/service/VideoPlayerService.java +++ b/app/src/main/java/net/schueller/peertube/service/VideoPlayerService.java @@ -44,6 +44,7 @@ import android.widget.Toast; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.ExoPlayerFactory; +import com.google.android.exoplayer2.MediaItem; import com.google.android.exoplayer2.PlaybackParameters; import com.google.android.exoplayer2.Player; import com.google.android.exoplayer2.SimpleExoPlayer; @@ -53,6 +54,8 @@ import com.google.android.exoplayer2.ext.mediasession.TimelineQueueNavigator; import com.google.android.exoplayer2.ext.okhttp.OkHttpDataSource; import com.google.android.exoplayer2.ext.okhttp.OkHttpDataSourceFactory; import com.google.android.exoplayer2.source.ExtractorMediaSource; +import com.google.android.exoplayer2.source.MediaSource; +import com.google.android.exoplayer2.source.ProgressiveMediaSource; import com.google.android.exoplayer2.trackselection.DefaultTrackSelector; import com.google.android.exoplayer2.ui.PlayerNotificationManager; import com.google.android.exoplayer2.upstream.DataSource; @@ -102,7 +105,9 @@ public class VideoPlayerService extends Service { super.onCreate(); - player = ExoPlayerFactory.newSimpleInstance(getApplicationContext(), new DefaultTrackSelector()); + player = new SimpleExoPlayer.Builder(getApplicationContext()) + .setTrackSelector(new DefaultTrackSelector(getApplicationContext())) + .build(); // Stop player if audio device changes, e.g. headphones unplugged player.addListener(new Player.EventListener() { @@ -224,14 +229,18 @@ public class VideoPlayerService extends Service { okhttpClientBuilder = getUnsafeOkHttpClientBuilder(); } + // Create a data source factory. DataSource.Factory dataSourceFactory = new OkHttpDataSourceFactory(okhttpClientBuilder.build(), Util.getUserAgent(getApplicationContext(), "PeerTube")); - // This is the MediaSource representing the media to be played. - ExtractorMediaSource videoSource = new ExtractorMediaSource.Factory(dataSourceFactory) - .createMediaSource(Uri.parse(currentStreamUrl)); + // Create a progressive media source pointing to a stream uri. + MediaSource mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory) + .createMediaSource(MediaItem.fromUri(Uri.parse(currentStreamUrl))); - // Prepare the player with the source. - player.prepare(videoSource); + // Set the media source to be played. + player.setMediaSource(mediaSource); + + // Prepare the player. + player.prepare(); // Auto play player.setPlayWhenReady(true); diff --git a/app/src/main/res/layout/fragment_video_player.xml b/app/src/main/res/layout/fragment_video_player.xml index 5f9591c..cf0bd2a 100644 --- a/app/src/main/res/layout/fragment_video_player.xml +++ b/app/src/main/res/layout/fragment_video_player.xml @@ -13,7 +13,7 @@ android:background="@color/videoBackgroundColor" app:controller_layout_id="@layout/video_playback_controls" app:resize_mode="fixed_width" - + app:show_buffering="always" /> diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml index 949d57f..2c76891 100644 --- a/app/src/main/res/xml/root_preferences.xml +++ b/app/src/main/res/xml/root_preferences.xml @@ -39,6 +39,7 @@ app:iconSpaceReserved="false"/>