Merge pull request #7613 from litetex/increase-minsdk

Bump minSdk to 21 - Android 5 / Lollipop
This commit is contained in:
Stypox 2022-07-13 19:09:05 +02:00 committed by GitHub
commit bc3731265e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
122 changed files with 237 additions and 863 deletions

View File

@ -14,15 +14,12 @@ android {
defaultConfig { defaultConfig {
applicationId "org.schabi.newpipe" applicationId "org.schabi.newpipe"
resValue "string", "app_name", "NewPipe" resValue "string", "app_name", "NewPipe"
minSdk 19 minSdk 21
targetSdk 29 targetSdk 29
versionCode 987 versionCode 987
versionName "0.23.1" versionName "0.23.1"
multiDexEnabled true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
javaCompileOptions { javaCompileOptions {
annotationProcessorOptions { annotationProcessorOptions {
@ -210,7 +207,6 @@ dependencies {
implementation "androidx.lifecycle:lifecycle-viewmodel:${androidxLifecycleVersion}" implementation "androidx.lifecycle:lifecycle-viewmodel:${androidxLifecycleVersion}"
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0' implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0'
implementation 'androidx.media:media:1.5.0' implementation 'androidx.media:media:1.5.0'
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'androidx.preference:preference:1.2.0' implementation 'androidx.preference:preference:1.2.0'
implementation 'androidx.recyclerview:recyclerview:1.2.1' implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation "androidx.room:room-runtime:${androidxRoomVersion}" implementation "androidx.room:room-runtime:${androidxRoomVersion}"
@ -220,7 +216,6 @@ dependencies {
// Newer version specified to prevent accessibility regressions with RecyclerView, see: // Newer version specified to prevent accessibility regressions with RecyclerView, see:
// https://developer.android.com/jetpack/androidx/releases/viewpager2#1.1.0-alpha01 // https://developer.android.com/jetpack/androidx/releases/viewpager2#1.1.0-alpha01
implementation 'androidx.viewpager2:viewpager2:1.1.0-beta01' implementation 'androidx.viewpager2:viewpager2:1.1.0-beta01'
implementation 'androidx.webkit:webkit:1.4.0'
implementation "androidx.work:work-runtime-ktx:${androidxWorkVersion}" implementation "androidx.work:work-runtime-ktx:${androidxWorkVersion}"
implementation "androidx.work:work-rxjava3:${androidxWorkVersion}" implementation "androidx.work:work-rxjava3:${androidxWorkVersion}"
implementation 'com.google.android.material:material:1.5.0' implementation 'com.google.android.material:material:1.5.0'

View File

@ -1,5 +1,6 @@
package org.schabi.newpipe; package org.schabi.newpipe;
import android.app.Application;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.util.Log; import android.util.Log;
@ -7,7 +8,6 @@ import android.util.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.core.app.NotificationChannelCompat; import androidx.core.app.NotificationChannelCompat;
import androidx.core.app.NotificationManagerCompat; import androidx.core.app.NotificationManagerCompat;
import androidx.multidex.MultiDexApplication;
import androidx.preference.PreferenceManager; import androidx.preference.PreferenceManager;
import com.jakewharton.processphoenix.ProcessPhoenix; import com.jakewharton.processphoenix.ProcessPhoenix;
@ -56,7 +56,7 @@ import io.reactivex.rxjava3.plugins.RxJavaPlugins;
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>. * along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
*/ */
public class App extends MultiDexApplication { public class App extends Application {
public static final String PACKAGE_NAME = BuildConfig.APPLICATION_ID; public static final String PACKAGE_NAME = BuildConfig.APPLICATION_ID;
private static final String TAG = App.class.toString(); private static final String TAG = App.class.toString();
private static App app; private static App app;

View File

@ -1,7 +1,6 @@
package org.schabi.newpipe; package org.schabi.newpipe;
import android.content.Context; import android.content.Context;
import android.os.Build;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
@ -14,33 +13,18 @@ import org.schabi.newpipe.extractor.downloader.Response;
import org.schabi.newpipe.extractor.exceptions.ReCaptchaException; import org.schabi.newpipe.extractor.exceptions.ReCaptchaException;
import org.schabi.newpipe.util.CookieUtils; import org.schabi.newpipe.util.CookieUtils;
import org.schabi.newpipe.util.InfoCache; import org.schabi.newpipe.util.InfoCache;
import org.schabi.newpipe.util.TLSSocketFactoryCompat;
import java.io.IOException; import java.io.IOException;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;
import javax.net.ssl.X509TrustManager;
import okhttp3.CipherSuite;
import okhttp3.ConnectionSpec;
import okhttp3.OkHttpClient; import okhttp3.OkHttpClient;
import okhttp3.RequestBody; import okhttp3.RequestBody;
import okhttp3.ResponseBody; import okhttp3.ResponseBody;
import static org.schabi.newpipe.MainActivity.DEBUG;
public final class DownloaderImpl extends Downloader { public final class DownloaderImpl extends Downloader {
public static final String USER_AGENT public static final String USER_AGENT
= "Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0"; = "Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0";
@ -54,9 +38,6 @@ public final class DownloaderImpl extends Downloader {
private final OkHttpClient client; private final OkHttpClient client;
private DownloaderImpl(final OkHttpClient.Builder builder) { private DownloaderImpl(final OkHttpClient.Builder builder) {
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {
enableModernTLS(builder);
}
this.client = builder this.client = builder
.readTimeout(30, TimeUnit.SECONDS) .readTimeout(30, TimeUnit.SECONDS)
// .cache(new Cache(new File(context.getExternalCacheDir(), "okhttp"), // .cache(new Cache(new File(context.getExternalCacheDir(), "okhttp"),
@ -81,55 +62,6 @@ public final class DownloaderImpl extends Downloader {
return instance; return instance;
} }
/**
* Enable TLS 1.2 and 1.1 on Android Kitkat. This function is mostly taken
* from the documentation of OkHttpClient.Builder.sslSocketFactory(_,_).
* <p>
* If there is an error, the function will safely fall back to doing nothing
* and printing the error to the console.
* </p>
*
* @param builder The HTTPClient Builder on which TLS is enabled on (will be modified in-place)
*/
private static void enableModernTLS(final OkHttpClient.Builder builder) {
try {
// get the default TrustManager
final TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(
TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init((KeyStore) null);
final TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) {
throw new IllegalStateException("Unexpected default trust managers:"
+ Arrays.toString(trustManagers));
}
final X509TrustManager trustManager = (X509TrustManager) trustManagers[0];
// insert our own TLSSocketFactory
final SSLSocketFactory sslSocketFactory = TLSSocketFactoryCompat.getInstance();
builder.sslSocketFactory(sslSocketFactory, trustManager);
// This will try to enable all modern CipherSuites(+2 more)
// that are supported on the device.
// Necessary because some servers (e.g. Framatube.org)
// don't support the old cipher suites.
// https://github.com/square/okhttp/issues/4053#issuecomment-402579554
final List<CipherSuite> cipherSuites =
new ArrayList<>(ConnectionSpec.MODERN_TLS.cipherSuites());
cipherSuites.add(CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA);
cipherSuites.add(CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA);
final ConnectionSpec legacyTLS = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)
.cipherSuites(cipherSuites.toArray(new CipherSuite[0]))
.build();
builder.connectionSpecs(Arrays.asList(legacyTLS, ConnectionSpec.CLEARTEXT));
} catch (final KeyManagementException | NoSuchAlgorithmException | KeyStoreException e) {
if (DEBUG) {
e.printStackTrace();
}
}
}
public String getCookies(final String url) { public String getCookies(final String url) {
final List<String> resultCookies = new ArrayList<>(); final List<String> resultCookies = new ArrayList<>();
if (url.contains(YOUTUBE_DOMAIN)) { if (url.contains(YOUTUBE_DOMAIN)) {

View File

@ -3,7 +3,6 @@ package org.schabi.newpipe;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import org.schabi.newpipe.util.NavigationHelper; import org.schabi.newpipe.util.NavigationHelper;
@ -44,11 +43,7 @@ public class ExitActivity extends Activity {
protected void onCreate(final Bundle savedInstanceState) { protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { finishAndRemoveTask();
finishAndRemoveTask();
} else {
finish();
}
NavigationHelper.restartApp(this); NavigationHelper.restartApp(this);
} }

View File

@ -28,7 +28,6 @@ import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
@ -86,7 +85,6 @@ import org.schabi.newpipe.util.PermissionHelper;
import org.schabi.newpipe.util.SerializedCache; import org.schabi.newpipe.util.SerializedCache;
import org.schabi.newpipe.util.ServiceHelper; import org.schabi.newpipe.util.ServiceHelper;
import org.schabi.newpipe.util.StateSaver; import org.schabi.newpipe.util.StateSaver;
import org.schabi.newpipe.util.TLSSocketFactoryCompat;
import org.schabi.newpipe.util.ThemeHelper; import org.schabi.newpipe.util.ThemeHelper;
import org.schabi.newpipe.views.FocusOverlayView; import org.schabi.newpipe.views.FocusOverlayView;
@ -131,11 +129,6 @@ public class MainActivity extends AppCompatActivity {
+ "savedInstanceState = [" + savedInstanceState + "]"); + "savedInstanceState = [" + savedInstanceState + "]");
} }
// enable TLS1.1/1.2 for kitkat devices, to fix download and play for media.ccc.de sources
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {
TLSSocketFactoryCompat.setAsDefault();
}
ThemeHelper.setDayNightMode(this); ThemeHelper.setDayNightMode(this);
ThemeHelper.setTheme(this, ServiceHelper.getSelectedServiceId(this)); ThemeHelper.setTheme(this, ServiceHelper.getSelectedServiceId(this));

View File

@ -3,7 +3,6 @@ package org.schabi.newpipe;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
/* /*
@ -40,10 +39,6 @@ public class PanicResponderActivity extends Activity {
ExitActivity.exitAndRemoveFromRecentApps(this); ExitActivity.exitAndRemoveFromRecentApps(this);
} }
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { finishAndRemoveTask();
finishAndRemoveTask();
} else {
finish();
}
} }
} }

View File

@ -114,13 +114,7 @@ class ErrorUtil {
context, context,
context.getString(R.string.error_report_channel_id) context.getString(R.string.error_report_channel_id)
) )
.setSmallIcon( .setSmallIcon(R.drawable.ic_bug_report)
// the vector drawable icon causes crashes on KitKat devices
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
R.drawable.ic_bug_report
else
android.R.drawable.stat_notify_error
)
.setContentTitle(context.getString(R.string.error_report_notification_title)) .setContentTitle(context.getString(R.string.error_report_notification_title))
.setContentText(context.getString(errorInfo.messageStringId)) .setContentText(context.getString(errorInfo.messageStringId))
.setAutoCancel(true) .setAutoCancel(true)

View File

@ -3,14 +3,15 @@ package org.schabi.newpipe.error;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log; import android.util.Log;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.webkit.CookieManager; import android.webkit.CookieManager;
import android.webkit.WebResourceRequest;
import android.webkit.WebSettings; import android.webkit.WebSettings;
import android.webkit.WebView; import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
@ -18,7 +19,6 @@ import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NavUtils; import androidx.core.app.NavUtils;
import androidx.preference.PreferenceManager; import androidx.preference.PreferenceManager;
import androidx.webkit.WebViewClientCompat;
import org.schabi.newpipe.databinding.ActivityRecaptchaBinding; import org.schabi.newpipe.databinding.ActivityRecaptchaBinding;
import org.schabi.newpipe.DownloaderImpl; import org.schabi.newpipe.DownloaderImpl;
@ -86,14 +86,15 @@ public class ReCaptchaActivity extends AppCompatActivity {
webSettings.setJavaScriptEnabled(true); webSettings.setJavaScriptEnabled(true);
webSettings.setUserAgentString(DownloaderImpl.USER_AGENT); webSettings.setUserAgentString(DownloaderImpl.USER_AGENT);
recaptchaBinding.reCaptchaWebView.setWebViewClient(new WebViewClientCompat() { recaptchaBinding.reCaptchaWebView.setWebViewClient(new WebViewClient() {
@Override @Override
public boolean shouldOverrideUrlLoading(final WebView view, final String url) { public boolean shouldOverrideUrlLoading(final WebView view,
final WebResourceRequest request) {
if (MainActivity.DEBUG) { if (MainActivity.DEBUG) {
Log.d(TAG, "shouldOverrideUrlLoading: url=" + url); Log.d(TAG, "shouldOverrideUrlLoading: url=" + request.getUrl().toString());
} }
handleCookiesFromUrl(url); handleCookiesFromUrl(request.getUrl().toString());
return false; return false;
} }
@ -107,12 +108,7 @@ public class ReCaptchaActivity extends AppCompatActivity {
// cleaning cache, history and cookies from webView // cleaning cache, history and cookies from webView
recaptchaBinding.reCaptchaWebView.clearCache(true); recaptchaBinding.reCaptchaWebView.clearCache(true);
recaptchaBinding.reCaptchaWebView.clearHistory(); recaptchaBinding.reCaptchaWebView.clearHistory();
final CookieManager cookieManager = CookieManager.getInstance(); CookieManager.getInstance().removeAllCookies(null);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
cookieManager.removeAllCookies(value -> { });
} else {
cookieManager.removeAllCookie();
}
recaptchaBinding.reCaptchaWebView.loadUrl(url); recaptchaBinding.reCaptchaWebView.loadUrl(url);
} }

View File

@ -1922,13 +1922,7 @@ public final class VideoDetailFragment
} }
scrollToTop(); scrollToTop();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { addVideoPlayerView();
addVideoPlayerView();
} else {
// KitKat needs a delay before addVideoPlayerView call or it reports wrong height in
// activity.getWindow().getDecorView().getHeight()
new Handler().post(this::addVideoPlayerView);
}
} }
@Override @Override
@ -1991,10 +1985,8 @@ public final class VideoDetailFragment
} }
activity.getWindow().getDecorView().setSystemUiVisibility(0); activity.getWindow().getDecorView().setSystemUiVisibility(0);
activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { activity.getWindow().setStatusBarColor(ThemeHelper.resolveColorFromAttr(
activity.getWindow().setStatusBarColor(ThemeHelper.resolveColorFromAttr( requireContext(), android.R.attr.colorPrimary));
requireContext(), android.R.attr.colorPrimary));
}
} }
private void hideSystemUi() { private void hideSystemUi() {
@ -2025,8 +2017,7 @@ public final class VideoDetailFragment
} }
activity.getWindow().getDecorView().setSystemUiVisibility(visibility); activity.getWindow().getDecorView().setSystemUiVisibility(visibility);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP if (isInMultiWindow || (isPlayerAvailable() && player.isFullscreen())) {
&& (isInMultiWindow || (isPlayerAvailable() && player.isFullscreen()))) {
activity.getWindow().setStatusBarColor(Color.TRANSPARENT); activity.getWindow().setStatusBarColor(Color.TRANSPARENT);
activity.getWindow().setNavigationBarColor(Color.TRANSPARENT); activity.getWindow().setNavigationBarColor(Color.TRANSPARENT);
} }

View File

@ -497,9 +497,6 @@ public class SearchFragment extends BaseListFragment<SearchInfo, ListExtractor.I
+ lastSearchedString); + lastSearchedString);
} }
searchEditText.setText(searchString); searchEditText.setText(searchString);
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP) {
searchEditText.setHintTextColor(searchEditText.getTextColors().withAlpha(128));
}
if (TextUtils.isEmpty(searchString) || TextUtils.isEmpty(searchEditText.getText())) { if (TextUtils.isEmpty(searchString) || TextUtils.isEmpty(searchEditText.getText())) {
searchToolbarContainer.setTranslationX(100); searchToolbarContainer.setTranslationX(100);

View File

@ -12,7 +12,6 @@ import android.view.View
import androidx.annotation.ColorInt import androidx.annotation.ColorInt
import androidx.annotation.FloatRange import androidx.annotation.FloatRange
import androidx.core.animation.addListener import androidx.core.animation.addListener
import androidx.core.view.ViewCompat
import androidx.core.view.isGone import androidx.core.view.isGone
import androidx.core.view.isInvisible import androidx.core.view.isInvisible
import androidx.core.view.isVisible import androidx.core.view.isVisible
@ -21,10 +20,6 @@ import org.schabi.newpipe.MainActivity
private const val TAG = "ViewUtils" private const val TAG = "ViewUtils"
inline var View.backgroundTintListCompat: ColorStateList?
get() = ViewCompat.getBackgroundTintList(this)
set(value) = ViewCompat.setBackgroundTintList(this, value)
/** /**
* Animate the view. * Animate the view.
* *
@ -106,11 +101,11 @@ fun View.animateBackgroundColor(duration: Long, @ColorInt colorStart: Int, @Colo
viewPropertyAnimator.interpolator = FastOutSlowInInterpolator() viewPropertyAnimator.interpolator = FastOutSlowInInterpolator()
viewPropertyAnimator.duration = duration viewPropertyAnimator.duration = duration
viewPropertyAnimator.addUpdateListener { animation: ValueAnimator -> viewPropertyAnimator.addUpdateListener { animation: ValueAnimator ->
backgroundTintListCompat = ColorStateList(empty, intArrayOf(animation.animatedValue as Int)) backgroundTintList = ColorStateList(empty, intArrayOf(animation.animatedValue as Int))
} }
viewPropertyAnimator.addListener( viewPropertyAnimator.addListener(
onCancel = { backgroundTintListCompat = ColorStateList(empty, intArrayOf(colorEnd)) }, onCancel = { backgroundTintList = ColorStateList(empty, intArrayOf(colorEnd)) },
onEnd = { backgroundTintListCompat = ColorStateList(empty, intArrayOf(colorEnd)) } onEnd = { backgroundTintList = ColorStateList(empty, intArrayOf(colorEnd)) }
) )
viewPropertyAnimator.start() viewPropertyAnimator.start()
} }

View File

@ -8,12 +8,10 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.view.inputmethod.InputMethodManager import android.view.inputmethod.InputMethodManager
import android.widget.Toast import android.widget.Toast
import androidx.appcompat.content.res.AppCompatResources
import androidx.core.content.getSystemService import androidx.core.content.getSystemService
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import androidx.core.view.isGone import androidx.core.view.isGone
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.core.widget.ImageViewCompat
import androidx.core.widget.doOnTextChanged import androidx.core.widget.doOnTextChanged
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
@ -124,14 +122,6 @@ class FeedGroupDialog : DialogFragment(), BackPressable {
_feedGroupCreateBinding = DialogFeedGroupCreateBinding.bind(view) _feedGroupCreateBinding = DialogFeedGroupCreateBinding.bind(view)
_searchLayoutBinding = feedGroupCreateBinding.subscriptionsHeaderSearchContainer _searchLayoutBinding = feedGroupCreateBinding.subscriptionsHeaderSearchContainer
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP) {
// KitKat doesn't apply container's theme to <include> content
val contrastColor = AppCompatResources.getColorStateList(requireContext(), R.color.contrastColor)
searchLayoutBinding.toolbarSearchEditText.setTextColor(contrastColor)
searchLayoutBinding.toolbarSearchEditText.setHintTextColor(contrastColor.withAlpha(128))
ImageViewCompat.setImageTintList(searchLayoutBinding.toolbarSearchClearIcon, contrastColor)
}
viewModel = ViewModelProvider( viewModel = ViewModelProvider(
this, this,
FeedGroupDialogViewModel.Factory( FeedGroupDialogViewModel.Factory(

View File

@ -1963,10 +1963,9 @@ public final class Player implements
private void showSystemUIPartially() { private void showSystemUIPartially() {
final AppCompatActivity activity = getParentActivity(); final AppCompatActivity activity = getParentActivity();
if (isFullscreen && activity != null) { if (isFullscreen && activity != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { activity.getWindow().setStatusBarColor(Color.TRANSPARENT);
activity.getWindow().setStatusBarColor(Color.TRANSPARENT); activity.getWindow().setNavigationBarColor(Color.TRANSPARENT);
activity.getWindow().setNavigationBarColor(Color.TRANSPARENT);
}
final int visibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE final int visibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION; | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;

View File

@ -74,7 +74,7 @@ public class AppearanceSettingsFragment extends BasePreferenceFragment {
defaultPreferences.edit().putBoolean(Constants.KEY_THEME_CHANGE, true).apply(); defaultPreferences.edit().putBoolean(Constants.KEY_THEME_CHANGE, true).apply();
defaultPreferences.edit().putString(themeKey, newValue.toString()).apply(); defaultPreferences.edit().putString(themeKey, newValue.toString()).apply();
ThemeHelper.setDayNightMode(getContext(), newValue.toString()); ThemeHelper.setDayNightMode(requireContext(), newValue.toString());
if (!newValue.equals(beginningThemeKey) && getActivity() != null) { if (!newValue.equals(beginningThemeKey) && getActivity() != null) {
// if it's not the current theme // if it's not the current theme

View File

@ -66,16 +66,10 @@ public class DownloadSettingsFragment extends BasePreferenceFragment {
prefStorageAsk = findPreference(downloadStorageAsk); prefStorageAsk = findPreference(downloadStorageAsk);
final SwitchPreferenceCompat prefUseSaf = findPreference(storageUseSafPreference); final SwitchPreferenceCompat prefUseSaf = findPreference(storageUseSafPreference);
prefUseSaf.setDefaultValue(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP);
prefUseSaf.setChecked(NewPipeSettings.useStorageAccessFramework(ctx)); prefUseSaf.setChecked(NewPipeSettings.useStorageAccessFramework(ctx));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|| Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
prefUseSaf.setEnabled(false); prefUseSaf.setEnabled(false);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { prefUseSaf.setSummary(R.string.downloads_storage_use_saf_summary_api_29);
prefUseSaf.setSummary(R.string.downloads_storage_use_saf_summary_api_29);
} else {
prefUseSaf.setSummary(R.string.downloads_storage_use_saf_summary_api_19);
}
prefStorageAsk.setSummary(R.string.downloads_storage_ask_summary_no_saf_notice); prefStorageAsk.setSummary(R.string.downloads_storage_ask_summary_no_saf_notice);
} }
@ -253,8 +247,7 @@ public class DownloadSettingsFragment extends BasePreferenceFragment {
forgetSAFTree(context, defaultPreferences.getString(key, "")); forgetSAFTree(context, defaultPreferences.getString(key, ""));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP if (!FilePickerActivityHelper.isOwnFileUri(context, uri)) {
&& !FilePickerActivityHelper.isOwnFileUri(context, uri)) {
// steps to acquire the selected path: // steps to acquire the selected path:
// 1. acquire permissions on the new save path // 1. acquire permissions on the new save path
// 2. save the new path, if step(2) was successful // 2. save the new path, if step(2) was successful

View File

@ -116,7 +116,7 @@ public final class NewPipeSettings {
public static boolean useStorageAccessFramework(final Context context) { public static boolean useStorageAccessFramework(final Context context) {
// There's a FireOS bug which prevents SAF open/close dialogs from being confirmed with a // There's a FireOS bug which prevents SAF open/close dialogs from being confirmed with a
// remote (see #6455). // remote (see #6455).
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP || DeviceUtils.isFireTv()) { if (DeviceUtils.isFireTv()) {
return false; return false;
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
return true; return true;

View File

@ -1,19 +1,9 @@
package org.schabi.newpipe.settings package org.schabi.newpipe.settings
import android.os.Build
import android.os.Bundle import android.os.Bundle
import androidx.preference.Preference
import org.schabi.newpipe.R
class NotificationSettingsFragment : BasePreferenceFragment() { class NotificationSettingsFragment : BasePreferenceFragment() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
addPreferencesFromResourceRegistry() addPreferencesFromResourceRegistry()
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
val colorizePref: Preference? = findPreference(getString(R.string.notification_colorize_key))
colorizePref?.let {
preferenceScreen.removePreference(it)
}
}
} }
} }

View File

@ -1,19 +1,9 @@
package org.schabi.newpipe.settings package org.schabi.newpipe.settings
import android.os.Build
import android.os.Bundle import android.os.Bundle
import androidx.preference.Preference
import org.schabi.newpipe.R
class PlayerNotificationSettingsFragment : BasePreferenceFragment() { class PlayerNotificationSettingsFragment : BasePreferenceFragment() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
addPreferencesFromResourceRegistry() addPreferencesFromResourceRegistry()
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
val colorizePref: Preference? = findPreference(getString(R.string.notification_colorize_key))
colorizePref?.let {
preferenceScreen.removePreference(it)
}
}
} }
} }

View File

@ -2,7 +2,6 @@ package org.schabi.newpipe.settings;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.os.Build;
import android.util.Log; import android.util.Log;
import androidx.preference.PreferenceManager; import androidx.preference.PreferenceManager;
@ -71,12 +70,12 @@ public final class SettingMigrations {
// and standard way to access folders and files to be used consistently everywhere. // and standard way to access folders and files to be used consistently everywhere.
// We reset the setting to its default value, i.e. "use SAF", since now there are no // We reset the setting to its default value, i.e. "use SAF", since now there are no
// more issues with SAF and users should use that one instead of the old // more issues with SAF and users should use that one instead of the old
// NoNonsenseFilePicker. SAF does not work on KitKat and below, though, so the setting // NoNonsenseFilePicker. Also, there's a bug on FireOS in which SAF open/close
// is set to false in that case. Also, there's a bug on FireOS in which SAF open/close
// dialogs cannot be confirmed with a remote (see #6455). // dialogs cannot be confirmed with a remote (see #6455).
sp.edit().putBoolean(context.getString(R.string.storage_use_saf), sp.edit().putBoolean(
Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP context.getString(R.string.storage_use_saf),
&& !DeviceUtils.isFireTv()).apply(); !DeviceUtils.isFireTv()
).apply();
} }
}; };

View File

@ -218,7 +218,7 @@ public class NotificationActionsPreference extends Preference {
final int color = ThemeHelper.resolveColorFromAttr(getContext(), final int color = ThemeHelper.resolveColorFromAttr(getContext(),
android.R.attr.textColorPrimary); android.R.attr.textColorPrimary);
drawable = DrawableCompat.wrap(drawable).mutate(); drawable = DrawableCompat.wrap(drawable).mutate();
DrawableCompat.setTint(drawable, color); drawable.setTint(color);
radioButton.setCompoundDrawablesRelativeWithIntrinsicBounds(null, radioButton.setCompoundDrawablesRelativeWithIntrinsicBounds(null,
null, drawable, null); null, drawable, null);
} }

View File

@ -6,7 +6,6 @@ import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter; import android.graphics.PorterDuffColorFilter;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.graphics.drawable.RippleDrawable; import android.graphics.drawable.RippleDrawable;
import android.os.Build;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.util.Log; import android.util.Log;
@ -65,8 +64,7 @@ public final class PreferenceSearchResultHighlighter {
recyclerView.findViewHolderForAdapterPosition(position); recyclerView.findViewHolderForAdapterPosition(position);
if (holder != null) { if (holder != null) {
final Drawable background = holder.itemView.getBackground(); final Drawable background = holder.itemView.getBackground();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP if (background instanceof RippleDrawable) {
&& background instanceof RippleDrawable) {
showRippleAnimation((RippleDrawable) background); showRippleAnimation((RippleDrawable) background);
return; return;
} }

View File

@ -5,7 +5,6 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.database.Cursor; import android.database.Cursor;
import android.net.Uri; import android.net.Uri;
import android.os.Build;
import android.provider.DocumentsContract; import android.provider.DocumentsContract;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@ -53,10 +52,6 @@ public class StoredDirectoryHelper {
throw new IOException(e); throw new IOException(e);
} }
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
throw new IOException("Storage Access Framework with Directory API is not available");
}
this.docTree = DocumentFile.fromTreeUri(context, path); this.docTree = DocumentFile.fromTreeUri(context, path);
if (this.docTree == null) { if (this.docTree == null) {
@ -73,7 +68,7 @@ public class StoredDirectoryHelper {
final String[] filename = splitFilename(name); final String[] filename = splitFilename(name);
final String lcFilename = filename[0].toLowerCase(); final String lcFilename = filename[0].toLowerCase();
if (docTree == null || Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { if (docTree == null) {
for (final File file : ioTree.listFiles()) { for (final File file : ioTree.listFiles()) {
addIfStartWith(matches, lcFilename, file.getName()); addIfStartWith(matches, lcFilename, file.getName());
} }
@ -277,7 +272,7 @@ public class StoredDirectoryHelper {
*/ */
static DocumentFile findFileSAFHelper(@Nullable final Context context, final DocumentFile tree, static DocumentFile findFileSAFHelper(@Nullable final Context context, final DocumentFile tree,
final String filename) { final String filename) {
if (context == null || Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { if (context == null) {
return tree.findFile(filename); // warning: this is very slow return tree.findFile(filename); // warning: this is very slow
} }

View File

@ -1,6 +1,5 @@
package org.schabi.newpipe.streams.io; package org.schabi.newpipe.streams.io;
import android.annotation.TargetApi;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@ -74,7 +73,6 @@ public class StoredFileHelper implements Serializable {
this.tag = tag; this.tag = tag;
} }
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
StoredFileHelper(@Nullable final Context context, final DocumentFile tree, StoredFileHelper(@Nullable final Context context, final DocumentFile tree,
final String filename, final String mime, final boolean safe) final String filename, final String mime, final boolean safe)
throws IOException { throws IOException {
@ -124,7 +122,6 @@ public class StoredFileHelper implements Serializable {
this.srcType = mime; this.srcType = mime;
} }
@TargetApi(Build.VERSION_CODES.KITKAT)
public StoredFileHelper(final Context context, @Nullable final Uri parent, public StoredFileHelper(final Context context, @Nullable final Uri parent,
@NonNull final Uri path, final String tag) throws IOException { @NonNull final Uri path, final String tag) throws IOException {
this.tag = tag; this.tag = tag;

View File

@ -65,7 +65,7 @@ public final class DeviceUtils {
boolean isTv = ContextCompat.getSystemService(context, UiModeManager.class) boolean isTv = ContextCompat.getSystemService(context, UiModeManager.class)
.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION .getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION
|| isFireTv() || isFireTv()
|| pm.hasSystemFeature(PackageManager.FEATURE_TELEVISION); || pm.hasSystemFeature(PackageManager.FEATURE_LEANBACK);
// from https://stackoverflow.com/a/58932366 // from https://stackoverflow.com/a/58932366
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
@ -77,10 +77,6 @@ public final class DeviceUtils {
&& pm.hasSystemFeature(PackageManager.FEATURE_ETHERNET)); && pm.hasSystemFeature(PackageManager.FEATURE_ETHERNET));
} }
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
isTv = isTv || pm.hasSystemFeature(PackageManager.FEATURE_LEANBACK);
}
DeviceUtils.isTV = isTv; DeviceUtils.isTV = isTv;
return DeviceUtils.isTV; return DeviceUtils.isTV;
} }
@ -131,11 +127,10 @@ public final class DeviceUtils {
/** /**
* Some devices have broken tunneled video playback but claim to support it. * Some devices have broken tunneled video playback but claim to support it.
* See https://github.com/TeamNewPipe/NewPipe/issues/5911 * See https://github.com/TeamNewPipe/NewPipe/issues/5911
* @return false if Kitkat (does not support tunneling) or affected device * @return false if affected device
*/ */
public static boolean shouldSupportMediaTunneling() { public static boolean shouldSupportMediaTunneling() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP return !HI3798MV200
&& !HI3798MV200
&& !CVT_MT5886_EU_1G && !CVT_MT5886_EU_1G
&& !REALTEKATV && !REALTEKATV
&& !QM16XE_U; && !QM16XE_U;

View File

@ -37,7 +37,6 @@ public final class PermissionHelper {
return checkWriteStoragePermissions(activity, requestCode); return checkWriteStoragePermissions(activity, requestCode);
} }
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
public static boolean checkReadStoragePermissions(final Activity activity, public static boolean checkReadStoragePermissions(final Activity activity,
final int requestCode) { final int requestCode) {
if (ContextCompat.checkSelfPermission(activity, Manifest.permission.READ_EXTERNAL_STORAGE) if (ContextCompat.checkSelfPermission(activity, Manifest.permission.READ_EXTERNAL_STORAGE)

View File

@ -1,104 +0,0 @@
package org.schabi.newpipe.util;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import android.util.Log;
/**
* This is an extension of the SSLSocketFactory which enables TLS 1.2 and 1.1.
* Created for usage on Android 4.1-4.4 devices, which haven't enabled those by default.
*/
public class TLSSocketFactoryCompat extends SSLSocketFactory {
private static final String TAG = "TLSSocketFactoryCom";
private static TLSSocketFactoryCompat instance = null;
private final SSLSocketFactory internalSSLSocketFactory;
public TLSSocketFactoryCompat() throws KeyManagementException, NoSuchAlgorithmException {
final SSLContext context = SSLContext.getInstance("TLS");
context.init(null, null, null);
internalSSLSocketFactory = context.getSocketFactory();
}
public static TLSSocketFactoryCompat getInstance()
throws NoSuchAlgorithmException, KeyManagementException {
if (instance != null) {
return instance;
}
instance = new TLSSocketFactoryCompat();
return instance;
}
public static void setAsDefault() {
try {
HttpsURLConnection.setDefaultSSLSocketFactory(getInstance());
} catch (NoSuchAlgorithmException | KeyManagementException e) {
Log.e(TAG, "Unable to setAsDefault", e);
}
}
@Override
public String[] getDefaultCipherSuites() {
return internalSSLSocketFactory.getDefaultCipherSuites();
}
@Override
public String[] getSupportedCipherSuites() {
return internalSSLSocketFactory.getSupportedCipherSuites();
}
@Override
public Socket createSocket() throws IOException {
return enableTLSOnSocket(internalSSLSocketFactory.createSocket());
}
@Override
public Socket createSocket(final Socket s, final String host, final int port,
final boolean autoClose) throws IOException {
return enableTLSOnSocket(internalSSLSocketFactory.createSocket(s, host, port, autoClose));
}
@Override
public Socket createSocket(final String host, final int port) throws IOException {
return enableTLSOnSocket(internalSSLSocketFactory.createSocket(host, port));
}
@Override
public Socket createSocket(final String host, final int port, final InetAddress localHost,
final int localPort) throws IOException {
return enableTLSOnSocket(internalSSLSocketFactory.createSocket(
host, port, localHost, localPort));
}
@Override
public Socket createSocket(final InetAddress host, final int port) throws IOException {
return enableTLSOnSocket(internalSSLSocketFactory.createSocket(host, port));
}
@Override
public Socket createSocket(final InetAddress address, final int port,
final InetAddress localAddress, final int localPort)
throws IOException {
return enableTLSOnSocket(internalSSLSocketFactory.createSocket(
address, port, localAddress, localPort));
}
private Socket enableTLSOnSocket(final Socket socket) {
if (socket instanceof SSLSocket) {
((SSLSocket) socket).setEnabledProtocols(new String[]{"TLSv1.1", "TLSv1.2"});
}
return socket;
}
}

View File

@ -185,17 +185,10 @@ public final class ShareUtils {
} }
// Migrate any clip data and flags from the original intent. // Migrate any clip data and flags from the original intent.
final int permFlags; final int permFlags = intent.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { | Intent.FLAG_GRANT_WRITE_URI_PERMISSION
permFlags = intent.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION
| Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_PREFIX_URI_PERMISSION);
| Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION
| Intent.FLAG_GRANT_PREFIX_URI_PERMISSION);
} else {
permFlags = intent.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION
| Intent.FLAG_GRANT_WRITE_URI_PERMISSION
| Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
}
if (permFlags != 0) { if (permFlags != 0) {
ClipData targetClipData = intent.getClipData(); ClipData targetClipData = intent.getClipData();
if (targetClipData == null && intent.getData() != null) { if (targetClipData == null && intent.getData() != null) {

View File

@ -21,7 +21,6 @@ package org.schabi.newpipe.views;
import android.animation.ValueAnimator; import android.animation.ValueAnimator;
import android.content.Context; import android.content.Context;
import android.os.Build;
import android.os.Parcelable; import android.os.Parcelable;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.Log; import android.util.Log;
@ -29,7 +28,6 @@ import android.widget.LinearLayout;
import androidx.annotation.IntDef; import androidx.annotation.IntDef;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import org.schabi.newpipe.ktx.ViewUtils; import org.schabi.newpipe.ktx.ViewUtils;
@ -76,7 +74,6 @@ public class CollapsibleView extends LinearLayout {
super(context, attrs, defStyleAttr); super(context, attrs, defStyleAttr);
} }
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public CollapsibleView(final Context context, final AttributeSet attrs, final int defStyleAttr, public CollapsibleView(final Context context, final AttributeSet attrs, final int defStyleAttr,
final int defStyleRes) { final int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes); super(context, attrs, defStyleAttr, defStyleRes);

View File

@ -1,7 +1,6 @@
package org.schabi.newpipe.views; package org.schabi.newpipe.views;
import android.content.Context; import android.content.Context;
import android.os.Build;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.SurfaceView; import android.view.SurfaceView;
@ -45,10 +44,7 @@ public class ExpandableSurfaceView extends SurfaceView {
scaleX = 1.0f; scaleX = 1.0f;
scaleY = 1.0f; scaleY = 1.0f;
if (resizeMode == RESIZE_MODE_FIT if (resizeMode == RESIZE_MODE_FIT) {
// KitKat doesn't work well when a view has a scale like needed for ZOOM
|| (resizeMode == RESIZE_MODE_ZOOM
&& Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP)) {
if (aspectDeformation > 0) { if (aspectDeformation > 0) {
height = (int) (width / videoAspectRatio); height = (int) (width / videoAspectRatio);
} else { } else {

View File

@ -17,10 +17,8 @@
*/ */
package org.schabi.newpipe.views; package org.schabi.newpipe.views;
import android.annotation.TargetApi;
import android.content.Context; import android.content.Context;
import android.graphics.Rect; import android.graphics.Rect;
import android.os.Build;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -74,7 +72,6 @@ public final class FocusAwareCoordinator extends CoordinatorLayout {
* Makes possible for multiple fragments to co-exist. Without this code * Makes possible for multiple fragments to co-exist. Without this code
* the first ViewGroup who consumes will be the last who receive the insets * the first ViewGroup who consumes will be the last who receive the insets
*/ */
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override @Override
public WindowInsets dispatchApplyWindowInsets(final WindowInsets insets) { public WindowInsets dispatchApplyWindowInsets(final WindowInsets insets) {
boolean consumed = false; boolean consumed = false;

View File

@ -1,6 +1,5 @@
package us.shandian.giga.get; package us.shandian.giga.get;
import android.os.Build;
import android.os.Handler; import android.os.Handler;
import android.system.ErrnoException; import android.system.ErrnoException;
import android.system.OsConstants; import android.system.OsConstants;
@ -316,16 +315,14 @@ public class DownloadMission extends Mission {
public synchronized void notifyError(int code, Exception err) { public synchronized void notifyError(int code, Exception err) {
Log.e(TAG, "notifyError() code = " + code, err); Log.e(TAG, "notifyError() code = " + code, err);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if (err != null && err.getCause() instanceof ErrnoException) {
if (err != null && err.getCause() instanceof ErrnoException) { int errno = ((ErrnoException) err.getCause()).errno;
int errno = ((ErrnoException) err.getCause()).errno; if (errno == OsConstants.ENOSPC) {
if (errno == OsConstants.ENOSPC) { code = ERROR_INSUFFICIENT_STORAGE;
code = ERROR_INSUFFICIENT_STORAGE; err = null;
err = null; } else if (errno == OsConstants.EACCES) {
} else if (errno == OsConstants.EACCES) { code = ERROR_PERMISSION_DENIED;
code = ERROR_PERMISSION_DENIED; err = null;
err = null;
}
} }
} }

View File

@ -4,10 +4,8 @@ import android.app.Notification;
import android.app.NotificationManager; import android.app.NotificationManager;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.app.Service; import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.graphics.Bitmap; import android.graphics.Bitmap;
@ -18,7 +16,6 @@ import android.net.NetworkInfo;
import android.net.NetworkRequest; import android.net.NetworkRequest;
import android.net.Uri; import android.net.Uri;
import android.os.Binder; import android.os.Binder;
import android.os.Build;
import android.os.Handler; import android.os.Handler;
import android.os.Handler.Callback; import android.os.Handler.Callback;
import android.os.IBinder; import android.os.IBinder;
@ -100,7 +97,6 @@ public class DownloadManagerService extends Service {
private final ArrayList<Callback> mEchoObservers = new ArrayList<>(1); private final ArrayList<Callback> mEchoObservers = new ArrayList<>(1);
private ConnectivityManager mConnectivityManager; private ConnectivityManager mConnectivityManager;
private BroadcastReceiver mNetworkStateListener = null;
private ConnectivityManager.NetworkCallback mNetworkStateListenerL = null; private ConnectivityManager.NetworkCallback mNetworkStateListenerL = null;
private SharedPreferences mPrefs = null; private SharedPreferences mPrefs = null;
@ -166,28 +162,18 @@ public class DownloadManagerService extends Service {
mConnectivityManager = ContextCompat.getSystemService(this, mConnectivityManager = ContextCompat.getSystemService(this,
ConnectivityManager.class); ConnectivityManager.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { mNetworkStateListenerL = new ConnectivityManager.NetworkCallback() {
mNetworkStateListenerL = new ConnectivityManager.NetworkCallback() { @Override
@Override public void onAvailable(Network network) {
public void onAvailable(Network network) { handleConnectivityState(false);
handleConnectivityState(false); }
}
@Override @Override
public void onLost(Network network) { public void onLost(Network network) {
handleConnectivityState(false); handleConnectivityState(false);
} }
}; };
mConnectivityManager.registerNetworkCallback(new NetworkRequest.Builder().build(), mNetworkStateListenerL); mConnectivityManager.registerNetworkCallback(new NetworkRequest.Builder().build(), mNetworkStateListenerL);
} else {
mNetworkStateListener = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
handleConnectivityState(false);
}
};
registerReceiver(mNetworkStateListener, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
}
mPrefs.registerOnSharedPreferenceChangeListener(mPrefChangeListener); mPrefs.registerOnSharedPreferenceChangeListener(mPrefChangeListener);
@ -246,10 +232,7 @@ public class DownloadManagerService extends Service {
manageLock(false); manageLock(false);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) mConnectivityManager.unregisterNetworkCallback(mNetworkStateListenerL);
mConnectivityManager.unregisterNetworkCallback(mNetworkStateListenerL);
else
unregisterReceiver(mNetworkStateListener);
mPrefs.unregisterOnSharedPreferenceChangeListener(mPrefChangeListener); mPrefs.unregisterOnSharedPreferenceChangeListener(mPrefChangeListener);
@ -263,21 +246,6 @@ public class DownloadManagerService extends Service {
@Override @Override
public IBinder onBind(Intent intent) { public IBinder onBind(Intent intent) {
/*
int permissionCheck;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
permissionCheck = PermissionChecker.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE);
if (permissionCheck == PermissionChecker.PERMISSION_DENIED) {
Toast.makeText(this, "Permission denied (read)", Toast.LENGTH_SHORT).show();
}
}
permissionCheck = PermissionChecker.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permissionCheck == PermissionChecker.PERMISSION_DENIED) {
Toast.makeText(this, "Permission denied (write)", Toast.LENGTH_SHORT).show();
}
*/
return mBinder; return mBinder;
} }
@ -473,12 +441,7 @@ public class DownloadManagerService extends Service {
if (downloadDoneCount == 1) { if (downloadDoneCount == 1) {
downloadDoneList.append(name); downloadDoneList.append(name);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { downloadDoneNotification.setContentTitle(null);
downloadDoneNotification.setContentTitle(getString(R.string.app_name));
} else {
downloadDoneNotification.setContentTitle(null);
}
downloadDoneNotification.setContentText(Localization.downloadCount(this, downloadDoneCount)); downloadDoneNotification.setContentText(Localization.downloadCount(this, downloadDoneCount));
downloadDoneNotification.setStyle(new NotificationCompat.BigTextStyle() downloadDoneNotification.setStyle(new NotificationCompat.BigTextStyle()
.setBigContentTitle(Localization.downloadCount(this, downloadDoneCount)) .setBigContentTitle(Localization.downloadCount(this, downloadDoneCount))
@ -511,16 +474,10 @@ public class DownloadManagerService extends Service {
.setContentIntent(mOpenDownloadList); .setContentIntent(mOpenDownloadList);
} }
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { downloadFailedNotification.setContentTitle(getString(R.string.download_failed));
downloadFailedNotification.setContentTitle(getString(R.string.app_name)); downloadFailedNotification.setContentText(mission.storage.getName());
downloadFailedNotification.setStyle(new NotificationCompat.BigTextStyle() downloadFailedNotification.setStyle(new NotificationCompat.BigTextStyle()
.bigText(getString(R.string.download_failed).concat(": ").concat(mission.storage.getName()))); .bigText(mission.storage.getName()));
} else {
downloadFailedNotification.setContentTitle(getString(R.string.download_failed));
downloadFailedNotification.setContentText(mission.storage.getName());
downloadFailedNotification.setStyle(new NotificationCompat.BigTextStyle()
.bigText(mission.storage.getName()));
}
mNotificationManager.notify(id, downloadFailedNotification.build()); mNotificationManager.notify(id, downloadFailedNotification.build());
} }
@ -556,12 +513,7 @@ public class DownloadManagerService extends Service {
if (path.charAt(0) == File.separatorChar) { if (path.charAt(0) == File.separatorChar) {
Log.i(TAG, "Old save path style present: " + path); Log.i(TAG, "Old save path style present: " + path);
path = "";
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP)
path = Uri.fromFile(new File(path)).toString();
else
path = "";
mPrefs.edit().putString(getString(prefKey), "").apply(); mPrefs.edit().putString(getString(prefKey), "").apply();
} }

View File

@ -350,10 +350,8 @@ public class MissionAdapter extends Adapter<ViewHolder> implements Handler.Callb
Intent intent = new Intent(Intent.ACTION_VIEW); Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(resolveShareableUri(mission), mimeType); intent.setDataAndType(resolveShareableUri(mission), mimeType);
intent.addFlags(FLAG_GRANT_READ_URI_PERMISSION); intent.addFlags(FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(FLAG_GRANT_PREFIX_URI_PERMISSION);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
intent.addFlags(FLAG_GRANT_PREFIX_URI_PERMISSION);
}
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) {
intent.addFlags(FLAG_ACTIVITY_NEW_TASK); intent.addFlags(FLAG_ACTIVITY_NEW_TASK);
} }

View File

@ -138,8 +138,8 @@
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
android:scaleType="fitCenter" android:scaleType="fitCenter"
android:src="@drawable/ic_pause"
android:tint="?attr/colorAccent" android:tint="?attr/colorAccent"
app:srcCompat="@drawable/ic_pause"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<ProgressBar <ProgressBar
@ -199,8 +199,8 @@
android:gravity="center" android:gravity="center"
android:minWidth="50dp" android:minWidth="50dp"
android:scaleType="fitCenter" android:scaleType="fitCenter"
android:src="@drawable/ic_previous"
android:tint="?attr/colorAccent" android:tint="?attr/colorAccent"
app:srcCompat="@drawable/ic_previous"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<ImageButton <ImageButton
@ -214,8 +214,8 @@
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
android:scaleType="fitXY" android:scaleType="fitXY"
android:src="@drawable/ic_repeat"
android:tint="?attr/colorAccent" android:tint="?attr/colorAccent"
app:srcCompat="@drawable/ic_repeat"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<View <View
@ -235,8 +235,8 @@
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
android:scaleType="fitXY" android:scaleType="fitXY"
android:src="@drawable/ic_shuffle"
android:tint="?attr/colorAccent" android:tint="?attr/colorAccent"
app:srcCompat="@drawable/ic_shuffle"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<androidx.appcompat.widget.AppCompatImageButton <androidx.appcompat.widget.AppCompatImageButton
@ -253,8 +253,8 @@
android:gravity="center" android:gravity="center"
android:minWidth="50dp" android:minWidth="50dp"
android:scaleType="fitCenter" android:scaleType="fitCenter"
android:src="@drawable/ic_next"
android:tint="?attr/colorAccent" android:tint="?attr/colorAccent"
app:srcCompat="@drawable/ic_next"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
</RelativeLayout> </RelativeLayout>
</RelativeLayout> </RelativeLayout>

View File

@ -65,8 +65,8 @@
android:layout_height="64dp" android:layout_height="64dp"
android:layout_gravity="center" android:layout_gravity="center"
android:background="@android:color/transparent" android:background="@android:color/transparent"
android:src="@drawable/ic_play_arrow_shadow"
android:visibility="invisible" android:visibility="invisible"
app:srcCompat="@drawable/ic_play_arrow_shadow"
tools:ignore="ContentDescription" tools:ignore="ContentDescription"
tools:visibility="visible" /> tools:visibility="visible" />
@ -199,7 +199,7 @@
android:layout_gravity="top|end" android:layout_gravity="top|end"
android:layout_marginTop="11dp" android:layout_marginTop="11dp"
android:layout_marginEnd="10dp" android:layout_marginEnd="10dp"
app:srcCompat="@drawable/ic_expand_more" android:src="@drawable/ic_expand_more"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
</FrameLayout> </FrameLayout>
@ -326,18 +326,6 @@
tools:text="Uploader" /> tools:text="Uploader" />
</LinearLayout> </LinearLayout>
<!--<Button
android:id="@+id/detail_uploader_subscribe"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|right"
android:layout_marginRight="12dp"
android:text="@string/rss_button_title"
android:textSize="12sp"
android:theme="@style/RedButton"
app:drawableLeftCompat="@drawable/ic_rss_feed"
tools:ignore="RtlHardcoded"
android:visibility="gone"/>-->
</LinearLayout> </LinearLayout>
<!-- VIEW & THUMBS --> <!-- VIEW & THUMBS -->
@ -369,7 +357,7 @@
android:layout_height="@dimen/video_item_detail_like_image_height" android:layout_height="@dimen/video_item_detail_like_image_height"
android:layout_below="@id/detail_view_count_view" android:layout_below="@id/detail_view_count_view"
android:contentDescription="@string/detail_likes_img_view_description" android:contentDescription="@string/detail_likes_img_view_description"
app:srcCompat="@drawable/ic_thumb_up" /> android:src="@drawable/ic_thumb_up" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView
android:id="@+id/detail_thumbs_up_count_view" android:id="@+id/detail_thumbs_up_count_view"
@ -393,7 +381,7 @@
android:layout_marginLeft="12dp" android:layout_marginLeft="12dp"
android:layout_toRightOf="@id/detail_thumbs_up_count_view" android:layout_toRightOf="@id/detail_thumbs_up_count_view"
android:contentDescription="@string/detail_dislikes_img_view_description" android:contentDescription="@string/detail_dislikes_img_view_description"
app:srcCompat="@drawable/ic_thumb_down" android:src="@drawable/ic_thumb_down"
tools:ignore="RtlHardcoded" /> tools:ignore="RtlHardcoded" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView
@ -447,12 +435,12 @@
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true" android:clickable="true"
android:contentDescription="@string/add_to_playlist" android:contentDescription="@string/add_to_playlist"
android:drawableTop="@drawable/ic_playlist_add"
android:focusable="true" android:focusable="true"
android:gravity="center" android:gravity="center"
android:paddingVertical="@dimen/detail_control_padding" android:paddingVertical="@dimen/detail_control_padding"
android:text="@string/controls_add_to_playlist_title" android:text="@string/controls_add_to_playlist_title"
android:textSize="@dimen/detail_control_text_size" android:textSize="@dimen/detail_control_text_size" />
app:drawableTopCompat="@drawable/ic_playlist_add" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView
android:id="@+id/detail_controls_background" android:id="@+id/detail_controls_background"
@ -463,12 +451,12 @@
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true" android:clickable="true"
android:contentDescription="@string/play_audio" android:contentDescription="@string/play_audio"
android:drawableTop="@drawable/ic_headset"
android:focusable="true" android:focusable="true"
android:gravity="center" android:gravity="center"
android:paddingVertical="@dimen/detail_control_padding" android:paddingVertical="@dimen/detail_control_padding"
android:text="@string/controls_background_title" android:text="@string/controls_background_title"
android:textSize="@dimen/detail_control_text_size" android:textSize="@dimen/detail_control_text_size" />
app:drawableTopCompat="@drawable/ic_headset" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView
android:id="@+id/detail_controls_popup" android:id="@+id/detail_controls_popup"
@ -479,12 +467,12 @@
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true" android:clickable="true"
android:contentDescription="@string/open_in_popup_mode" android:contentDescription="@string/open_in_popup_mode"
android:drawableTop="@drawable/ic_picture_in_picture"
android:focusable="true" android:focusable="true"
android:gravity="center" android:gravity="center"
android:paddingVertical="@dimen/detail_control_padding" android:paddingVertical="@dimen/detail_control_padding"
android:text="@string/controls_popup_title" android:text="@string/controls_popup_title"
android:textSize="@dimen/detail_control_text_size" android:textSize="@dimen/detail_control_text_size" />
app:drawableTopCompat="@drawable/ic_picture_in_picture" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView
android:id="@+id/detail_controls_download" android:id="@+id/detail_controls_download"
@ -495,12 +483,12 @@
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true" android:clickable="true"
android:contentDescription="@string/controls_download_desc" android:contentDescription="@string/controls_download_desc"
android:drawableTop="@drawable/ic_file_download"
android:focusable="true" android:focusable="true"
android:gravity="center" android:gravity="center"
android:paddingVertical="@dimen/detail_control_padding" android:paddingVertical="@dimen/detail_control_padding"
android:text="@string/download" android:text="@string/download"
android:textSize="@dimen/detail_control_text_size" android:textSize="@dimen/detail_control_text_size" />
app:drawableTopCompat="@drawable/ic_file_download" />
</LinearLayout> </LinearLayout>
@ -526,12 +514,12 @@
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true" android:clickable="true"
android:contentDescription="@string/share" android:contentDescription="@string/share"
android:drawableTop="@drawable/ic_share"
android:focusable="true" android:focusable="true"
android:gravity="center" android:gravity="center"
android:paddingVertical="@dimen/detail_control_padding" android:paddingVertical="@dimen/detail_control_padding"
android:text="@string/share" android:text="@string/share"
android:textSize="@dimen/detail_control_text_size" android:textSize="@dimen/detail_control_text_size" />
app:drawableTopCompat="@drawable/ic_share" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView
android:id="@+id/detail_controls_open_in_browser" android:id="@+id/detail_controls_open_in_browser"
@ -542,12 +530,12 @@
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true" android:clickable="true"
android:contentDescription="@string/open_in_browser" android:contentDescription="@string/open_in_browser"
android:drawableTop="@drawable/ic_language"
android:focusable="true" android:focusable="true"
android:gravity="center" android:gravity="center"
android:paddingVertical="@dimen/detail_control_padding" android:paddingVertical="@dimen/detail_control_padding"
android:text="@string/open_in_browser" android:text="@string/open_in_browser"
android:textSize="@dimen/detail_control_text_size" android:textSize="@dimen/detail_control_text_size" />
app:drawableTopCompat="@drawable/ic_language" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView
android:id="@+id/detail_controls_play_with_kodi" android:id="@+id/detail_controls_play_with_kodi"
@ -558,14 +546,14 @@
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true" android:clickable="true"
android:contentDescription="@string/play_with_kodi_title" android:contentDescription="@string/play_with_kodi_title"
android:drawableTop="@drawable/ic_cast"
android:focusable="true" android:focusable="true"
android:gravity="center" android:gravity="center"
android:paddingVertical="@dimen/detail_control_padding" android:paddingVertical="@dimen/detail_control_padding"
android:text="@string/play_with_kodi_title" android:text="@string/play_with_kodi_title"
android:textSize="@dimen/detail_control_text_size" android:textSize="@dimen/detail_control_text_size" />
app:drawableTopCompat="@drawable/ic_cast" />
<TextView <org.schabi.newpipe.views.NewPipeTextView
android:id="@+id/detail_controls_crash_the_player" android:id="@+id/detail_controls_crash_the_player"
android:layout_width="@dimen/detail_control_width" android:layout_width="@dimen/detail_control_width"
android:layout_height="@dimen/detail_control_height" android:layout_height="@dimen/detail_control_height"
@ -574,12 +562,12 @@
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true" android:clickable="true"
android:contentDescription="@string/crash_the_player" android:contentDescription="@string/crash_the_player"
android:drawableTop="@drawable/ic_bug_report"
android:focusable="true" android:focusable="true"
android:gravity="center" android:gravity="center"
android:paddingVertical="@dimen/detail_control_padding" android:paddingVertical="@dimen/detail_control_padding"
android:text="@string/crash_the_player" android:text="@string/crash_the_player"
android:textSize="@dimen/detail_control_text_size" android:textSize="@dimen/detail_control_text_size" />
app:drawableTopCompat="@drawable/ic_bug_report" />
</LinearLayout> </LinearLayout>
@ -719,7 +707,7 @@
android:scaleType="center" android:scaleType="center"
android:focusable="true" android:focusable="true"
android:focusedByDefault="true" android:focusedByDefault="true"
app:srcCompat="@drawable/ic_play_arrow" android:src="@drawable/ic_play_arrow"
tools:ignore="ContentDescription,RtlHardcoded" /> tools:ignore="ContentDescription,RtlHardcoded" />
<ImageButton <ImageButton
@ -729,7 +717,7 @@
android:background="?attr/selectableItemBackground" android:background="?attr/selectableItemBackground"
android:padding="10dp" android:padding="10dp"
android:scaleType="center" android:scaleType="center"
app:srcCompat="@drawable/ic_close" android:src="@drawable/ic_close"
tools:ignore="ContentDescription,RtlHardcoded" /> tools:ignore="ContentDescription,RtlHardcoded" />
</LinearLayout> </LinearLayout>

View File

@ -174,8 +174,8 @@
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
android:scaleType="fitXY" android:scaleType="fitXY"
android:src="@drawable/ic_repeat"
android:tint="?attr/colorAccent" android:tint="?attr/colorAccent"
app:srcCompat="@drawable/ic_repeat"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<androidx.appcompat.widget.AppCompatImageButton <androidx.appcompat.widget.AppCompatImageButton
@ -189,8 +189,8 @@
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
android:scaleType="fitCenter" android:scaleType="fitCenter"
android:src="@drawable/ic_previous"
android:tint="?attr/colorAccent" android:tint="?attr/colorAccent"
app:srcCompat="@drawable/ic_previous"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<ImageButton <ImageButton
@ -219,8 +219,8 @@
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
android:scaleType="fitCenter" android:scaleType="fitCenter"
android:src="@drawable/ic_pause"
android:tint="?attr/colorAccent" android:tint="?attr/colorAccent"
app:srcCompat="@drawable/ic_pause"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<ProgressBar <ProgressBar
@ -268,8 +268,8 @@
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
android:scaleType="fitCenter" android:scaleType="fitCenter"
android:src="@drawable/ic_next"
android:tint="?attr/colorAccent" android:tint="?attr/colorAccent"
app:srcCompat="@drawable/ic_next"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<ImageButton <ImageButton
@ -284,8 +284,8 @@
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
android:scaleType="fitXY" android:scaleType="fitXY"
android:src="@drawable/ic_shuffle"
android:tint="?attr/colorAccent" android:tint="?attr/colorAccent"
app:srcCompat="@drawable/ic_shuffle"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
</RelativeLayout> </RelativeLayout>

View File

@ -193,8 +193,8 @@
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:minWidth="0dp" android:minWidth="0dp"
android:scaleType="centerInside" android:scaleType="centerInside"
android:src="@drawable/ic_delete"
android:visibility="gone" android:visibility="gone"
app:srcCompat="@drawable/ic_delete"
tools:ignore="ContentDescription" tools:ignore="ContentDescription"
tools:visibility="visible" /> tools:visibility="visible" />

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
@ -154,7 +153,7 @@
android:layout_alignParentEnd="true" android:layout_alignParentEnd="true"
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
app:srcCompat="@drawable/ic_expand_more" android:src="@drawable/ic_expand_more"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<LinearLayout <LinearLayout

View File

@ -1,5 +1,4 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
@ -20,7 +19,7 @@
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_marginLeft="12dp" android:layout_marginLeft="12dp"
android:layout_marginRight="12dp" android:layout_marginRight="12dp"
app:srcCompat="@drawable/ic_playlist_add" android:src="@drawable/ic_playlist_add"
tools:ignore="ContentDescription,RtlHardcoded" /> tools:ignore="ContentDescription,RtlHardcoded" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView

View File

@ -39,7 +39,7 @@
android:layout_width="@dimen/drawer_header_newpipe_icon_size" android:layout_width="@dimen/drawer_header_newpipe_icon_size"
android:layout_height="@dimen/drawer_header_newpipe_icon_size" android:layout_height="@dimen/drawer_header_newpipe_icon_size"
android:layout_marginEnd="@dimen/drawer_header_newpipe_icon_title_space" android:layout_marginEnd="@dimen/drawer_header_newpipe_icon_title_space"
app:srcCompat="@drawable/splash_foreground" android:src="@drawable/splash_foreground"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView
@ -86,7 +86,7 @@
android:scaleType="fitCenter" android:scaleType="fitCenter"
app:tint="@color/drawer_header_font_color" app:tint="@color/drawer_header_font_color"
tools:ignore="ContentDescription" tools:ignore="ContentDescription"
tools:srcCompat="@drawable/ic_smart_display" /> tools:src="@drawable/ic_smart_display" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView
android:id="@+id/drawer_header_service_view" android:id="@+id/drawer_header_service_view"
@ -104,7 +104,7 @@
android:layout_width="24dp" android:layout_width="24dp"
android:layout_height="24dp" android:layout_height="24dp"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
app:srcCompat="@drawable/ic_arrow_drop_down" android:src="@drawable/ic_arrow_drop_down"
app:tint="@color/drawer_header_font_color" app:tint="@color/drawer_header_font_color"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
</LinearLayout> </LinearLayout>

View File

@ -24,7 +24,7 @@
android:layout_height="14dp" android:layout_height="14dp"
android:layout_gravity="center" android:layout_gravity="center"
android:scaleType="centerInside" android:scaleType="centerInside"
app:srcCompat="@drawable/ic_add" android:src="@drawable/ic_add"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView

View File

@ -55,7 +55,7 @@
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingRight="16dp" android:paddingRight="16dp"
android:paddingBottom="12dp" android:paddingBottom="12dp"
app:srcCompat="@drawable/ic_drag_handle" android:src="@drawable/ic_drag_handle"
tools:ignore="ContentDescription,RtlHardcoded" /> tools:ignore="ContentDescription,RtlHardcoded" />
</RelativeLayout> </RelativeLayout>
</androidx.cardview.widget.CardView> </androidx.cardview.widget.CardView>

View File

@ -1,5 +1,4 @@
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" <androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
@ -20,7 +19,7 @@
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:contentDescription="@string/app_name" android:contentDescription="@string/app_name"
app:srcCompat="@mipmap/ic_launcher" /> android:src="@mipmap/ic_launcher" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView
android:layout_width="wrap_content" android:layout_width="wrap_content"

View File

@ -40,10 +40,10 @@
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
android:src="@drawable/ic_add"
app:backgroundTint="?attr/colorPrimary" app:backgroundTint="?attr/colorPrimary"
app:fabSize="auto" app:fabSize="auto"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent" />
app:srcCompat="@drawable/ic_add" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -38,11 +38,11 @@
android:contentDescription="@string/description_select_enable" android:contentDescription="@string/description_select_enable"
android:focusable="true" android:focusable="true"
android:padding="5dp" android:padding="5dp"
android:src="@drawable/ic_select_all"
app:layout_constraintBottom_toTopOf="@+id/barrier" app:layout_constraintBottom_toTopOf="@+id/barrier"
app:layout_constraintDimensionRatio="1" app:layout_constraintDimensionRatio="1"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent" />
app:srcCompat="@drawable/ic_select_all" />
<androidx.constraintlayout.widget.Barrier <androidx.constraintlayout.widget.Barrier
android:id="@+id/barrier" android:id="@+id/barrier"

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
@ -57,7 +56,7 @@
android:layout_alignParentEnd="true" android:layout_alignParentEnd="true"
android:layout_marginStart="6dp" android:layout_marginStart="6dp"
android:layout_marginEnd="12dp" android:layout_marginEnd="12dp"
app:srcCompat="@drawable/ic_refresh" android:src="@drawable/ic_refresh"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<View <View

View File

@ -44,8 +44,8 @@
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
android:src="@drawable/ic_add"
app:backgroundTint="?attr/colorPrimary" app:backgroundTint="?attr/colorPrimary"
app:fabSize="auto" app:fabSize="auto" />
app:srcCompat="@drawable/ic_add" />
</RelativeLayout> </RelativeLayout>

View File

@ -55,8 +55,8 @@
android:layout_height="64dp" android:layout_height="64dp"
android:layout_gravity="center" android:layout_gravity="center"
android:background="@android:color/transparent" android:background="@android:color/transparent"
android:src="@drawable/ic_play_arrow_shadow"
android:visibility="invisible" android:visibility="invisible"
app:srcCompat="@drawable/ic_play_arrow_shadow"
tools:ignore="ContentDescription" tools:ignore="ContentDescription"
tools:visibility="visible" /> tools:visibility="visible" />
@ -187,7 +187,7 @@
android:layout_gravity="top|end" android:layout_gravity="top|end"
android:layout_marginTop="11dp" android:layout_marginTop="11dp"
android:layout_marginEnd="10dp" android:layout_marginEnd="10dp"
app:srcCompat="@drawable/ic_expand_more" android:src="@drawable/ic_expand_more"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
</FrameLayout> </FrameLayout>
@ -313,19 +313,6 @@
tools:text="Uploader" /> tools:text="Uploader" />
</LinearLayout> </LinearLayout>
<!--<Button
android:id="@+id/detail_uploader_subscribe"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|right"
android:layout_marginRight="12dp"
android:text="@string/rss_button_title"
android:textSize="12sp"
android:theme="@style/RedButton"
app:drawableLeftCompat="@drawable/ic_rss_feed"
tools:ignore="RtlHardcoded"
android:visibility="gone"/>-->
</LinearLayout> </LinearLayout>
<!-- VIEW & THUMBS --> <!-- VIEW & THUMBS -->
@ -357,7 +344,7 @@
android:layout_height="@dimen/video_item_detail_like_image_height" android:layout_height="@dimen/video_item_detail_like_image_height"
android:layout_below="@id/detail_view_count_view" android:layout_below="@id/detail_view_count_view"
android:contentDescription="@string/detail_likes_img_view_description" android:contentDescription="@string/detail_likes_img_view_description"
app:srcCompat="@drawable/ic_thumb_up" /> android:src="@drawable/ic_thumb_up" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView
android:id="@+id/detail_thumbs_up_count_view" android:id="@+id/detail_thumbs_up_count_view"
@ -381,7 +368,7 @@
android:layout_marginLeft="12dp" android:layout_marginLeft="12dp"
android:layout_toRightOf="@id/detail_thumbs_up_count_view" android:layout_toRightOf="@id/detail_thumbs_up_count_view"
android:contentDescription="@string/detail_dislikes_img_view_description" android:contentDescription="@string/detail_dislikes_img_view_description"
app:srcCompat="@drawable/ic_thumb_down" android:src="@drawable/ic_thumb_down"
tools:ignore="RtlHardcoded" /> tools:ignore="RtlHardcoded" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView
@ -433,12 +420,12 @@
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true" android:clickable="true"
android:contentDescription="@string/add_to_playlist" android:contentDescription="@string/add_to_playlist"
android:drawableTop="@drawable/ic_playlist_add"
android:focusable="true" android:focusable="true"
android:gravity="center" android:gravity="center"
android:paddingVertical="@dimen/detail_control_padding" android:paddingVertical="@dimen/detail_control_padding"
android:text="@string/controls_add_to_playlist_title" android:text="@string/controls_add_to_playlist_title"
android:textSize="@dimen/detail_control_text_size" android:textSize="@dimen/detail_control_text_size" />
app:drawableTopCompat="@drawable/ic_playlist_add" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView
android:id="@+id/detail_controls_background" android:id="@+id/detail_controls_background"
@ -449,12 +436,12 @@
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true" android:clickable="true"
android:contentDescription="@string/play_audio" android:contentDescription="@string/play_audio"
android:drawableTop="@drawable/ic_headset"
android:focusable="true" android:focusable="true"
android:gravity="center" android:gravity="center"
android:paddingVertical="@dimen/detail_control_padding" android:paddingVertical="@dimen/detail_control_padding"
android:text="@string/controls_background_title" android:text="@string/controls_background_title"
android:textSize="@dimen/detail_control_text_size" android:textSize="@dimen/detail_control_text_size" />
app:drawableTopCompat="@drawable/ic_headset" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView
android:id="@+id/detail_controls_popup" android:id="@+id/detail_controls_popup"
@ -465,12 +452,12 @@
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true" android:clickable="true"
android:contentDescription="@string/open_in_popup_mode" android:contentDescription="@string/open_in_popup_mode"
android:drawableTop="@drawable/ic_picture_in_picture"
android:focusable="true" android:focusable="true"
android:gravity="center" android:gravity="center"
android:paddingVertical="@dimen/detail_control_padding" android:paddingVertical="@dimen/detail_control_padding"
android:text="@string/controls_popup_title" android:text="@string/controls_popup_title"
android:textSize="@dimen/detail_control_text_size" android:textSize="@dimen/detail_control_text_size" />
app:drawableTopCompat="@drawable/ic_picture_in_picture" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView
android:id="@+id/detail_controls_download" android:id="@+id/detail_controls_download"
@ -481,12 +468,12 @@
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true" android:clickable="true"
android:contentDescription="@string/controls_download_desc" android:contentDescription="@string/controls_download_desc"
android:drawableTop="@drawable/ic_file_download"
android:focusable="true" android:focusable="true"
android:gravity="center" android:gravity="center"
android:paddingVertical="@dimen/detail_control_padding" android:paddingVertical="@dimen/detail_control_padding"
android:text="@string/download" android:text="@string/download"
android:textSize="@dimen/detail_control_text_size" android:textSize="@dimen/detail_control_text_size" />
app:drawableTopCompat="@drawable/ic_file_download" />
</LinearLayout> </LinearLayout>
@ -510,12 +497,12 @@
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true" android:clickable="true"
android:contentDescription="@string/share" android:contentDescription="@string/share"
android:drawableTop="@drawable/ic_share"
android:focusable="true" android:focusable="true"
android:gravity="center" android:gravity="center"
android:paddingVertical="@dimen/detail_control_padding" android:paddingVertical="@dimen/detail_control_padding"
android:text="@string/share" android:text="@string/share"
android:textSize="@dimen/detail_control_text_size" android:textSize="@dimen/detail_control_text_size" />
app:drawableTopCompat="@drawable/ic_share" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView
android:id="@+id/detail_controls_open_in_browser" android:id="@+id/detail_controls_open_in_browser"
@ -526,12 +513,12 @@
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true" android:clickable="true"
android:contentDescription="@string/open_in_browser" android:contentDescription="@string/open_in_browser"
android:drawableTop="@drawable/ic_language"
android:focusable="true" android:focusable="true"
android:gravity="center" android:gravity="center"
android:paddingVertical="@dimen/detail_control_padding" android:paddingVertical="@dimen/detail_control_padding"
android:text="@string/open_in_browser" android:text="@string/open_in_browser"
android:textSize="@dimen/detail_control_text_size" android:textSize="@dimen/detail_control_text_size" />
app:drawableTopCompat="@drawable/ic_language" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView
android:id="@+id/detail_controls_play_with_kodi" android:id="@+id/detail_controls_play_with_kodi"
@ -542,14 +529,14 @@
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true" android:clickable="true"
android:contentDescription="@string/play_with_kodi_title" android:contentDescription="@string/play_with_kodi_title"
android:drawableTop="@drawable/ic_cast"
android:focusable="true" android:focusable="true"
android:gravity="center" android:gravity="center"
android:paddingVertical="@dimen/detail_control_padding" android:paddingVertical="@dimen/detail_control_padding"
android:text="@string/play_with_kodi_title" android:text="@string/play_with_kodi_title"
android:textSize="@dimen/detail_control_text_size" android:textSize="@dimen/detail_control_text_size" />
app:drawableTopCompat="@drawable/ic_cast" />
<TextView <org.schabi.newpipe.views.NewPipeTextView
android:id="@+id/detail_controls_crash_the_player" android:id="@+id/detail_controls_crash_the_player"
android:layout_width="@dimen/detail_control_width" android:layout_width="@dimen/detail_control_width"
android:layout_height="@dimen/detail_control_height" android:layout_height="@dimen/detail_control_height"
@ -558,12 +545,12 @@
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true" android:clickable="true"
android:contentDescription="@string/crash_the_player" android:contentDescription="@string/crash_the_player"
android:drawableTop="@drawable/ic_bug_report"
android:focusable="true" android:focusable="true"
android:gravity="center" android:gravity="center"
android:paddingVertical="@dimen/detail_control_padding" android:paddingVertical="@dimen/detail_control_padding"
android:text="@string/crash_the_player" android:text="@string/crash_the_player"
android:textSize="@dimen/detail_control_text_size" android:textSize="@dimen/detail_control_text_size" />
app:drawableTopCompat="@drawable/ic_bug_report" />
</LinearLayout> </LinearLayout>
@ -696,7 +683,7 @@
android:scaleType="center" android:scaleType="center"
android:focusable="true" android:focusable="true"
android:focusedByDefault="true" android:focusedByDefault="true"
app:srcCompat="@drawable/ic_play_arrow" android:src="@drawable/ic_play_arrow"
tools:ignore="ContentDescription,RtlHardcoded" /> tools:ignore="ContentDescription,RtlHardcoded" />
<ImageButton <ImageButton
@ -706,7 +693,7 @@
android:background="?attr/selectableItemBackground" android:background="?attr/selectableItemBackground"
android:padding="10dp" android:padding="10dp"
android:scaleType="center" android:scaleType="center"
app:srcCompat="@drawable/ic_close" android:src="@drawable/ic_close"
tools:ignore="ContentDescription,RtlHardcoded" /> tools:ignore="ContentDescription,RtlHardcoded" />
</LinearLayout> </LinearLayout>

View File

@ -75,7 +75,7 @@
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingRight="10dp" android:paddingRight="10dp"
android:paddingBottom="12dp" android:paddingBottom="12dp"
app:srcCompat="@drawable/ic_drag_handle" android:src="@drawable/ic_drag_handle"
tools:ignore="ContentDescription,RtlHardcoded" /> tools:ignore="ContentDescription,RtlHardcoded" />
</RelativeLayout> </RelativeLayout>
</androidx.cardview.widget.CardView> </androidx.cardview.widget.CardView>

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -64,7 +63,7 @@
android:layout_width="20dp" android:layout_width="20dp"
android:layout_height="20dp" android:layout_height="20dp"
android:layout_gravity="center" android:layout_gravity="center"
app:srcCompat="@drawable/ic_search_add" android:src="@drawable/ic_search_add"
tools:ignore="ContentDescription,RtlHardcoded" /> tools:ignore="ContentDescription,RtlHardcoded" />
</LinearLayout> </LinearLayout>

View File

@ -55,7 +55,7 @@
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingRight="16dp" android:paddingRight="16dp"
android:paddingBottom="12dp" android:paddingBottom="12dp"
app:srcCompat="@drawable/ic_drag_handle" android:src="@drawable/ic_drag_handle"
tools:ignore="ContentDescription,RtlHardcoded" /> tools:ignore="ContentDescription,RtlHardcoded" />
</RelativeLayout> </RelativeLayout>
</androidx.cardview.widget.CardView> </androidx.cardview.widget.CardView>

View File

@ -32,8 +32,8 @@
android:layout_marginRight="@dimen/video_item_detail_pinned_right_margin" android:layout_marginRight="@dimen/video_item_detail_pinned_right_margin"
android:layout_toEndOf="@+id/itemThumbnailView" android:layout_toEndOf="@+id/itemThumbnailView"
android:contentDescription="@string/detail_pinned_comment_view_description" android:contentDescription="@string/detail_pinned_comment_view_description"
android:src="@drawable/ic_pin"
android:visibility="gone" android:visibility="gone"
app:srcCompat="@drawable/ic_pin"
tools:visibility="visible" /> tools:visibility="visible" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView
@ -69,7 +69,7 @@
android:layout_below="@id/itemCommentContentView" android:layout_below="@id/itemCommentContentView"
android:layout_toRightOf="@+id/itemThumbnailView" android:layout_toRightOf="@+id/itemThumbnailView"
android:contentDescription="@string/detail_likes_img_view_description" android:contentDescription="@string/detail_likes_img_view_description"
app:srcCompat="@drawable/ic_thumb_up" /> android:src="@drawable/ic_thumb_up" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView
android:id="@+id/detail_thumbs_up_count_view" android:id="@+id/detail_thumbs_up_count_view"
@ -92,37 +92,9 @@
android:layout_marginLeft="@dimen/video_item_detail_heart_margin" android:layout_marginLeft="@dimen/video_item_detail_heart_margin"
android:layout_toRightOf="@+id/detail_thumbs_up_count_view" android:layout_toRightOf="@+id/detail_thumbs_up_count_view"
android:contentDescription="@string/detail_heart_img_view_description" android:contentDescription="@string/detail_heart_img_view_description"
android:src="@drawable/ic_heart"
android:visibility="gone" android:visibility="gone"
tools:visibility="visible" tools:visibility="visible" />
app:srcCompat="@drawable/ic_heart" />
<!--we can uncomment below code if we need dislike button and count in future-->
<!--<ImageView
android:id="@+id/detail_thumbs_down_img_view"
android:layout_width="@dimen/video_item_detail_like_image_width"
android:layout_height="@dimen/video_item_detail_like_image_height"
android:layout_below="@id/itemCommentContentView"
android:layout_marginLeft="12dp"
android:layout_toRightOf="@id/detail_thumbs_up_count_view"
android:contentDescription="@string/detail_dislikes_img_view_description"
app:srcCompat="?attr/thumbs_down"
tools:ignore="RtlHardcoded" />
<org.schabi.newpipe.views.NewPipeTextView
android:id="@+id/detail_thumbs_down_count_view"
android:layout_width="wrap_content"
android:layout_height="@dimen/video_item_detail_like_image_height"
android:layout_below="@id/itemCommentContentView"
android:layout_marginLeft="@dimen/video_item_detail_like_margin"
android:layout_toRightOf="@id/detail_thumbs_down_img_view"
android:gravity="center_vertical"
android:lines="1"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textSize="@dimen/video_item_detail_likes_text_size"
tools:ignore="RtlHardcoded"
tools:text="10K" />-->
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView
android:id="@+id/itemPublishedTime" android:id="@+id/itemPublishedTime"

View File

@ -39,7 +39,7 @@
android:layout_below="@id/itemCommentContentView" android:layout_below="@id/itemCommentContentView"
android:layout_toRightOf="@+id/itemThumbnailView" android:layout_toRightOf="@+id/itemThumbnailView"
android:contentDescription="@string/detail_likes_img_view_description" android:contentDescription="@string/detail_likes_img_view_description"
app:srcCompat="@drawable/ic_thumb_up" /> android:src="@drawable/ic_thumb_up" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView
android:id="@+id/detail_thumbs_up_count_view" android:id="@+id/detail_thumbs_up_count_view"
@ -54,33 +54,6 @@
tools:ignore="RtlHardcoded" tools:ignore="RtlHardcoded"
tools:text="12M" /> tools:text="12M" />
<!--we can uncomment below code if we need dislike button and count in future-->
<!--<ImageView
android:id="@+id/detail_thumbs_down_img_view"
android:layout_width="@dimen/video_item_detail_like_image_width"
android:layout_height="@dimen/video_item_detail_like_image_height"
android:layout_below="@id/itemCommentContentView"
android:layout_marginLeft="12dp"
android:layout_toRightOf="@id/detail_thumbs_up_count_view"
android:contentDescription="@string/detail_dislikes_img_view_description"
app:srcCompat="?attr/thumbs_down"
tools:ignore="RtlHardcoded" />
<org.schabi.newpipe.views.NewPipeTextView
android:id="@+id/detail_thumbs_down_count_view"
android:layout_width="wrap_content"
android:layout_height="@dimen/video_item_detail_like_image_height"
android:layout_below="@id/itemCommentContentView"
android:layout_marginLeft="@dimen/video_item_detail_like_margin"
android:layout_toRightOf="@id/detail_thumbs_down_img_view"
android:gravity="center_vertical"
android:lines="1"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textSize="@dimen/video_item_detail_likes_text_size"
tools:ignore="RtlHardcoded"
tools:text="10K" />-->
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView
android:id="@+id/itemPublishedTime" android:id="@+id/itemPublishedTime"
android:layout_width="wrap_content" android:layout_width="wrap_content"

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/itemRoot" android:id="@+id/itemRoot"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -29,6 +28,8 @@
android:layout_alignEnd="@id/itemThumbnailView" android:layout_alignEnd="@id/itemThumbnailView"
android:layout_alignBottom="@id/itemThumbnailView" android:layout_alignBottom="@id/itemThumbnailView"
android:background="@color/playlist_stream_count_background_color" android:background="@color/playlist_stream_count_background_color"
android:drawableTop="@drawable/ic_playlist_play"
android:drawableTint="@color/duration_text_color"
android:gravity="center" android:gravity="center"
android:paddingTop="16dp" android:paddingTop="16dp"
android:paddingBottom="14dp" android:paddingBottom="14dp"
@ -36,8 +37,6 @@
android:textColor="@color/duration_text_color" android:textColor="@color/duration_text_color"
android:textSize="@dimen/video_item_search_duration_text_size" android:textSize="@dimen/video_item_search_duration_text_size"
android:textStyle="bold" android:textStyle="bold"
app:drawableTint="@color/duration_text_color"
app:drawableTopCompat="@drawable/ic_playlist_play"
tools:text="314159" /> tools:text="314159" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/itemRoot" android:id="@+id/itemRoot"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -30,6 +29,8 @@
android:layout_alignEnd="@id/itemThumbnailView" android:layout_alignEnd="@id/itemThumbnailView"
android:layout_alignBottom="@id/itemThumbnailView" android:layout_alignBottom="@id/itemThumbnailView"
android:background="@color/playlist_stream_count_background_color" android:background="@color/playlist_stream_count_background_color"
android:drawableTop="@drawable/ic_playlist_play"
android:drawableTint="@color/duration_text_color"
android:gravity="center" android:gravity="center"
android:paddingTop="16dp" android:paddingTop="16dp"
android:paddingBottom="14dp" android:paddingBottom="14dp"
@ -37,8 +38,6 @@
android:textColor="@color/duration_text_color" android:textColor="@color/duration_text_color"
android:textSize="@dimen/video_item_search_duration_text_size" android:textSize="@dimen/video_item_search_duration_text_size"
android:textStyle="bold" android:textStyle="bold"
app:drawableTint="@color/duration_text_color"
app:drawableTopCompat="@drawable/ic_playlist_play"
tools:text="314159" /> tools:text="314159" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/itemRoot" android:id="@+id/itemRoot"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -30,6 +29,8 @@
android:layout_alignEnd="@id/itemThumbnailView" android:layout_alignEnd="@id/itemThumbnailView"
android:layout_alignBottom="@id/itemThumbnailView" android:layout_alignBottom="@id/itemThumbnailView"
android:background="@color/playlist_stream_count_background_color" android:background="@color/playlist_stream_count_background_color"
android:drawableTop="@drawable/ic_playlist_play"
android:drawableTint="@color/duration_text_color"
android:gravity="center" android:gravity="center"
android:paddingTop="4dp" android:paddingTop="4dp"
android:paddingBottom="6dp" android:paddingBottom="6dp"
@ -37,8 +38,6 @@
android:textColor="@color/duration_text_color" android:textColor="@color/duration_text_color"
android:textSize="@dimen/video_item_search_duration_text_size" android:textSize="@dimen/video_item_search_duration_text_size"
android:textStyle="bold" android:textStyle="bold"
app:drawableTint="@color/duration_text_color"
app:drawableTopCompat="@drawable/ic_playlist_play"
tools:text="3141" /> tools:text="3141" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/itemRoot" android:id="@+id/itemRoot"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -49,7 +48,7 @@
android:contentDescription="@string/detail_drag_description" android:contentDescription="@string/detail_drag_description"
android:paddingLeft="@dimen/video_item_search_image_right_margin" android:paddingLeft="@dimen/video_item_search_image_right_margin"
android:scaleType="center" android:scaleType="center"
app:srcCompat="@drawable/ic_drag_handle" android:src="@drawable/ic_drag_handle"
tools:ignore="RtlHardcoded,RtlSymmetry" /> tools:ignore="RtlHardcoded,RtlSymmetry" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/itemRoot" android:id="@+id/itemRoot"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -50,7 +49,7 @@
android:contentDescription="@string/detail_drag_description" android:contentDescription="@string/detail_drag_description"
android:paddingLeft="@dimen/video_item_search_image_right_margin" android:paddingLeft="@dimen/video_item_search_image_right_margin"
android:scaleType="center" android:scaleType="center"
app:srcCompat="@drawable/ic_drag_handle" android:src="@drawable/ic_drag_handle"
tools:ignore="RtlHardcoded,RtlSymmetry" /> tools:ignore="RtlHardcoded,RtlSymmetry" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView

View File

@ -39,7 +39,7 @@
android:layout_marginRight="1dp" android:layout_marginRight="1dp"
android:contentDescription="TODO" android:contentDescription="TODO"
android:scaleType="center" android:scaleType="center"
app:srcCompat="@drawable/ic_more_vert" android:src="@drawable/ic_more_vert"
app:tint="?attr/actionColor" /> app:tint="?attr/actionColor" />
</RelativeLayout> </RelativeLayout>

View File

@ -72,7 +72,7 @@
android:layout_marginRight="4dp" android:layout_marginRight="4dp"
android:contentDescription="TODO" android:contentDescription="TODO"
android:scaleType="centerInside" android:scaleType="centerInside"
app:srcCompat="@drawable/ic_more_vert" android:src="@drawable/ic_more_vert"
app:tint="?attr/actionColor" /> app:tint="?attr/actionColor" />
</RelativeLayout> </RelativeLayout>

View File

@ -52,8 +52,8 @@
android:layout_gravity="top|center_horizontal" android:layout_gravity="top|center_horizontal"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:scaleType="centerInside" android:scaleType="centerInside"
android:src="@drawable/ic_done"
app:tint="@color/white" app:tint="@color/white"
app:srcCompat="@drawable/ic_done"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
</FrameLayout> </FrameLayout>
</FrameLayout> </FrameLayout>

View File

@ -89,10 +89,10 @@
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:paddingHorizontal="@dimen/video_item_search_image_right_margin" android:paddingHorizontal="@dimen/video_item_search_image_right_margin"
android:scaleType="center" android:scaleType="center"
android:src="@drawable/ic_drag_handle"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_drag_handle"
tools:ignore="ContentDescription,RtlHardcoded" /> tools:ignore="ContentDescription,RtlHardcoded" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -112,8 +112,8 @@
android:focusable="true" android:focusable="true"
android:padding="@dimen/player_main_buttons_padding" android:padding="@dimen/player_main_buttons_padding"
android:scaleType="fitXY" android:scaleType="fitXY"
android:src="@drawable/ic_close"
android:visibility="gone" android:visibility="gone"
app:srcCompat="@drawable/ic_close"
app:tint="@color/white" app:tint="@color/white"
tools:ignore="ContentDescription,RtlHardcoded" /> tools:ignore="ContentDescription,RtlHardcoded" />
@ -198,8 +198,8 @@
android:paddingEnd="3dp" android:paddingEnd="3dp"
android:paddingBottom="3dp" android:paddingBottom="3dp"
android:scaleType="fitCenter" android:scaleType="fitCenter"
android:src="@drawable/ic_list"
android:visibility="gone" android:visibility="gone"
app:srcCompat="@drawable/ic_list"
app:tint="@color/white" app:tint="@color/white"
tools:ignore="ContentDescription,RtlHardcoded" /> tools:ignore="ContentDescription,RtlHardcoded" />
@ -216,8 +216,8 @@
android:paddingEnd="6dp" android:paddingEnd="6dp"
android:paddingBottom="3dp" android:paddingBottom="3dp"
android:scaleType="fitCenter" android:scaleType="fitCenter"
android:src="@drawable/ic_format_list_numbered"
android:visibility="gone" android:visibility="gone"
app:srcCompat="@drawable/ic_format_list_numbered"
app:tint="@color/white" app:tint="@color/white"
tools:ignore="ContentDescription,RtlHardcoded" /> tools:ignore="ContentDescription,RtlHardcoded" />
@ -230,7 +230,7 @@
android:focusable="true" android:focusable="true"
android:padding="@dimen/player_main_buttons_padding" android:padding="@dimen/player_main_buttons_padding"
android:scaleType="fitXY" android:scaleType="fitXY"
app:srcCompat="@drawable/ic_expand_more" android:src="@drawable/ic_expand_more"
app:tint="@color/white" app:tint="@color/white"
tools:ignore="ContentDescription,RtlHardcoded" /> tools:ignore="ContentDescription,RtlHardcoded" />
@ -294,7 +294,7 @@
android:focusable="true" android:focusable="true"
android:padding="@dimen/player_main_buttons_padding" android:padding="@dimen/player_main_buttons_padding"
android:scaleType="fitXY" android:scaleType="fitXY"
app:srcCompat="@drawable/ic_cast" android:src="@drawable/ic_cast"
app:tint="@color/white" app:tint="@color/white"
tools:ignore="RtlHardcoded" /> tools:ignore="RtlHardcoded" />
@ -309,7 +309,7 @@
android:focusable="true" android:focusable="true"
android:padding="@dimen/player_main_buttons_padding" android:padding="@dimen/player_main_buttons_padding"
android:scaleType="fitXY" android:scaleType="fitXY"
app:srcCompat="@drawable/ic_language" android:src="@drawable/ic_language"
app:tint="@color/white" app:tint="@color/white"
tools:ignore="RtlHardcoded" /> tools:ignore="RtlHardcoded" />
@ -324,7 +324,7 @@
android:focusable="true" android:focusable="true"
android:padding="@dimen/player_main_buttons_padding" android:padding="@dimen/player_main_buttons_padding"
android:scaleType="fitXY" android:scaleType="fitXY"
app:srcCompat="@drawable/ic_share" android:src="@drawable/ic_share"
app:tint="@color/white" app:tint="@color/white"
tools:ignore="RtlHardcoded" /> tools:ignore="RtlHardcoded" />
@ -338,7 +338,7 @@
android:focusable="true" android:focusable="true"
android:padding="@dimen/player_main_buttons_padding" android:padding="@dimen/player_main_buttons_padding"
android:scaleType="fitXY" android:scaleType="fitXY"
app:srcCompat="@drawable/ic_volume_off" android:src="@drawable/ic_volume_off"
app:tint="@color/white" app:tint="@color/white"
tools:ignore="RtlHardcoded" /> tools:ignore="RtlHardcoded" />
@ -351,8 +351,8 @@
android:focusable="true" android:focusable="true"
android:padding="@dimen/player_main_buttons_padding" android:padding="@dimen/player_main_buttons_padding"
android:scaleType="fitCenter" android:scaleType="fitCenter"
android:src="@drawable/ic_fullscreen"
android:visibility="gone" android:visibility="gone"
app:srcCompat="@drawable/ic_fullscreen"
app:tint="@color/white" app:tint="@color/white"
tools:ignore="ContentDescription,RtlHardcoded" tools:ignore="ContentDescription,RtlHardcoded"
tools:visibility="visible" /> tools:visibility="visible" />
@ -397,8 +397,8 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="2dp" android:paddingTop="2dp"
android:src="@drawable/dummy_thumbnail"
android:visibility="gone" android:visibility="gone"
app:srcCompat="@drawable/dummy_thumbnail"
tools:visibility="visible" /> tools:visibility="visible" />
</LinearLayout> </LinearLayout>
@ -475,8 +475,8 @@
android:nextFocusUp="@id/playbackSeekBar" android:nextFocusUp="@id/playbackSeekBar"
android:padding="@dimen/player_main_buttons_padding" android:padding="@dimen/player_main_buttons_padding"
android:scaleType="fitCenter" android:scaleType="fitCenter"
android:src="@drawable/ic_fullscreen"
android:visibility="gone" android:visibility="gone"
app:srcCompat="@drawable/ic_fullscreen"
app:tint="@color/white" app:tint="@color/white"
tools:ignore="ContentDescription,RtlHardcoded" tools:ignore="ContentDescription,RtlHardcoded"
tools:visibility="visible" /> tools:visibility="visible" />
@ -500,7 +500,7 @@
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
android:scaleType="fitCenter" android:scaleType="fitCenter"
app:srcCompat="@drawable/ic_previous" android:src="@drawable/ic_previous"
app:tint="@color/white" app:tint="@color/white"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
@ -512,7 +512,7 @@
android:layout_weight="1" android:layout_weight="1"
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:scaleType="fitCenter" android:scaleType="fitCenter"
app:srcCompat="@drawable/ic_pause" android:src="@drawable/ic_pause"
app:tint="@color/white" app:tint="@color/white"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
@ -526,7 +526,7 @@
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
android:scaleType="fitCenter" android:scaleType="fitCenter"
app:srcCompat="@drawable/ic_next" android:src="@drawable/ic_next"
app:tint="@color/white" app:tint="@color/white"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
@ -577,8 +577,8 @@
android:focusable="true" android:focusable="true"
android:padding="10dp" android:padding="10dp"
android:scaleType="fitXY" android:scaleType="fitXY"
android:src="@drawable/exo_controls_repeat_off"
android:tint="?attr/colorAccent" android:tint="?attr/colorAccent"
app:srcCompat="@drawable/exo_controls_repeat_off"
tools:ignore="ContentDescription,RtlHardcoded" /> tools:ignore="ContentDescription,RtlHardcoded" />
<androidx.appcompat.widget.AppCompatImageButton <androidx.appcompat.widget.AppCompatImageButton
@ -592,8 +592,8 @@
android:focusable="true" android:focusable="true"
android:padding="10dp" android:padding="10dp"
android:scaleType="fitXY" android:scaleType="fitXY"
android:src="@drawable/ic_shuffle"
android:tint="?attr/colorAccent" android:tint="?attr/colorAccent"
app:srcCompat="@drawable/ic_shuffle"
tools:ignore="ContentDescription,RtlHardcoded" /> tools:ignore="ContentDescription,RtlHardcoded" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
@ -618,8 +618,8 @@
android:focusable="true" android:focusable="true"
android:padding="10dp" android:padding="10dp"
android:scaleType="fitXY" android:scaleType="fitXY"
android:src="@drawable/ic_playlist_add"
android:tint="?attr/colorAccent" android:tint="?attr/colorAccent"
app:srcCompat="@drawable/ic_playlist_add"
tools:ignore="ContentDescription,RtlHardcoded" /> tools:ignore="ContentDescription,RtlHardcoded" />
<androidx.appcompat.widget.AppCompatImageButton <androidx.appcompat.widget.AppCompatImageButton
@ -635,7 +635,7 @@
android:focusable="true" android:focusable="true"
android:padding="10dp" android:padding="10dp"
android:scaleType="fitXY" android:scaleType="fitXY"
app:srcCompat="@drawable/ic_close" android:src="@drawable/ic_close"
app:tint="@color/white" /> app:tint="@color/white" />
</RelativeLayout> </RelativeLayout>

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android" <merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
tools:ignore="ContentDescription" tools:ignore="ContentDescription"
tools:layout_height="wrap_content" tools:layout_height="wrap_content"
@ -19,21 +18,21 @@
android:id="@+id/icon_1" android:id="@+id/icon_1"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_play_seek_triangle" android:src="@drawable/ic_play_seek_triangle"
tools:alpha="0.18" /> tools:alpha="0.18" />
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/icon_2" android:id="@+id/icon_2"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_play_seek_triangle" android:src="@drawable/ic_play_seek_triangle"
tools:alpha="0.5" /> tools:alpha="0.5" />
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/icon_3" android:id="@+id/icon_3"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_play_seek_triangle" android:src="@drawable/ic_play_seek_triangle"
tools:alpha="1" /> tools:alpha="1" />
</LinearLayout> </LinearLayout>

View File

@ -10,8 +10,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal" android:layout_gravity="bottom|center_horizontal"
android:layout_marginBottom="24dp" android:layout_marginBottom="24dp"
android:src="@drawable/ic_close"
app:backgroundTint="@color/light_youtube_primary_color" app:backgroundTint="@color/light_youtube_primary_color"
app:borderWidth="0dp" app:borderWidth="0dp"
app:fabSize="normal" app:fabSize="normal" />
app:srcCompat="@drawable/ic_close" />
</FrameLayout> </FrameLayout>

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -20,13 +19,12 @@
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:drawableStart="@drawable/ic_headset"
android:drawablePadding="4dp" android:drawablePadding="4dp"
android:gravity="center_vertical" android:gravity="center_vertical"
android:text="@string/controls_background_title" android:text="@string/controls_background_title"
android:textColor="?attr/colorAccent" android:textColor="?attr/colorAccent"
android:textSize="@dimen/channel_rss_title_size" android:textSize="@dimen/channel_rss_title_size" />
app:drawableLeftCompat="@drawable/ic_headset"
app:drawableStartCompat="@drawable/ic_headset" />
</LinearLayout> </LinearLayout>
<View <View
@ -77,12 +75,11 @@
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:drawableStart="@drawable/ic_picture_in_picture"
android:drawablePadding="4dp" android:drawablePadding="4dp"
android:gravity="center_vertical" android:gravity="center_vertical"
android:text="@string/controls_popup_title" android:text="@string/controls_popup_title"
android:textColor="?attr/colorAccent" android:textColor="?attr/colorAccent"
android:textSize="@dimen/channel_rss_title_size" android:textSize="@dimen/channel_rss_title_size" />
app:drawableLeftCompat="@drawable/ic_picture_in_picture"
app:drawableStartCompat="@drawable/ic_picture_in_picture" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -22,7 +21,7 @@
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_marginLeft="12dp" android:layout_marginLeft="12dp"
android:layout_marginRight="12dp" android:layout_marginRight="12dp"
app:srcCompat="@drawable/ic_filter_list" android:src="@drawable/ic_filter_list"
tools:ignore="ContentDescription,RtlHardcoded" /> tools:ignore="ContentDescription,RtlHardcoded" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="48dp"> android:layout_height="48dp">
@ -13,7 +12,7 @@
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_marginLeft="6dp" android:layout_marginLeft="6dp"
android:scaleType="fitCenter" android:scaleType="fitCenter"
app:srcCompat="@drawable/ic_volume_off" android:src="@drawable/ic_volume_off"
tools:ignore="ContentDescription,RtlHardcoded" /> tools:ignore="ContentDescription,RtlHardcoded" />
<org.schabi.newpipe.views.NewPipeTextView <org.schabi.newpipe.views.NewPipeTextView

View File

@ -48,8 +48,8 @@
android:layout_gravity="center" android:layout_gravity="center"
android:contentDescription="@string/search" android:contentDescription="@string/search"
android:scaleType="fitCenter" android:scaleType="fitCenter"
android:src="@drawable/ic_close"
app:tint="?attr/toolbarSearchColor" app:tint="?attr/toolbarSearchColor"
app:srcCompat="@drawable/ic_close"
tools:ignore="RtlHardcoded" /> tools:ignore="RtlHardcoded" />
</FrameLayout> </FrameLayout>

View File

@ -673,7 +673,6 @@
<string name="feed_load_error_account_info">تعذر تحميل تغذية لـ\'%s\'.</string> <string name="feed_load_error_account_info">تعذر تحميل تغذية لـ\'%s\'.</string>
<string name="feed_load_error">خطأ في تحميل الخلاصة</string> <string name="feed_load_error">خطأ في تحميل الخلاصة</string>
<string name="downloads_storage_use_saf_summary_api_29">بدءًا من Android 10، يتم دعم \"Storage Access Framework\" فقط</string> <string name="downloads_storage_use_saf_summary_api_29">بدءًا من Android 10، يتم دعم \"Storage Access Framework\" فقط</string>
<string name="downloads_storage_use_saf_summary_api_19">\"Storage Access Framework\" غير مدعوم على Android KitKat والإصدارات الأقدم</string>
<string name="downloads_storage_ask_summary_no_saf_notice">سيتم سؤالك عن مكان حفظ كل تنزيل</string> <string name="downloads_storage_ask_summary_no_saf_notice">سيتم سؤالك عن مكان حفظ كل تنزيل</string>
<string name="no_dir_yet">لم يتم تعيين مجلد التحميل، الرجاء اختيار مجلد التحميل الافتراضي الآن</string> <string name="no_dir_yet">لم يتم تعيين مجلد التحميل، الرجاء اختيار مجلد التحميل الافتراضي الآن</string>
<string name="off">إيقاف</string> <string name="off">إيقاف</string>

View File

@ -463,7 +463,6 @@
<string name="error_http_no_content">Server məlumat göndərmir</string> <string name="error_http_no_content">Server məlumat göndərmir</string>
<string name="error_download_resource_gone">Bu endirməni bərpa etmək mümkün deyil</string> <string name="error_download_resource_gone">Bu endirməni bərpa etmək mümkün deyil</string>
<string name="downloads_storage_ask_summary_no_saf_notice">Sizdən hər endirmənin harada saxlanacağı soruşulacaq</string> <string name="downloads_storage_ask_summary_no_saf_notice">Sizdən hər endirmənin harada saxlanacağı soruşulacaq</string>
<string name="downloads_storage_use_saf_summary_api_19">\'Yaddaş Giriş Çərçivəsi\' Android KitKat və ondan aşağı versiyalarda dəstəklənmir</string>
<string name="downloads_storage_use_saf_summary_api_29">\"Yaddaş Giriş Çərçivəsi\"yalnız Android 10\'dan başlayaraq dəstəklənir</string> <string name="downloads_storage_use_saf_summary_api_29">\"Yaddaş Giriş Çərçivəsi\"yalnız Android 10\'dan başlayaraq dəstəklənir</string>
<string name="detail_sub_channel_thumbnail_view_description">Kanalın avatar miniatürü</string> <string name="detail_sub_channel_thumbnail_view_description">Kanalın avatar miniatürü</string>
<string name="select_night_theme_toast">Sevdiyiniz gecə mövzusunu aşağıda seçə bilərsiniz</string> <string name="select_night_theme_toast">Sevdiyiniz gecə mövzusunu aşağıda seçə bilərsiniz</string>

View File

@ -675,7 +675,6 @@
<item quantity="one">S\'ha suprimit %1$s baixada</item> <item quantity="one">S\'ha suprimit %1$s baixada</item>
<item quantity="other">S\'han suprimit %1$s baixades</item> <item quantity="other">S\'han suprimit %1$s baixades</item>
</plurals> </plurals>
<string name="downloads_storage_use_saf_summary_api_19">El \"Sistema d\'Accés a l\'Emmagatzematge\" no està implementat a Android KitKat i a versions anteriors</string>
<string name="downloads_storage_use_saf_summary_api_29">A partir de l\'Android 10 només s\'admet el \"Sistema d\'Accés a l\'Emmagatzematge\"</string> <string name="downloads_storage_use_saf_summary_api_29">A partir de l\'Android 10 només s\'admet el \"Sistema d\'Accés a l\'Emmagatzematge\"</string>
<string name="feed_new_items">Elements de feed nous</string> <string name="feed_new_items">Elements de feed nous</string>
<string name="feed_load_error_fast_unknown">El mode d\'alimentació ràpida no proporciona més informació sobre això.</string> <string name="feed_load_error_fast_unknown">El mode d\'alimentació ràpida no proporciona més informació sobre això.</string>

View File

@ -625,7 +625,6 @@
<string name="downloads_storage_ask_summary_no_saf_notice">بۆ دابه‌زاندنی هه‌ر بابه‌تێك پرست پێ ده‌كرێت له‌باره‌ی شوێنی دابه‌زاندنیان</string> <string name="downloads_storage_ask_summary_no_saf_notice">بۆ دابه‌زاندنی هه‌ر بابه‌تێك پرست پێ ده‌كرێت له‌باره‌ی شوێنی دابه‌زاندنیان</string>
<string name="disable_media_tunneling_title">ناكاراكردنی تونێلكردنی میدیا</string> <string name="disable_media_tunneling_title">ناكاراكردنی تونێلكردنی میدیا</string>
<string name="show_age_restricted_content_summary">ئه‌و بابه‌تانه‌ی نه‌گونجاون بۆ منداڵان پیشان بدرێن كه‌ سنووری ته‌مه‌ن ده‌یانگرێته‌وه‌ (وه‌ك +18)</string> <string name="show_age_restricted_content_summary">ئه‌و بابه‌تانه‌ی نه‌گونجاون بۆ منداڵان پیشان بدرێن كه‌ سنووری ته‌مه‌ن ده‌یانگرێته‌وه‌ (وه‌ك +18)</string>
<string name="downloads_storage_use_saf_summary_api_19">\'Storage Access Framework\' پشتگیری نه‌كراوه‌ له‌سه‌ر وه‌شانه‌كانی ئه‌ندرۆید كیتكات و نزمتر</string>
<string name="crash_the_app">كڕاشی به‌رنامه‌كه‌</string> <string name="crash_the_app">كڕاشی به‌رنامه‌كه‌</string>
<string name="show_memory_leaks">پیشاندانی دزه‌كردنی بیرگه‌</string> <string name="show_memory_leaks">پیشاندانی دزه‌كردنی بیرگه‌</string>
<string name="enqueued">له‌نۆبه‌ت دانرا</string> <string name="enqueued">له‌نۆبه‌ت دانرا</string>

View File

@ -643,7 +643,6 @@
<string name="feed_load_error_account_info">Feed pro \'%s\' nemohl být načten.</string> <string name="feed_load_error_account_info">Feed pro \'%s\' nemohl být načten.</string>
<string name="feed_load_error">Chyba při načítání feedu</string> <string name="feed_load_error">Chyba při načítání feedu</string>
<string name="downloads_storage_use_saf_summary_api_29">Počínaje Android 10 je podporován pouze \"Storage Access Framework\"</string> <string name="downloads_storage_use_saf_summary_api_29">Počínaje Android 10 je podporován pouze \"Storage Access Framework\"</string>
<string name="downloads_storage_use_saf_summary_api_19">\"Storage Access Framework\" není podporován na KitKat a níže</string>
<string name="downloads_storage_ask_summary_no_saf_notice">Budete dotázáni, kde uložit každý stažený soubor</string> <string name="downloads_storage_ask_summary_no_saf_notice">Budete dotázáni, kde uložit každý stažený soubor</string>
<string name="no_dir_yet">Adresář pro stažené soubory dosud nenastaven, zvolte, prosím, výchozí adresář nyní</string> <string name="no_dir_yet">Adresář pro stažené soubory dosud nenastaven, zvolte, prosím, výchozí adresář nyní</string>
<string name="off">Vypnuto</string> <string name="off">Vypnuto</string>

View File

@ -638,7 +638,6 @@
<string name="no_dir_yet">Noch kein Downloadordner festgelegt, wähle jetzt den Standard-Downloadordner</string> <string name="no_dir_yet">Noch kein Downloadordner festgelegt, wähle jetzt den Standard-Downloadordner</string>
<string name="open_website_license">Webseite öffnen</string> <string name="open_website_license">Webseite öffnen</string>
<string name="downloads_storage_use_saf_summary_api_29">Ab Android 10 wird nur noch „Storage Access Framework“ unterstützt</string> <string name="downloads_storage_use_saf_summary_api_29">Ab Android 10 wird nur noch „Storage Access Framework“ unterstützt</string>
<string name="downloads_storage_use_saf_summary_api_19">Das „Storage Access Framework“ wird auf Android KitKat und niedriger nicht unterstützt</string>
<string name="downloads_storage_ask_summary_no_saf_notice">Du wirst jedes Mal gefragt werden, wohin der Download gespeichert werden soll</string> <string name="downloads_storage_ask_summary_no_saf_notice">Du wirst jedes Mal gefragt werden, wohin der Download gespeichert werden soll</string>
<string name="feed_load_error">Fehler beim Laden des Feeds</string> <string name="feed_load_error">Fehler beim Laden des Feeds</string>
<string name="feed_load_error_account_info">Konnte Feed für \'%s\' nicht laden.</string> <string name="feed_load_error_account_info">Konnte Feed für \'%s\' nicht laden.</string>

View File

@ -632,7 +632,6 @@
<string name="feed_load_error_account_info">Αδυναμία φόρτωσης τροφοδοσίας για \'%s\'.</string> <string name="feed_load_error_account_info">Αδυναμία φόρτωσης τροφοδοσίας για \'%s\'.</string>
<string name="feed_load_error">Σφάλμα φόρτωσης τροφοδοσίας</string> <string name="feed_load_error">Σφάλμα φόρτωσης τροφοδοσίας</string>
<string name="downloads_storage_use_saf_summary_api_29">Από το Android 10 και μετά, μόνο το SAF υποστηρίζεται</string> <string name="downloads_storage_use_saf_summary_api_29">Από το Android 10 και μετά, μόνο το SAF υποστηρίζεται</string>
<string name="downloads_storage_use_saf_summary_api_19">Το «Πλαίσιο Πρόσβασης Αποθήκευσης» δεν υποστηρίζεται σε Android KitKat και παλαιότερο</string>
<string name="downloads_storage_ask_summary_no_saf_notice">Θα ερωτηθείτε πού να αποθηκεύσετε κάθε λήψη</string> <string name="downloads_storage_ask_summary_no_saf_notice">Θα ερωτηθείτε πού να αποθηκεύσετε κάθε λήψη</string>
<string name="no_dir_yet">Δεν έχει ορισθεί φάκελος λήψεων ακόμα, eπιλέξτε τον προεπιλεγμένο φάκελο τώρα</string> <string name="no_dir_yet">Δεν έχει ορισθεί φάκελος λήψεων ακόμα, eπιλέξτε τον προεπιλεγμένο φάκελο τώρα</string>
<string name="metadata_host">Host</string> <string name="metadata_host">Host</string>

View File

@ -633,7 +633,6 @@
\n¿Desea desuscribirse de este canal\?</string> \n¿Desea desuscribirse de este canal\?</string>
<string name="feed_load_error">Error al cargar el muro</string> <string name="feed_load_error">Error al cargar el muro</string>
<string name="downloads_storage_use_saf_summary_api_29">Desde Android 10 solo el \'Sistema de Acceso al Almacenamiento\' es soportado</string> <string name="downloads_storage_use_saf_summary_api_29">Desde Android 10 solo el \'Sistema de Acceso al Almacenamiento\' es soportado</string>
<string name="downloads_storage_use_saf_summary_api_19">El \'Sistema de Acceso al Almacenamiento\' no es sorportado en Android KitKat o versiones anteriores</string>
<string name="downloads_storage_ask_summary_no_saf_notice">Se le preguntará dónde guardar cada descarga</string> <string name="downloads_storage_ask_summary_no_saf_notice">Se le preguntará dónde guardar cada descarga</string>
<string name="disable_media_tunneling_summary">Deshabilitar el túnel de medios si experimenta una pantalla negra o interrupciones en la reproduccción de videos</string> <string name="disable_media_tunneling_summary">Deshabilitar el túnel de medios si experimenta una pantalla negra o interrupciones en la reproduccción de videos</string>
<string name="disable_media_tunneling_title">Deshabilitar el túnel de medios</string> <string name="disable_media_tunneling_title">Deshabilitar el túnel de medios</string>

View File

@ -632,7 +632,6 @@
<string name="settings_category_feed_title">Voog</string> <string name="settings_category_feed_title">Voog</string>
<string name="choose_instance_prompt">Vali eksemplar</string> <string name="choose_instance_prompt">Vali eksemplar</string>
<string name="downloads_storage_use_saf_summary_api_29">Android 10st alates on toetatud ainult salvestusjuurdepääsu raamistik \'Storage Access Framework\'</string> <string name="downloads_storage_use_saf_summary_api_29">Android 10st alates on toetatud ainult salvestusjuurdepääsu raamistik \'Storage Access Framework\'</string>
<string name="downloads_storage_use_saf_summary_api_19">Android KitKat ja vanemad versioonid ei toeta salvestusjuurdepääsu raamistikku \'Storage Access Framework\'</string>
<string name="downloads_storage_ask_summary_no_saf_notice">Sinult küsitakse iga kord, kuhu alla laadimine salvestada</string> <string name="downloads_storage_ask_summary_no_saf_notice">Sinult küsitakse iga kord, kuhu alla laadimine salvestada</string>
<string name="detail_heart_img_view_description">Südamlik autor</string> <string name="detail_heart_img_view_description">Südamlik autor</string>
<string name="feed_use_dedicated_fetch_method_help_text">Kas sinu meelest on voo laadimine aeglane\? Sel juhul proovi lubada kiire laadimine (seda saad muuta seadetes või vajutades allolevat nuppu). <string name="feed_use_dedicated_fetch_method_help_text">Kas sinu meelest on voo laadimine aeglane\? Sel juhul proovi lubada kiire laadimine (seda saad muuta seadetes või vajutades allolevat nuppu).

View File

@ -626,7 +626,6 @@
<string name="feed_load_error_account_info">Ezin izan da \'%s\' jarioa kargatu.</string> <string name="feed_load_error_account_info">Ezin izan da \'%s\' jarioa kargatu.</string>
<string name="feed_load_error">Errorea jarioa kargatzean</string> <string name="feed_load_error">Errorea jarioa kargatzean</string>
<string name="downloads_storage_use_saf_summary_api_29">Android 10etik aurrera \'Biltegiaren Sarrera Framework\'a soilik onartzen da</string> <string name="downloads_storage_use_saf_summary_api_29">Android 10etik aurrera \'Biltegiaren Sarrera Framework\'a soilik onartzen da</string>
<string name="downloads_storage_use_saf_summary_api_19">\'Biltegiaren Sarrera Framework\'a ez da Android KitKat eta aurreko bertsioetan onartzen</string>
<string name="downloads_storage_ask_summary_no_saf_notice">Non gorde galdetuko zaizu deskarga bakoitzean</string> <string name="downloads_storage_ask_summary_no_saf_notice">Non gorde galdetuko zaizu deskarga bakoitzean</string>
<string name="no_dir_yet">Ez da deskargatzeko karpetarik ezarri oraindik, aukeratu lehenetsitako deskargatzeko karpeta orain</string> <string name="no_dir_yet">Ez da deskargatzeko karpetarik ezarri oraindik, aukeratu lehenetsitako deskargatzeko karpeta orain</string>
<string name="metadata_privacy">Pribatutasuna</string> <string name="metadata_privacy">Pribatutasuna</string>

View File

@ -636,7 +636,6 @@
<string name="description_select_note">اکنون می‌توانید متن درون شرخ را برگزینید. به یاد داشته باشید که در حالت گزینش، ممکن است صفحه چشمک زده و پیوندها قابل کلیک نباشند.</string> <string name="description_select_note">اکنون می‌توانید متن درون شرخ را برگزینید. به یاد داشته باشید که در حالت گزینش، ممکن است صفحه چشمک زده و پیوندها قابل کلیک نباشند.</string>
<string name="no_dir_yet">هنوز شاخهٔ بارگیری‌ای تنظیم نشده. اکنون شاخهٔ بارگیری پیش‌گزیده را برگزینید</string> <string name="no_dir_yet">هنوز شاخهٔ بارگیری‌ای تنظیم نشده. اکنون شاخهٔ بارگیری پیش‌گزیده را برگزینید</string>
<string name="downloads_storage_ask_summary_no_saf_notice">برای ذخیرهٔ هر بارگیری از شما پرسیده خواهد شد</string> <string name="downloads_storage_ask_summary_no_saf_notice">برای ذخیرهٔ هر بارگیری از شما پرسیده خواهد شد</string>
<string name="downloads_storage_use_saf_summary_api_19">«چارچوب دسترسی ذخیره» روی اندروید کیت‌کت و پایین‌تر پشتیبانی نمی‌شود</string>
<string name="downloads_storage_use_saf_summary_api_29">از اندروید ۱۰، تنها «چارچوب دسترسی ذخیره» پشتیبانی می‌شود</string> <string name="downloads_storage_use_saf_summary_api_29">از اندروید ۱۰، تنها «چارچوب دسترسی ذخیره» پشتیبانی می‌شود</string>
<string name="feed_load_error_account_info">نتوانست خوراک را برای «%s» بار کند.</string> <string name="feed_load_error_account_info">نتوانست خوراک را برای «%s» بار کند.</string>
<string name="feed_load_error_terminated">حساب این نگارنده نابود شده است. <string name="feed_load_error_terminated">حساب این نگارنده نابود شده است.

View File

@ -638,7 +638,6 @@
\nHaluatko poistaa kanavan tilauksesta\?</string> \nHaluatko poistaa kanavan tilauksesta\?</string>
<string name="feed_load_error_account_info">Ei voitu ladata syötettä hakusanalle \'%s\'.</string> <string name="feed_load_error_account_info">Ei voitu ladata syötettä hakusanalle \'%s\'.</string>
<string name="feed_load_error">Virhe syötteen lataamisessa</string> <string name="feed_load_error">Virhe syötteen lataamisessa</string>
<string name="downloads_storage_use_saf_summary_api_19">\'Storage Access Framework\' ei ole tuettu Android KitKatissa tai vanhemmissa versioissa</string>
<string name="downloads_storage_ask_summary_no_saf_notice">Sinulta kysytään joka kerta, minne tiedosto ladataan</string> <string name="downloads_storage_ask_summary_no_saf_notice">Sinulta kysytään joka kerta, minne tiedosto ladataan</string>
<string name="dont_show">Älä näytä</string> <string name="dont_show">Älä näytä</string>
<string name="low_quality_smaller">Matala laatu (pienempi)</string> <string name="low_quality_smaller">Matala laatu (pienempi)</string>

View File

@ -640,7 +640,6 @@
\nNewPipe ne sera plus en mesure de charger ce flux à lavenir. \nNewPipe ne sera plus en mesure de charger ce flux à lavenir.
\nSouhaitez-vous vous désabonner de cette chaîne\?</string> \nSouhaitez-vous vous désabonner de cette chaîne\?</string>
<string name="downloads_storage_use_saf_summary_api_29">À partir dAndroid 10, seule « lInfrastructure daccès au stockage  » est prise en charge</string> <string name="downloads_storage_use_saf_summary_api_29">À partir dAndroid 10, seule « lInfrastructure daccès au stockage  » est prise en charge</string>
<string name="downloads_storage_use_saf_summary_api_19">L«Infrastructure daccès au stockage» nest pas prise en charge par Android KitKat et les versions antérieures</string>
<string name="feed_load_error_fast_unknown">Le mode flux rapide ne fournit pas plus dinfo à ce sujet.</string> <string name="feed_load_error_fast_unknown">Le mode flux rapide ne fournit pas plus dinfo à ce sujet.</string>
<string name="comments_are_disabled">Les commentaires sont désactivés</string> <string name="comments_are_disabled">Les commentaires sont désactivés</string>
<string name="dont_show">Ne pas afficher</string> <string name="dont_show">Ne pas afficher</string>

View File

@ -678,7 +678,6 @@
<string name="processing_may_take_a_moment">Procesando... Pode devagar un momento</string> <string name="processing_may_take_a_moment">Procesando... Pode devagar un momento</string>
<string name="create_error_notification">Crear unha notificación de erro</string> <string name="create_error_notification">Crear unha notificación de erro</string>
<string name="show_image_indicators_summary">Amosar fitas coloridas de Picasso na cima das imaxes que indican a súa fonte: vermello para a rede, azul para o disco e verde para a memoria</string> <string name="show_image_indicators_summary">Amosar fitas coloridas de Picasso na cima das imaxes que indican a súa fonte: vermello para a rede, azul para o disco e verde para a memoria</string>
<string name="downloads_storage_use_saf_summary_api_19">O \'Sistema de Acceso ao almacenamento\' non está soportado en Android KitKat e anteriores</string>
<string name="feed_new_items">Novos elementos</string> <string name="feed_new_items">Novos elementos</string>
<string name="progressive_load_interval_exoplayer_default">Predefinido do ExoPlayer</string> <string name="progressive_load_interval_exoplayer_default">Predefinido do ExoPlayer</string>
<string name="show_crash_the_player_title">Amosar \"Travar o reprodutor\"</string> <string name="show_crash_the_player_title">Amosar \"Travar o reprodutor\"</string>

View File

@ -653,7 +653,6 @@
<string name="feed_load_error_account_info">לא ניתן לטעון את ההזנה עבור %s.</string> <string name="feed_load_error_account_info">לא ניתן לטעון את ההזנה עבור %s.</string>
<string name="feed_load_error">שגיאה בהורדת ההזנה</string> <string name="feed_load_error">שגיאה בהורדת ההזנה</string>
<string name="downloads_storage_use_saf_summary_api_29">התמיכה ב‚תשתית גישה לאחסון’ נתמכת מ־Android 10 בלבד</string> <string name="downloads_storage_use_saf_summary_api_29">התמיכה ב‚תשתית גישה לאחסון’ נתמכת מ־Android 10 בלבד</string>
<string name="downloads_storage_use_saf_summary_api_19">‚תשתית הגישה לאחסון’ אינה נתמכת על ידי Android KitKat ומטה</string>
<string name="downloads_storage_ask_summary_no_saf_notice">תופיע שאלה לאן לשמור כל הורדה</string> <string name="downloads_storage_ask_summary_no_saf_notice">תופיע שאלה לאן לשמור כל הורדה</string>
<string name="no_dir_yet">טרם הוגדרה תיקיית הורדה, נא לבחור את תיקיית ההורדה כעת</string> <string name="no_dir_yet">טרם הוגדרה תיקיית הורדה, נא לבחור את תיקיית ההורדה כעת</string>
<string name="off">כבוי</string> <string name="off">כבוי</string>

View File

@ -643,7 +643,6 @@
<string name="feed_load_error_account_info">Nije moguće učitati feed za \'%s\'.</string> <string name="feed_load_error_account_info">Nije moguće učitati feed za \'%s\'.</string>
<string name="feed_load_error">Pogreška pri učitavanju feeda</string> <string name="feed_load_error">Pogreška pri učitavanju feeda</string>
<string name="downloads_storage_use_saf_summary_api_29">Počevši od Androida 10, podržan je samo \'Storage Access Framework\'</string> <string name="downloads_storage_use_saf_summary_api_29">Počevši od Androida 10, podržan je samo \'Storage Access Framework\'</string>
<string name="downloads_storage_use_saf_summary_api_19">„Storage Access Framework“ nije podržan na Androidu KitKat i starijim</string>
<string name="downloads_storage_ask_summary_no_saf_notice">Od vas će se tražiti gdje spremiti svako preuzimanje</string> <string name="downloads_storage_ask_summary_no_saf_notice">Od vas će se tražiti gdje spremiti svako preuzimanje</string>
<string name="dont_show">Ne prikazuj</string> <string name="dont_show">Ne prikazuj</string>
<string name="low_quality_smaller">Niska kvaliteta (manji)</string> <string name="low_quality_smaller">Niska kvaliteta (manji)</string>

View File

@ -582,7 +582,6 @@
<string name="disable_media_tunneling_summary">Tiltsa le a médiacsatornázást, ha fekete képernyőt vagy akadozást tapasztal videólejátszáskor</string> <string name="disable_media_tunneling_summary">Tiltsa le a médiacsatornázást, ha fekete képernyőt vagy akadozást tapasztal videólejátszáskor</string>
<string name="show_image_indicators_summary">Picasso színes szalagok megjelenítése a képek fölött, megjelölve a forrásukat: piros a hálózathoz, kék a lemezhez, zöld a memóriához</string> <string name="show_image_indicators_summary">Picasso színes szalagok megjelenítése a képek fölött, megjelölve a forrásukat: piros a hálózathoz, kék a lemezhez, zöld a memóriához</string>
<string name="downloads_storage_ask_summary_no_saf_notice">Minden letöltésnél meg fogja kérdezni, hogy hova mentse el</string> <string name="downloads_storage_ask_summary_no_saf_notice">Minden letöltésnél meg fogja kérdezni, hogy hova mentse el</string>
<string name="downloads_storage_use_saf_summary_api_19">A „Storage Access Framework” nem támogatott Android KitKaten vagy régebbin</string>
<string name="choose_instance_prompt">Válasszon egy példányt</string> <string name="choose_instance_prompt">Válasszon egy példányt</string>
<string name="feed_oldest_subscription_update">Lista legutóbbi frissítése: %s</string> <string name="feed_oldest_subscription_update">Lista legutóbbi frissítése: %s</string>
<string name="feed_notification_loading">Lista betöltése…</string> <string name="feed_notification_loading">Lista betöltése…</string>

View File

@ -623,7 +623,6 @@
<string name="feed_load_error_account_info">Tidak bisa memuat langganan untuk \'%s\'.</string> <string name="feed_load_error_account_info">Tidak bisa memuat langganan untuk \'%s\'.</string>
<string name="feed_load_error">Galat memuat langganan</string> <string name="feed_load_error">Galat memuat langganan</string>
<string name="downloads_storage_use_saf_summary_api_29">Mulai Android 10, hanya \'Storage Access Framework\' yang didukung</string> <string name="downloads_storage_use_saf_summary_api_29">Mulai Android 10, hanya \'Storage Access Framework\' yang didukung</string>
<string name="downloads_storage_use_saf_summary_api_19">\'Storage Access Framework\' tidak didukung pada Android KitKat dan yang lebih rendah</string>
<string name="downloads_storage_ask_summary_no_saf_notice">Anda akan ditanya lokasi penyimpanan berkas unduhan</string> <string name="downloads_storage_ask_summary_no_saf_notice">Anda akan ditanya lokasi penyimpanan berkas unduhan</string>
<string name="no_dir_yet">Belum ada folder unduhan, pilih folder unduhan sekarang</string> <string name="no_dir_yet">Belum ada folder unduhan, pilih folder unduhan sekarang</string>
<string name="off">Nonaktif</string> <string name="off">Nonaktif</string>

View File

@ -633,7 +633,6 @@
<string name="feed_load_error_account_info">Impossibile caricare feed per \"%s\".</string> <string name="feed_load_error_account_info">Impossibile caricare feed per \"%s\".</string>
<string name="feed_load_error">Errore caricamento feed</string> <string name="feed_load_error">Errore caricamento feed</string>
<string name="downloads_storage_use_saf_summary_api_29">A partire da Android 10 è supportato solo il Framework di accesso all\'archiviazione</string> <string name="downloads_storage_use_saf_summary_api_29">A partire da Android 10 è supportato solo il Framework di accesso all\'archiviazione</string>
<string name="downloads_storage_use_saf_summary_api_19">Il Framework di accesso all\'archiviazione non è supportato su Android KitKat e versioni precedenti</string>
<string name="downloads_storage_ask_summary_no_saf_notice">È necessario specificare la destinazione di ogni dowload</string> <string name="downloads_storage_ask_summary_no_saf_notice">È necessario specificare la destinazione di ogni dowload</string>
<string name="no_dir_yet">Non è impostata alcuna cartella per i file scaricati, scegliere quella predefinita</string> <string name="no_dir_yet">Non è impostata alcuna cartella per i file scaricati, scegliere quella predefinita</string>
<string name="off">Disattivata</string> <string name="off">Disattivata</string>

View File

@ -614,7 +614,6 @@
<string name="downloads_storage_ask_summary_no_saf_notice">ダウンロードのたびに保存する場所を尋ねます</string> <string name="downloads_storage_ask_summary_no_saf_notice">ダウンロードのたびに保存する場所を尋ねます</string>
<string name="no_dir_yet">ダウンロードフォルダがまだ設定されていません。今すぐデフォルトのフォルダを選択してください</string> <string name="no_dir_yet">ダウンロードフォルダがまだ設定されていません。今すぐデフォルトのフォルダを選択してください</string>
<string name="downloads_storage_use_saf_summary_api_29">Android 10 以降は \'Storage Access Framework\' のみがサポートされます</string> <string name="downloads_storage_use_saf_summary_api_29">Android 10 以降は \'Storage Access Framework\' のみがサポートされます</string>
<string name="downloads_storage_use_saf_summary_api_19">\'Storage Access Framework\' は Android KitKat 以下ではサポートされていません</string>
<string name="feed_load_error_fast_unknown">高速モードでこの情報の詳細は提供されません。</string> <string name="feed_load_error_fast_unknown">高速モードでこの情報の詳細は提供されません。</string>
<string name="feed_load_error_account_info">\'%s\' のフィードを読み込めませんでした。</string> <string name="feed_load_error_account_info">\'%s\' のフィードを読み込めませんでした。</string>
<string name="feed_load_error">フィードの読み込みエラー</string> <string name="feed_load_error">フィードの読み込みエラー</string>

View File

@ -647,7 +647,6 @@
\nAr norite atsisakyti šio kanalo prenumeratos\?</string> \nAr norite atsisakyti šio kanalo prenumeratos\?</string>
<string name="feed_load_error">Klaida įkeliant srautą</string> <string name="feed_load_error">Klaida įkeliant srautą</string>
<string name="downloads_storage_use_saf_summary_api_29">Pradedant Android 10 palaikoma tik \'Storage Access Framework\'</string> <string name="downloads_storage_use_saf_summary_api_29">Pradedant Android 10 palaikoma tik \'Storage Access Framework\'</string>
<string name="downloads_storage_use_saf_summary_api_19">\'Storage Access Framework\' nėra palaikomas Android KitKat ir žemesnėse versijose</string>
<string name="downloads_storage_ask_summary_no_saf_notice">Jūsų bus paklausta, kur išsaugoti kiekvieną atsiuntimą</string> <string name="downloads_storage_ask_summary_no_saf_notice">Jūsų bus paklausta, kur išsaugoti kiekvieną atsiuntimą</string>
<string name="no_dir_yet">Atsiuntimo aplankas dar nenustatytas, pasirinkite numatytąjį atsiuntimų aplanką dabar</string> <string name="no_dir_yet">Atsiuntimo aplankas dar nenustatytas, pasirinkite numatytąjį atsiuntimų aplanką dabar</string>
<string name="comments_are_disabled">Komentarai yra išjungti</string> <string name="comments_are_disabled">Komentarai yra išjungti</string>

View File

@ -636,7 +636,6 @@
<string name="disable_media_tunneling_title">Izslēgt multivides tuneļošanu</string> <string name="disable_media_tunneling_title">Izslēgt multivides tuneļošanu</string>
<string name="disable_media_tunneling_summary">Izslēdziet multivides tuneļošanu, ja jums video atskaņošanas laikā parādās melns ekrāns vai aizķeršanās</string> <string name="disable_media_tunneling_summary">Izslēdziet multivides tuneļošanu, ja jums video atskaņošanas laikā parādās melns ekrāns vai aizķeršanās</string>
<string name="show_image_indicators_summary">Rādīt krāsainas lentes virs attēliem, norādot to avotu: sarkana - tīkls, zila - disks, zaļa - atmiņa</string> <string name="show_image_indicators_summary">Rādīt krāsainas lentes virs attēliem, norādot to avotu: sarkana - tīkls, zila - disks, zaļa - atmiņa</string>
<string name="downloads_storage_use_saf_summary_api_19">“Krātuves Piekļuves Sistēma” ir neatbalstīta uz Android KitKat un zemākām versijām</string>
<string name="description_select_enable">Ieslēgt teksta atlasīšanu video aprakstā</string> <string name="description_select_enable">Ieslēgt teksta atlasīšanu video aprakstā</string>
<string name="no_dir_yet">Lejupielādes mape vēl nav iestatīta, izvēlieties noklusējuma lejupielādes mapi</string> <string name="no_dir_yet">Lejupielādes mape vēl nav iestatīta, izvēlieties noklusējuma lejupielādes mapi</string>
<string name="main_page_content_swipe_remove">Pārvelciet objektus, lai tos noņemtu</string> <string name="main_page_content_swipe_remove">Pārvelciet objektus, lai tos noņemtu</string>

View File

@ -639,7 +639,6 @@
<string name="feed_load_error">ഫീഡ് ലോഡ് ചെയ്യുന്നതിൽ പിശക് സംഭവിച്ചിരിക്കുന്നു</string> <string name="feed_load_error">ഫീഡ് ലോഡ് ചെയ്യുന്നതിൽ പിശക് സംഭവിച്ചിരിക്കുന്നു</string>
<string name="downloads_storage_use_saf_summary_api_29">ആൻഡ്രോയ്ഡ് 10 മുതൽ മാത്രമേ \"സ്റ്റോറേജ് അക്സസ് ഫ്രെയിംവർക്ക്\" പിന്തുണക്കു</string> <string name="downloads_storage_use_saf_summary_api_29">ആൻഡ്രോയ്ഡ് 10 മുതൽ മാത്രമേ \"സ്റ്റോറേജ് അക്സസ് ഫ്രെയിംവർക്ക്\" പിന്തുണക്കു</string>
<string name="downloads_storage_ask_summary_no_saf_notice">എവിടെ ആണ് ഡൌൺലോഡ് ചെയ്യ്യപെടുന്ന ഓരോ ഫയൽലും സംരക്ഷിക്കപ്പെടേണ്ടത് എന്ന് തങ്കളോട് ചോദിക്കും</string> <string name="downloads_storage_ask_summary_no_saf_notice">എവിടെ ആണ് ഡൌൺലോഡ് ചെയ്യ്യപെടുന്ന ഓരോ ഫയൽലും സംരക്ഷിക്കപ്പെടേണ്ടത് എന്ന് തങ്കളോട് ചോദിക്കും</string>
<string name="downloads_storage_use_saf_summary_api_19">ആൻഡ്രോയ്ഡ് കിറ്റ് ക്യാറ്റോ അതിനു താഴെക്കോ ഉള്ളതിൽ \"സ്റ്റോറേജ് ആസസ്സ് ഫ്രെയിംവർക്ക് പിന്തുണക്കുന്നില്ല</string>
<string name="dont_show">കാണിക്കരുത്</string> <string name="dont_show">കാണിക്കരുത്</string>
<string name="low_quality_smaller">കുറഞ്ഞ നിലവാരം (ചെറുത് )</string> <string name="low_quality_smaller">കുറഞ്ഞ നിലവാരം (ചെറുത് )</string>
<string name="high_quality_larger">ഉയർന്ന നിലവാരം (വലിയത് )</string> <string name="high_quality_larger">ഉയർന്ന നിലവാരം (വലിയത് )</string>

View File

@ -618,7 +618,6 @@
<string name="feed_load_error_account_info">Kunne ikke laste inn informasjonskanal for «%s».</string> <string name="feed_load_error_account_info">Kunne ikke laste inn informasjonskanal for «%s».</string>
<string name="feed_load_error">Kunne ikke laste inn informasjonskanal</string> <string name="feed_load_error">Kunne ikke laste inn informasjonskanal</string>
<string name="downloads_storage_use_saf_summary_api_29">Fra Android 10 er kun «lagringstilgangsrammeverk» støttet</string> <string name="downloads_storage_use_saf_summary_api_29">Fra Android 10 er kun «lagringstilgangsrammeverk» støttet</string>
<string name="downloads_storage_use_saf_summary_api_19">«Lagringstilgangsrammeverket» støttes ikke på Android KitKat og tidligere.</string>
<string name="downloads_storage_ask_summary_no_saf_notice">Du vil bli spurt om hvor du vil lagre hver nedlastning</string> <string name="downloads_storage_ask_summary_no_saf_notice">Du vil bli spurt om hvor du vil lagre hver nedlastning</string>
<string name="seekbar_preview_thumbnail_title">Miniatyrbildeforhåndsvisning</string> <string name="seekbar_preview_thumbnail_title">Miniatyrbildeforhåndsvisning</string>
<string name="no_dir_yet">Ingen nedlastingsmappe valgt. Velg forvalgt nedlastingsmappe nå.</string> <string name="no_dir_yet">Ingen nedlastingsmappe valgt. Velg forvalgt nedlastingsmappe nå.</string>

View File

@ -2,7 +2,7 @@
<resources> <resources>
<!-- Opening Theme --> <!-- Opening Theme -->
<style name="Base.V21.OpeningTheme" parent="Base.V19.OpeningTheme"> <style name="Base.OpeningTheme" parent="Base.V21.OpeningTheme">
<item name="android:navigationBarColor">@color/dark_youtube_primary_color</item> <item name="android:navigationBarColor">@color/dark_youtube_primary_color</item>
</style> </style>

View File

@ -637,7 +637,6 @@
<string name="feed_load_error_account_info">Kan geen feed laden voor \'%s\'.</string> <string name="feed_load_error_account_info">Kan geen feed laden voor \'%s\'.</string>
<string name="feed_load_error">Error bij het inladen van de feed</string> <string name="feed_load_error">Error bij het inladen van de feed</string>
<string name="downloads_storage_use_saf_summary_api_29">Vanaf Android 10 is enkel \'Storage Access Framework\' ondersteund</string> <string name="downloads_storage_use_saf_summary_api_29">Vanaf Android 10 is enkel \'Storage Access Framework\' ondersteund</string>
<string name="downloads_storage_use_saf_summary_api_19">Het \'Storage Access Framework\' is niet ondersteund op Android KitKat en lager</string>
<string name="downloads_storage_ask_summary_no_saf_notice">U wordt gevraagd waar elk bestand wordt opgeslagen</string> <string name="downloads_storage_ask_summary_no_saf_notice">U wordt gevraagd waar elk bestand wordt opgeslagen</string>
<string name="no_dir_yet">Nog geen downloadfolder gekozen, kies de standaard downloadfolder</string> <string name="no_dir_yet">Nog geen downloadfolder gekozen, kies de standaard downloadfolder</string>
<string name="detail_heart_img_view_description">Geliefd door de maker</string> <string name="detail_heart_img_view_description">Geliefd door de maker</string>

View File

@ -529,7 +529,6 @@
<string name="app_language_title">ਐਪ ਭਾਸ਼ਾ</string> <string name="app_language_title">ਐਪ ਭਾਸ਼ਾ</string>
<string name="choose_instance_prompt">ਕੋਈ ਸਥਿਤੀ ਚੁਣੋ</string> <string name="choose_instance_prompt">ਕੋਈ ਸਥਿਤੀ ਚੁਣੋ</string>
<string name="downloads_storage_use_saf_summary_api_29">\'ਸਟੋਰੇਜ ਐਕਸੈੱਸ ਫ਼ਰੇਮਵਰਕ\' ਐਂਡਰਾਇਡ 10 ਤੋਂ ਕੰਮ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ</string> <string name="downloads_storage_use_saf_summary_api_29">\'ਸਟੋਰੇਜ ਐਕਸੈੱਸ ਫ਼ਰੇਮਵਰਕ\' ਐਂਡਰਾਇਡ 10 ਤੋਂ ਕੰਮ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ</string>
<string name="downloads_storage_use_saf_summary_api_19">\'ਸਟੋਰੇਜ ਐਕਸੈੱਸ ਫ਼ਰੇਮਵਰਕ\' ਐਂਡਰਾਇਡ ਕਿਟਕੈਟ ਅਤੇ ਇਸਤੋਂ ਹੇਠਾਂ ਦੇ ਵਰਜਨਾਂ \'ਤੇ ਕੰਮ ਨਹੀਂ ਕਰਦਾ</string>
<string name="downloads_storage_ask_summary_no_saf_notice">ਤੁਹਾਨੂੰ ਹਰ ਵਾਰ ਪੁੱਛਿਆ ਜਾਵੇਗਾ ਕਿ ਡਾਊਨਲੋਡ ਨੂੰ ਕਿੱਥੇ ਸਾਂਭਣਾ ਹੈ</string> <string name="downloads_storage_ask_summary_no_saf_notice">ਤੁਹਾਨੂੰ ਹਰ ਵਾਰ ਪੁੱਛਿਆ ਜਾਵੇਗਾ ਕਿ ਡਾਊਨਲੋਡ ਨੂੰ ਕਿੱਥੇ ਸਾਂਭਣਾ ਹੈ</string>
<string name="delete_downloaded_files">ਡਾਊਨਲੋਡ ਕੀਤੀਆਂ ਫ਼ਾਈਲਾਂ ਮਿਟਾਓ</string> <string name="delete_downloaded_files">ਡਾਊਨਲੋਡ ਕੀਤੀਆਂ ਫ਼ਾਈਲਾਂ ਮਿਟਾਓ</string>
<string name="clear_download_history">ਡਾਊਨਲੋਡ ਇਤਿਹਾਸ ਸਾਫ਼ ਕਰੋ</string> <string name="clear_download_history">ਡਾਊਨਲੋਡ ਇਤਿਹਾਸ ਸਾਫ਼ ਕਰੋ</string>

View File

@ -646,7 +646,6 @@
\nCzy chcesz anulować subskrypcję tego kanału\?</string> \nCzy chcesz anulować subskrypcję tego kanału\?</string>
<string name="feed_load_error_account_info">Nie udało się załadować kanału dla „%s”.</string> <string name="feed_load_error_account_info">Nie udało się załadować kanału dla „%s”.</string>
<string name="downloads_storage_use_saf_summary_api_29">Począwszy od Androida 10 obsługiwany jest tylko systemowy selektor folderów (SAF)</string> <string name="downloads_storage_use_saf_summary_api_29">Począwszy od Androida 10 obsługiwany jest tylko systemowy selektor folderów (SAF)</string>
<string name="downloads_storage_use_saf_summary_api_19">Systemowy selektor folderów (SAF) nie jest obsługiwany przez system Android KitKat i niższy</string>
<string name="downloads_storage_ask_summary_no_saf_notice">Zostaniesz zapytany(-na), gdzie zapisać każdy pobierany plik</string> <string name="downloads_storage_ask_summary_no_saf_notice">Zostaniesz zapytany(-na), gdzie zapisać każdy pobierany plik</string>
<string name="no_dir_yet">Nie ustawiono jeszcze folderu zapisywania, wybierz domyślny teraz</string> <string name="no_dir_yet">Nie ustawiono jeszcze folderu zapisywania, wybierz domyślny teraz</string>
<string name="feed_load_error">Błąd podczas ładowania kanału</string> <string name="feed_load_error">Błąd podczas ładowania kanału</string>

View File

@ -633,7 +633,6 @@
<string name="feed_load_error_account_info">Não foi possível carregar o feed para \'%s\'.</string> <string name="feed_load_error_account_info">Não foi possível carregar o feed para \'%s\'.</string>
<string name="feed_load_error">Erro ao carregar o feed</string> <string name="feed_load_error">Erro ao carregar o feed</string>
<string name="downloads_storage_use_saf_summary_api_29">O \'Storage Access Framework\' é compatível apenas com versões a partir do Android 10</string> <string name="downloads_storage_use_saf_summary_api_29">O \'Storage Access Framework\' é compatível apenas com versões a partir do Android 10</string>
<string name="downloads_storage_use_saf_summary_api_19">O \'Storage Access Framework\' não é compatível com Android KitKat e versões anteriores</string>
<string name="downloads_storage_ask_summary_no_saf_notice">Você será questionado onde salvar cada download</string> <string name="downloads_storage_ask_summary_no_saf_notice">Você será questionado onde salvar cada download</string>
<string name="no_dir_yet">Nenhuma pasta de download definida ainda, escolha a pasta de download padrão agora</string> <string name="no_dir_yet">Nenhuma pasta de download definida ainda, escolha a pasta de download padrão agora</string>
<string name="off">Desligado</string> <string name="off">Desligado</string>

View File

@ -638,7 +638,6 @@
<string name="feed_load_error_account_info">Não foi possível carregar o feed para \'%s\'.</string> <string name="feed_load_error_account_info">Não foi possível carregar o feed para \'%s\'.</string>
<string name="feed_load_error">Erro ao carregar o feed</string> <string name="feed_load_error">Erro ao carregar o feed</string>
<string name="downloads_storage_use_saf_summary_api_29">A partir do Android 10, apenas o \'Storage Access Framework\' é compatível</string> <string name="downloads_storage_use_saf_summary_api_29">A partir do Android 10, apenas o \'Storage Access Framework\' é compatível</string>
<string name="downloads_storage_use_saf_summary_api_19">\'Storage Access Framework\' não é compatível com Android KitKat e versões anteriores</string>
<string name="downloads_storage_ask_summary_no_saf_notice">Sempre que descarregar um ficheiro, terá que indicar o local para o guardar</string> <string name="downloads_storage_ask_summary_no_saf_notice">Sempre que descarregar um ficheiro, terá que indicar o local para o guardar</string>
<string name="dont_show">Não mostrar</string> <string name="dont_show">Não mostrar</string>
<string name="low_quality_smaller">Baixa qualidade (menor)</string> <string name="low_quality_smaller">Baixa qualidade (menor)</string>

View File

@ -619,7 +619,6 @@
<string name="feed_load_error_account_info">Não foi possível carregar o feed para \'%s\'.</string> <string name="feed_load_error_account_info">Não foi possível carregar o feed para \'%s\'.</string>
<string name="feed_load_error">Erro ao carregar o feed</string> <string name="feed_load_error">Erro ao carregar o feed</string>
<string name="downloads_storage_use_saf_summary_api_29">A partir do Android 10, apenas o \'Storage Access Framework\' é compatível</string> <string name="downloads_storage_use_saf_summary_api_29">A partir do Android 10, apenas o \'Storage Access Framework\' é compatível</string>
<string name="downloads_storage_use_saf_summary_api_19">A \'Framework de acesso ao armazenamento\' não está disponível no Android KitKat e anteriores</string>
<string name="seekbar_preview_thumbnail_title">Pré-visualização da miniatura da barra de pesquisa</string> <string name="seekbar_preview_thumbnail_title">Pré-visualização da miniatura da barra de pesquisa</string>
<string name="mark_as_watched">Marcar como visto</string> <string name="mark_as_watched">Marcar como visto</string>
<string name="off">Desligado</string> <string name="off">Desligado</string>

Some files were not shown because too many files have changed in this diff Show More