feat(YouTube): Remove Change live ring click action patch
Close https://github.com/anddea/revanced-patches/issues/1386
This commit is contained in:
parent
7c42e04238
commit
bc406169a0
92 changed files with 1 additions and 4544 deletions
|
|
@ -22,8 +22,6 @@ Report issues [here](https://github.com/inotia00/ReVanced_Extended).
|
|||
|
||||
## 📝 JSON Format
|
||||
|
||||
This section explains the JSON format for the [patches.json](patches.json) file.
|
||||
|
||||
Example:
|
||||
|
||||
```json
|
||||
|
|
|
|||
|
|
@ -1,127 +0,0 @@
|
|||
package app.morphe.extension.youtube.patches.general;
|
||||
|
||||
import static app.morphe.extension.shared.utils.StringRef.str;
|
||||
|
||||
import android.widget.ImageView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.facebook.litho.ComponentHost;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import app.morphe.extension.shared.utils.Logger;
|
||||
import app.morphe.extension.youtube.patches.general.requests.ChannelIdRequest;
|
||||
import app.morphe.extension.youtube.settings.Settings;
|
||||
import app.morphe.extension.youtube.utils.VideoUtils;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public final class OpenChannelOfLiveAvatarPatch {
|
||||
private static final boolean CHANGE_LIVE_RING_CLICK_ACTION =
|
||||
Settings.CHANGE_LIVE_RING_CLICK_ACTION.get();
|
||||
|
||||
/**
|
||||
* If you change the language in the app settings, a string from another language may be used.
|
||||
* In this case, restarting the app will solve it.
|
||||
*/
|
||||
private static final String liveRingDescription = str("revanced_live_ring_description");
|
||||
|
||||
private static volatile String videoId = "";
|
||||
|
||||
/**
|
||||
* This key's value is the LithoView that opened the video (Live ring or Thumbnails).
|
||||
*/
|
||||
private static final String ELEMENTS_SENDER_VIEW =
|
||||
"com.google.android.libraries.youtube.rendering.elements.sender_view";
|
||||
|
||||
/**
|
||||
* If the video is open by clicking live ring, this key does not exists.
|
||||
*/
|
||||
private static final String VIDEO_THUMBNAIL_VIEW_KEY =
|
||||
"VideoPresenterConstants.VIDEO_THUMBNAIL_VIEW_KEY";
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*
|
||||
* @param playbackStartDescriptorMap map containing information about PlaybackStartDescriptor
|
||||
* @param newlyLoadedVideoId id of the current video
|
||||
*/
|
||||
public static void fetchChannelId(@NonNull Map<Object, Object> playbackStartDescriptorMap, String newlyLoadedVideoId) {
|
||||
try {
|
||||
if (!CHANGE_LIVE_RING_CLICK_ACTION) {
|
||||
return;
|
||||
}
|
||||
// Video id is empty
|
||||
if (newlyLoadedVideoId.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
// Video was opened by clicking the thumbnail
|
||||
if (playbackStartDescriptorMap.containsKey(VIDEO_THUMBNAIL_VIEW_KEY)) {
|
||||
return;
|
||||
}
|
||||
// If the video was opened in the watch history, there is no VIDEO_THUMBNAIL_VIEW_KEY
|
||||
// In this case, check the view that opened the video (Live ring is litho)
|
||||
if (!(playbackStartDescriptorMap.get(ELEMENTS_SENDER_VIEW) instanceof ComponentHost componentHost)) {
|
||||
return;
|
||||
}
|
||||
// Check content description (accessibility labels) of the live ring.
|
||||
final CharSequence contentDescription = componentHost.getContentDescription();
|
||||
if (contentDescription == null) {
|
||||
return;
|
||||
}
|
||||
final boolean match = liveRingDescription.equals(contentDescription.toString());
|
||||
Logger.printDebug(() -> "resource description: '" + liveRingDescription + "', litho description: '" + contentDescription + "', match: " + match);
|
||||
if (!match) {
|
||||
// Sometimes it may not match:
|
||||
// 1. In some languages, accessibility label is not provided.
|
||||
// 2. Language has changed in the app settings, and the app has not restarted.
|
||||
// In this case, fallback with the legacy method.
|
||||
|
||||
// Child count of other litho Views such as Thumbnail and Watch history: 2
|
||||
// Child count of live ring: 1
|
||||
if (componentHost.getChildCount() != 1) {
|
||||
return;
|
||||
}
|
||||
// Play all button in playlist cannot be filtered with the above conditions
|
||||
// Check the ViewGroup tree
|
||||
if (!(componentHost.getChildAt(0) instanceof ComponentHost liveRingViewGroup)) {
|
||||
return;
|
||||
}
|
||||
if (!(liveRingViewGroup.getChildAt(0) instanceof ImageView)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
// Fetch channel id
|
||||
videoId = newlyLoadedVideoId;
|
||||
ChannelIdRequest.fetchRequestIfNeeded(newlyLoadedVideoId);
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "fetchVideoInformation failure", ex);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean openChannel() {
|
||||
try {
|
||||
if (!CHANGE_LIVE_RING_CLICK_ACTION) {
|
||||
return false;
|
||||
}
|
||||
// If it is not fetch, the video id is empty
|
||||
if (videoId.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
ChannelIdRequest request = ChannelIdRequest.getRequestForVideoId(videoId);
|
||||
if (request != null) {
|
||||
String channelId = request.getChannelId();
|
||||
// Open the channel
|
||||
if (channelId != null) {
|
||||
videoId = "";
|
||||
VideoUtils.openChannel(channelId);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "openChannel failure", ex);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -198,7 +198,6 @@ public class Settings extends SharedYouTubeSettings {
|
|||
public static final StringSetting TRANSCRIPT_COOKIES = new StringSetting("revanced_transcript_cookies", "", true, parent(SET_TRANSCRIPT_COOKIES));
|
||||
|
||||
public static final EnumSetting<FormFactor> CHANGE_FORM_FACTOR = new EnumSetting<>("revanced_change_form_factor", FormFactor.DEFAULT, true, "revanced_change_form_factor_user_dialog_message");
|
||||
public static final BooleanSetting CHANGE_LIVE_RING_CLICK_ACTION = new BooleanSetting("revanced_change_live_ring_click_action", FALSE, true);
|
||||
public static final BooleanSetting DISABLE_LAYOUT_UPDATES = new BooleanSetting("revanced_disable_layout_updates", FALSE, true, "revanced_disable_layout_updates_user_dialog_message");
|
||||
public static final BooleanSetting DISABLE_TRANSLUCENT_STATUS_BAR = new BooleanSetting("revanced_disable_translucent_status_bar", FALSE, true);
|
||||
public static final BooleanSetting FIX_HYPE_BUTTON_ICON = new BooleanSetting("revanced_fix_hype_button_icon", TRUE, true, "revanced_fix_hype_button_icon_user_dialog_message");
|
||||
|
|
|
|||
3825
patches.json
3825
patches.json
File diff suppressed because it is too large
Load diff
|
|
@ -1,33 +0,0 @@
|
|||
package app.morphe.patches.youtube.general.livering
|
||||
|
||||
import app.morphe.util.fingerprint.legacyFingerprint
|
||||
import app.morphe.util.getReference
|
||||
import app.morphe.util.indexOfFirstInstruction
|
||||
import app.morphe.util.or
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.iface.Method
|
||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
|
||||
internal val clientSettingEndpointFingerprint = legacyFingerprint(
|
||||
name = "clientSettingEndpointFingerprint",
|
||||
returnType = "V",
|
||||
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
|
||||
parameters = listOf("L", "Ljava/util/Map;"),
|
||||
strings = listOf(
|
||||
"force_fullscreen",
|
||||
"PLAYBACK_START_DESCRIPTOR_MUTATOR",
|
||||
"VideoPresenterConstants.VIDEO_THUMBNAIL_BITMAP_KEY"
|
||||
),
|
||||
customFingerprint = { method, _ ->
|
||||
indexOfPlaybackStartDescriptorInstruction(method) >= 0
|
||||
}
|
||||
)
|
||||
|
||||
internal fun indexOfPlaybackStartDescriptorInstruction(method: Method) =
|
||||
method.indexOfFirstInstruction {
|
||||
val reference = getReference<MethodReference>()
|
||||
opcode == Opcode.INVOKE_VIRTUAL &&
|
||||
reference?.returnType == "Lcom/google/android/libraries/youtube/player/model/PlaybackStartDescriptor;" &&
|
||||
reference.parameterTypes.isEmpty()
|
||||
}
|
||||
|
|
@ -1,210 +0,0 @@
|
|||
package app.morphe.patches.youtube.general.livering
|
||||
|
||||
import app.morphe.patcher.extensions.InstructionExtensions.addInstructions
|
||||
import app.morphe.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
|
||||
import app.morphe.patcher.extensions.InstructionExtensions.getInstruction
|
||||
import app.morphe.patcher.patch.bytecodePatch
|
||||
import app.morphe.patcher.patch.resourcePatch
|
||||
import app.morphe.patcher.util.proxy.mutableTypes.MutableMethod
|
||||
import app.morphe.patches.youtube.utils.compatibility.Constants.COMPATIBLE_PACKAGE
|
||||
import app.morphe.patches.youtube.utils.extension.Constants.GENERAL_PATH
|
||||
import app.morphe.patches.youtube.utils.patch.PatchList.CHANGE_LIVE_RING_CLICK_ACTION
|
||||
import app.morphe.patches.youtube.utils.playservice.is_19_25_or_greater
|
||||
import app.morphe.patches.youtube.utils.playservice.versionCheckPatch
|
||||
import app.morphe.patches.youtube.utils.settings.ResourceUtils.addPreference
|
||||
import app.morphe.patches.youtube.utils.settings.settingsPatch
|
||||
import app.morphe.patches.youtube.video.playbackstart.PLAYBACK_START_DESCRIPTOR_CLASS_DESCRIPTOR
|
||||
import app.morphe.patches.youtube.video.playbackstart.playbackStartDescriptorPatch
|
||||
import app.morphe.patches.youtube.video.playbackstart.playbackStartVideoIdReference
|
||||
import app.morphe.patches.youtube.video.playbackstart.shortsPlaybackStartIntentFingerprint
|
||||
import app.morphe.patches.youtube.video.playbackstart.shortsPlaybackStartIntentLegacyFingerprint
|
||||
import app.morphe.util.copyXmlNode
|
||||
import app.morphe.util.fingerprint.methodOrThrow
|
||||
import app.morphe.util.getReference
|
||||
import app.morphe.util.indexOfFirstInstructionOrThrow
|
||||
import app.morphe.util.indexOfFirstInstructionReversedOrThrow
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
import com.android.tools.smali.dexlib2.iface.reference.TypeReference
|
||||
|
||||
private val openChannelOfLiveAvatarResourcePatch = resourcePatch(
|
||||
description = "openChannelOfLiveAvatarResourcePatch"
|
||||
) {
|
||||
execute {
|
||||
arrayOf(
|
||||
"", "af", "am", "ar", "as", "az", "b+sr+Latn", "be", "bg", "bn", "bs", "ca",
|
||||
"cs", "da", "de", "el", "en-rGB", "en-rIN", "es", "es-rUS", "et", "eu", "fa",
|
||||
"fi", "fr", "fr-rCA", "gl", "gu", "hi", "hr", "hu", "hy", "in", "is", "it",
|
||||
"iw", "ja", "ka", "kk", "km", "kn", "ko", "ky", "lo", "lt", "lv", "mk", "ml",
|
||||
"mn", "mr", "ms", "my", "nb", "ne", "nl", "or", "pa", "pl", "pt", "pt-rBR",
|
||||
"pt-rPT", "ro", "ru", "si", "sk", "sl", "sq", "sr", "sv", "sw", "ta", "te",
|
||||
"th", "tl", "tr", "uk", "ur", "uz", "vi", "zh-rCN", "zh-rHK", "zh-rTW", "zu"
|
||||
).forEach { locale ->
|
||||
val directory = if (locale.isEmpty())
|
||||
"values"
|
||||
else
|
||||
"values-$locale"
|
||||
|
||||
copyXmlNode("youtube/livering/host", "$directory/strings.xml", "resources")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||
"$GENERAL_PATH/OpenChannelOfLiveAvatarPatch;"
|
||||
|
||||
@Suppress("unused")
|
||||
val openChannelOfLiveAvatarPatch = bytecodePatch(
|
||||
CHANGE_LIVE_RING_CLICK_ACTION.title,
|
||||
CHANGE_LIVE_RING_CLICK_ACTION.summary,
|
||||
) {
|
||||
compatibleWith(COMPATIBLE_PACKAGE)
|
||||
|
||||
dependsOn(
|
||||
settingsPatch,
|
||||
openChannelOfLiveAvatarResourcePatch,
|
||||
playbackStartDescriptorPatch,
|
||||
versionCheckPatch,
|
||||
)
|
||||
|
||||
execute {
|
||||
|
||||
clientSettingEndpointFingerprint.methodOrThrow().apply {
|
||||
val eqzIndex = indexOfFirstInstructionReversedOrThrow(Opcode.IF_EQZ)
|
||||
var freeIndex = indexOfFirstInstructionReversedOrThrow(eqzIndex, Opcode.NEW_INSTANCE)
|
||||
var freeRegister = getInstruction<OneRegisterInstruction>(freeIndex).registerA
|
||||
|
||||
addInstructionsWithLabels(
|
||||
eqzIndex, """
|
||||
invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->openChannel()Z
|
||||
move-result v$freeRegister
|
||||
if-eqz v$freeRegister, :ignore
|
||||
return-void
|
||||
:ignore
|
||||
nop
|
||||
"""
|
||||
)
|
||||
|
||||
val playbackStartIndex = indexOfPlaybackStartDescriptorInstruction(this) + 1
|
||||
val playbackStartRegister =
|
||||
getInstruction<OneRegisterInstruction>(playbackStartIndex).registerA
|
||||
|
||||
val mapIndex = indexOfFirstInstructionOrThrow(playbackStartIndex) {
|
||||
val reference = getReference<MethodReference>()
|
||||
opcode == Opcode.INVOKE_STATIC &&
|
||||
reference?.returnType == "Ljava/lang/Object;" &&
|
||||
reference.parameterTypes.firstOrNull() == "Ljava/util/Map;"
|
||||
}
|
||||
val mapRegister = getInstruction<FiveRegisterInstruction>(mapIndex).registerC
|
||||
|
||||
freeIndex = indexOfFirstInstructionOrThrow(playbackStartIndex, Opcode.CONST_STRING)
|
||||
freeRegister = getInstruction<OneRegisterInstruction>(freeIndex).registerA
|
||||
|
||||
addInstructions(
|
||||
playbackStartIndex + 1, """
|
||||
invoke-virtual { v$playbackStartRegister }, $playbackStartVideoIdReference
|
||||
move-result-object v$freeRegister
|
||||
invoke-static { v$mapRegister, v$freeRegister }, $EXTENSION_CLASS_DESCRIPTOR->fetchChannelId(Ljava/util/Map;Ljava/lang/String;)V
|
||||
"""
|
||||
)
|
||||
}
|
||||
|
||||
fun MutableMethod.openChannel() =
|
||||
implementation!!.instructions
|
||||
.withIndex()
|
||||
.filter { (_, instruction) ->
|
||||
val reference = (instruction as? ReferenceInstruction)?.reference
|
||||
instruction.opcode == Opcode.NEW_INSTANCE &&
|
||||
reference is TypeReference &&
|
||||
reference.type == "Landroid/os/Bundle;"
|
||||
}
|
||||
.map { (index, _) -> index }
|
||||
.reversed()
|
||||
.forEach { index ->
|
||||
val register = getInstruction<OneRegisterInstruction>(index).registerA
|
||||
|
||||
addInstructionsWithLabels(
|
||||
index, """
|
||||
invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->openChannel()Z
|
||||
move-result v$register
|
||||
if-eqz v$register, :ignore
|
||||
return-void
|
||||
:ignore
|
||||
nop
|
||||
"""
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
fun fetchChannelIdInstructions(
|
||||
playbackStartRegister: Int,
|
||||
mapRegister: Int,
|
||||
videoIdRegister: Int,
|
||||
) =
|
||||
"""
|
||||
invoke-virtual { v$playbackStartRegister }, $playbackStartVideoIdReference
|
||||
move-result-object v$videoIdRegister
|
||||
invoke-static { v$mapRegister, v$videoIdRegister }, $EXTENSION_CLASS_DESCRIPTOR->fetchChannelId(Ljava/util/Map;Ljava/lang/String;)V
|
||||
"""
|
||||
|
||||
if (is_19_25_or_greater) {
|
||||
shortsPlaybackStartIntentFingerprint.methodOrThrow().apply {
|
||||
openChannel()
|
||||
|
||||
addInstructionsWithLabels(
|
||||
0, """
|
||||
move-object/from16 v0, p1
|
||||
move-object/from16 v1, p2
|
||||
${fetchChannelIdInstructions(0, 1, 2)}
|
||||
"""
|
||||
)
|
||||
}
|
||||
} else {
|
||||
shortsPlaybackStartIntentLegacyFingerprint.methodOrThrow().apply {
|
||||
openChannel()
|
||||
|
||||
val playbackStartIndex = indexOfFirstInstructionOrThrow {
|
||||
getReference<MethodReference>()?.returnType == PLAYBACK_START_DESCRIPTOR_CLASS_DESCRIPTOR
|
||||
}
|
||||
val mapIndex =
|
||||
indexOfFirstInstructionReversedOrThrow(playbackStartIndex, Opcode.IPUT)
|
||||
val mapRegister = getInstruction<TwoRegisterInstruction>(mapIndex).registerA
|
||||
val playbackStartRegister =
|
||||
getInstruction<OneRegisterInstruction>(playbackStartIndex + 1).registerA
|
||||
val videoIdRegister =
|
||||
getInstruction<FiveRegisterInstruction>(playbackStartIndex).registerC
|
||||
|
||||
addInstructionsWithLabels(
|
||||
playbackStartIndex + 2, """
|
||||
move-object/from16 v$mapRegister, p2
|
||||
${
|
||||
fetchChannelIdInstructions(
|
||||
playbackStartRegister,
|
||||
mapRegister,
|
||||
videoIdRegister
|
||||
)
|
||||
}
|
||||
"""
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// region add settings
|
||||
|
||||
addPreference(
|
||||
arrayOf(
|
||||
"PREFERENCE_SCREEN: GENERAL",
|
||||
"PREFERENCE_CATEGORY: GENERAL_EXPERIMENTAL_FLAGS",
|
||||
"SETTINGS: CHANGE_LIVE_RING_CLICK_ACTION"
|
||||
),
|
||||
CHANGE_LIVE_RING_CLICK_ACTION
|
||||
)
|
||||
|
||||
// endregion
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -25,10 +25,6 @@ internal enum class PatchList(
|
|||
"Change form factor",
|
||||
"Adds an option to change the UI appearance to a phone, tablet, or automotive device."
|
||||
),
|
||||
CHANGE_LIVE_RING_CLICK_ACTION(
|
||||
"Change live ring click action",
|
||||
"Adds an option to open the channel instead of the live stream when clicking on the live ring."
|
||||
),
|
||||
CHANGE_PLAYER_FLYOUT_MENU_TOGGLES(
|
||||
"Change player flyout menu toggles",
|
||||
"Adds an option to use text toggles instead of switch toggles within the additional settings menu."
|
||||
|
|
@ -277,4 +273,4 @@ internal enum class PatchList(
|
|||
"Spoof watch history",
|
||||
"Adds an option to change the domain of the watch history or check its status."
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Tap to watch live</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">በቀጥታ ስርጭት ለመመልከት መታ ያድርጉ</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">انقر لمشاهدة البث المباشر.</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">লাইভ চাবলৈ টিপক</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Canlı baxmaq üçün toxunun</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Dodirnite da biste gledali uživo</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Націсніце, каб глядзець жывую трансляцыю</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Докоснете, за да гледате на живо</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">লাইভ দেখতে ট্যাপ করুন</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Dodirnite da gledate uživo</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">"Toca per veure l'emissió en directe"</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Klepnutím spustíte živý přenos</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Tryk for at se live</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Zum live Ansehen tippen</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Πατήστε για να παρακολουθήσετε ζωντανά</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Tap to watch live</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Tap to watch live</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Presiona para ver la transmisión en vivo</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Toca para ver en directo</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Puudutage, et otse vaadata</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Sakatu hau bideoa zuzenean ikusteko</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">برای تماشای زنده تکضرب بزنید</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Napauta katsoaksesi livenä</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Touchez pour regarder en direct</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Appuyer pour regarder en direct</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Toca para velo en directo</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">લાઇવ જોવા માટે ટૅપ કરો</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">लाइव वीडियो देखने के लिए टैप करें</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Dodirnite za gledanje uživo</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Koppints és nézd élőben</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">"Հպեք՝ ուղիղ եթերը դիտելու համար"</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Ketuk untuk menonton live</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Ýttu til að horfa í beinni</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Tocca per guardare dal vivo</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">אפשר ללחוץ כדי לצפות בשידור החי</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">タップしてライブを視聴</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">შეეხეთ პირდაპირ ეთერში საყურებლად</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Тікелей эфирді көру үшін түртіңіз</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">ចុចដើម្បីមើលការផ្សាយផ្ទាល់</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">ಲೈವ್ ನೋಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">탭하여 실시간으로 시청하기</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Түз ободо көрүү үчүн таптап коюңуз</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">ແຕະເພື່ອເບິ່ງການຖ່າຍທອດສົດ</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Palieskite ir žiūrėkite tiesiogiai</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Pieskarieties, lai skatītos tiešraidi</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Допрете за да гледате во живо</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">തത്സമയം കാണാൻ ടാപ്പ് ചെയ്യുക</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Шууд үзэхийн тулд товшино уу</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">लाइव्ह पाहण्यासाठी टॅप करा</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Ketik untuk menonton secara langsung</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">တိုက်ရိုက်ကြည့်ရန် တို့ပါ</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Trykk for å se direktesendingen</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">लाइभ हेर्न ट्याप गर्नुहोस्</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Tik om live te kijken</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">ଲାଇଭ ଦେଖିବାକୁ ଟାପ କରନ୍ତୁ</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">ਲਾਈਵ ਦੇਖਣ ਲਈ ਟੈਪ ਕਰੋ</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Dotknij, aby obejrzeć na żywo</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Toque para assistir a transmissão ao vivo</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Toque para ver em direto</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Toque para assistir a transmissão ao vivo</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Atinge pentru a viziona live</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Нажмите, чтобы посмотреть трансляцию</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">සජීවීව නැරඹීමට තට්ටු කරන්න</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Klepnutím spustíte prehrávanie priameho prenosu</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Dotaknite se za ogled v živo</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Trokit për të parë drejtpërdrejt</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Додирните да бисте гледали уживо</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Tryck för att titta live</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Gusa ili utazame moja kwa moja</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">நேரலையில் பார்க்க, தட்டவும்</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">లైవ్ను చూడటానికి ట్యాప్ చేయండి</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">แตะเพื่อดูถ่ายทอดสด</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">I-tap para live na mapanood</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Canlı izlemek için dokunun</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Натисніть, щоб дивитися прямий ефір</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">لائیو دیکھنے کیلئے تھپتھپائیں</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Jonli tomosha uchun bosing</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Nhấn để xem sự kiện trực tiếp</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">点按即可观看直播</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">輕按即可收看直播</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">輕觸即可觀看直播影片</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Thepha ukuze ubuke bukhoma</string>
|
||||
</resources>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="revanced_live_ring_description">Tap to watch live</string>
|
||||
</resources>
|
||||
|
|
@ -199,11 +199,6 @@ Automotive layout
|
|||
• Shorts open in regular player.
|
||||
• Feed is organized by topics and channels.
|
||||
• Video description cannot be opened when 'Spoof streaming data' is turned off."</string>
|
||||
<string name="revanced_change_live_ring_click_action_summary_off">Live stream opens when the live ring is clicked.</string>
|
||||
<string name="revanced_change_live_ring_click_action_summary_on">"Channel opens when the live ring is clicked.
|
||||
|
||||
Limitation: When the Shorts live stream is opened in regular player due to the 'Open Shorts in regular player' setting, channel does not open."</string>
|
||||
<string name="revanced_change_live_ring_click_action_title">Change live ring click action</string>
|
||||
<string name="revanced_change_player_flyout_menu_toggle_summary_off">Switch toggles are used.</string>
|
||||
<string name="revanced_change_player_flyout_menu_toggle_summary_on">Text toggles are used.</string>
|
||||
<string name="revanced_change_player_flyout_menu_toggle_title">Change toggle type</string>
|
||||
|
|
|
|||
|
|
@ -164,9 +164,6 @@
|
|||
<!-- PREFERENCE_CATEGORY: GENERAL_EXPERIMENTAL_FLAGS
|
||||
<PreferenceCategory android:title="@string/revanced_preference_category_experimental_flag" android:layout="@layout/revanced_settings_preferences_category"/>PREFERENCE_CATEGORY: GENERAL_EXPERIMENTAL_FLAGS -->
|
||||
|
||||
<!-- SETTINGS: CHANGE_LIVE_RING_CLICK_ACTION
|
||||
<SwitchPreference android:title="@string/revanced_change_live_ring_click_action_title" android:key="revanced_change_live_ring_click_action" android:summaryOn="@string/revanced_change_live_ring_click_action_summary_on" android:summaryOff="@string/revanced_change_live_ring_click_action_summary_off" />SETTINGS: CHANGE_LIVE_RING_CLICK_ACTION -->
|
||||
|
||||
<!-- SETTINGS: DISABLE_LAYOUT_UPDATES
|
||||
<SwitchPreference android:title="@string/revanced_disable_layout_updates_title" android:key="revanced_disable_layout_updates" android:summaryOn="@string/revanced_disable_layout_updates_summary_on" android:summaryOff="@string/revanced_disable_layout_updates_summary_off" />SETTINGS: DISABLE_LAYOUT_UPDATES -->
|
||||
|
||||
|
|
@ -1022,7 +1019,6 @@
|
|||
|
||||
<PreferenceCategory android:title="@string/revanced_preference_screen_general_title" android:layout="@layout/revanced_settings_preferences_category">
|
||||
<Preference android:title="Change form factor" android:summary="@string/revanced_patches_excluded" android:selectable="false"/>
|
||||
<Preference android:title="Change live ring click action" android:summary="@string/revanced_patches_excluded" android:selectable="false"/>
|
||||
<Preference android:title="Change start page" android:summary="@string/revanced_patches_excluded" android:selectable="false"/>
|
||||
<Preference android:title="Disable forced auto audio tracks" android:summary="@string/revanced_patches_excluded" android:selectable="false"/>
|
||||
<Preference android:title="Disable forced auto captions" android:summary="@string/revanced_patches_excluded" android:selectable="false"/>
|
||||
|
|
|
|||
Loading…
Reference in a new issue