dev options: add google dns

This commit is contained in:
Yuriy Liskov
2026-01-14 05:46:45 +02:00
parent 8778475ef5
commit e2fc5ff24c
9 changed files with 25 additions and 10 deletions

View File

@@ -1171,8 +1171,8 @@ public class BrowsePresenter extends BasePresenter<BrowseView> implements Sectio
// java.net.UnknownHostException: Unable to resolve host "www.youtube.com": No address associated with hostname
if (error != null && Helpers.contains(error.getMessage(), "No address associated with hostname")) {
PlayerTweaksData playerTweaksData = PlayerTweaksData.instance(getContext());
if (!playerTweaksData.isIPv4DnsPreferred()) {
playerTweaksData.setIPv4DnsPreferred(true);
if (playerTweaksData.getPreferredDnsType() != PlayerTweaksData.DNS_TYPE_IPV4) {
playerTweaksData.setPreferredDnsType(PlayerTweaksData.DNS_TYPE_IPV4);
// Restart app to reinit okhttp internal objects
Utils.restartTheApp(getContext());
}

View File

@@ -261,13 +261,21 @@ public class PlayerSettingsPresenter extends BasePresenter<Void> {
},
mPlayerTweaksData.isOculusQuestFixEnabled()));
options.add(UiOptionItem.from(getContext().getString(R.string.prefer_google_dns),
getContext().getString(R.string.prefer_ipv4_desc),
option -> {
mPlayerTweaksData.setPreferredDnsType(option.isSelected() ? PlayerTweaksData.DNS_TYPE_GOOGLE : PlayerTweaksData.DNS_TYPE_SYSTEM);
mRestartApp = true;
},
mPlayerTweaksData.getPreferredDnsType() == PlayerTweaksData.DNS_TYPE_GOOGLE));
options.add(UiOptionItem.from(getContext().getString(R.string.prefer_ipv4),
getContext().getString(R.string.prefer_ipv4_desc),
option -> {
mPlayerTweaksData.setIPv4DnsPreferred(option.isSelected());
mPlayerTweaksData.setPreferredDnsType(option.isSelected() ? PlayerTweaksData.DNS_TYPE_IPV4 : PlayerTweaksData.DNS_TYPE_SYSTEM);
mRestartApp = true;
},
mPlayerTweaksData.isIPv4DnsPreferred()));
mPlayerTweaksData.getPreferredDnsType() == PlayerTweaksData.DNS_TYPE_IPV4));
// Disable long press on buggy controllers.
options.add(UiOptionItem.from(getContext().getString(R.string.disable_ok_long_press),

View File

@@ -47,6 +47,9 @@ public class PlayerTweaksData implements ProfileChangeListener {
PLAYER_BUTTON_LIKE | PLAYER_BUTTON_DISLIKE | PLAYER_BUTTON_ADD_TO_PLAYLIST | PLAYER_BUTTON_PLAY_PAUSE |
PLAYER_BUTTON_REPEAT_MODE | PLAYER_BUTTON_NEXT | PLAYER_BUTTON_PREVIOUS | PLAYER_BUTTON_HIGH_QUALITY |
PLAYER_BUTTON_VIDEO_INFO | PLAYER_BUTTON_CHAT;
public static final int DNS_TYPE_SYSTEM = GlobalPreferences.DNS_TYPE_SYSTEM;
public static final int DNS_TYPE_IPV4 = GlobalPreferences.DNS_TYPE_IPV4;
public static final int DNS_TYPE_GOOGLE = GlobalPreferences.DNS_TYPE_GOOGLE;
@SuppressLint("StaticFieldLeak")
private static PlayerTweaksData sInstance;
private final AppPrefs mPrefs;
@@ -633,12 +636,12 @@ public class PlayerTweaksData implements ProfileChangeListener {
MediaServiceData.instance().setFormatEnabled(MediaServiceData.FORMATS_EXTENDED_HLS, enable);
}
public boolean isIPv4DnsPreferred() {
return GlobalPreferences.instance(mPrefs.getContext()).isIPv4DnsPreferred();
public int getPreferredDnsType() {
return GlobalPreferences.instance(mPrefs.getContext()).getPreferredDnsType();
}
public void setIPv4DnsPreferred(boolean prefer) {
GlobalPreferences.instance(mPrefs.getContext()).setIPv4DnsPreferred(prefer);
public void setPreferredDnsType(int dnsType) {
GlobalPreferences.instance(mPrefs.getContext()).setPreferredDnsType(dnsType);
}
public boolean isNetworkErrorFixingDisabled() {

View File

@@ -668,6 +668,7 @@
<string name="fullscreen_mode">Полноэкранный режим (без системных панелей)</string>
<string name="player_only_mode">Показывать только плеер, если видео открыто вне приложения</string>
<string name="pinned_channel_rows">Отображать закрепленный канал в виде строк</string>
<string name="prefer_google_dns">Предпочитать Google DNS</string>
<string name="prefer_ipv4">Предпочитать IPv4 DNS</string>
<string name="prefer_ipv4_desc">Можеть исправить случаи, когда приложение вообще не работает.\nВнимание. На некоторых устройствах могут быть вылеты приложения (особенно на Android 8 и приставке Dune HD)</string>
<string name="long_press_for_settings">ДЛИТЕЛЬНОЕ НАЖАТИЕ ДЛЯ НАСТРОЕК</string>

View File

@@ -677,6 +677,7 @@
<string name="fullscreen_mode">Tam ekran modu (sistem çubukları olmadan)</string>
<string name="player_only_mode">Video uygulama dışında açılırsa yalnızca oynatıcıyı göster</string>
<string name="pinned_channel_rows">Sabitlenmiş kanalı satır olarak göster</string>
<string name="prefer_google_dns">Google DNS tercih et</string>
<string name="prefer_ipv4">IPv4 DNS tercih et</string>
<string name="prefer_ipv4_desc">Uygulamanın hiç çalışmadığı durumları düzeltebilir.\nNot: Takılmalara ve çökmelere neden olabilir (özellikle Android 8 cihazlarda ya da Dune HD\'de)</string>
<string name="long_press_for_settings">AYARLAR İÇİN UZUN BASIN</string>

View File

@@ -668,6 +668,7 @@
<string name="fullscreen_mode">Повноекранний режим (без системних панелей)</string>
<string name="player_only_mode">Показувати лише плеєр, якщо відео відкрито поза застосунком</string>
<string name="pinned_channel_rows">Відображати закріплений канал у вигляді рядків</string>
<string name="prefer_google_dns">Надавати перевагу Google DNS</string>
<string name="prefer_ipv4">Надавати перевагу IPv4 DNS</string>
<string name="prefer_ipv4_desc">Може виправити випадки, коли застосунок взагалі не працює.\nУвага. На деяких пристроях можливі падіння застосунку (особливо на Android 8 та пристроях Dune HD)</string>
<string name="long_press_for_settings">ТРИВАЛЕ НАТИСКАННЯ ДЛЯ НАЛАШТУВАНЬ</string>

View File

@@ -675,6 +675,7 @@
<string name="fullscreen_mode">Fullscreen mode (without system bars)</string>
<string name="player_only_mode">Show only the player if the video is opened outside of the app</string>
<string name="pinned_channel_rows">Show pinned channel as rows</string>
<string name="prefer_google_dns">Prefer Google DNS</string>
<string name="prefer_ipv4">Prefer IPv4 DNS</string>
<string name="prefer_ipv4_desc">Could fix situations when the app isn\'t working at all.\nNote. May cause hangs and crashes (especially on Android 8 devices or Dune HD)</string>
<string name="long_press_for_settings">LONG PRESS FOR SETTINGS</string>