Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app/src/main/java/me/iacn/biliroaming/BiliBiliPackage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,7 @@ class BiliBiliPackage constructor(private val mClassLoader: ClassLoader, mContex
val resolveClientCompanionClass by Weak { mHookInfo.resolveClientCompanion.class_ from mClassLoader }
val videoDownloadEntryClass by Weak { "com.bilibili.videodownloader.model.VideoDownloadEntry" from mClassLoader }
val rewardAdClass by Weak { mHookInfo.rewardAd.class_ from mClassLoader }
val tripleSpeedServiceClass by Weak { "com.bilibili.ship.theseus.united.player.TripleSpeedService\$runOldTripleSpeed\$1\$listener\$1\$onLongPress\$1" from mClassLoader }

// for v8.17.0+
val useNewMossFunc = instance.viewMossClass?.declaredMethods?.any {
Expand Down
35 changes: 35 additions & 0 deletions app/src/main/java/me/iacn/biliroaming/SettingDialog.kt
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ class SettingDialog(context: Context) : AlertDialog.Builder(context) {
findPreference("filter_comment")?.onPreferenceClickListener = this
findPreference("copy_access_key")?.onPreferenceClickListener = this
findPreference("purify_story_video_ad")?.onPreferenceClickListener = this
findPreference("long_press_speed")?.onPreferenceClickListener = this
checkCompatibleVersion()
searchItems = retrieve(preferenceScreen)
checkUpdate()
Expand Down Expand Up @@ -923,6 +924,39 @@ class SettingDialog(context: Context) : AlertDialog.Builder(context) {
"(累计拦截 $blockedCount 条)"
}

private fun onLongPressSpeedClick(): Boolean {
AlertDialog.Builder(activity).run {
val view = context.inflateLayout(R.layout.seekbar_dialog)
val seekBar = view.findViewById<SeekBar>(R.id.seekBar)
seekBar.max = 100
val tvHint = view.findViewById<TextView>(R.id.tvHint)
seekBar.setOnSeekBarChangeListener(object : OnSeekBarChangeListener {
@SuppressLint("SetTextI18n")
override fun onProgressChanged(
seekBar: SeekBar?, progress: Int, fromUser: Boolean
) {
tvHint.text = "${progress * 10}%"
}

override fun onStartTrackingTouch(seekBar: SeekBar?) {}
override fun onStopTrackingTouch(seekBar: SeekBar?) {}
})
val current = prefs.getInt("long_press_speed", 300)
@SuppressLint("SetTextI18n")
tvHint.text = "${current * 10}%"
seekBar.progress = current / 10
setTitle(R.string.long_press_speed)
setNegativeButton(android.R.string.cancel, null)
setPositiveButton(android.R.string.ok) { _, _ ->
prefs.edit().putInt("long_press_speed", seekBar.progress * 10).apply()
}
setView(view)
show()

}
return true
}

@Deprecated("Deprecated in Java")
override fun onPreferenceClick(preference: Preference) = when (preference.key) {
"version" -> onVersionClick()
Expand All @@ -945,6 +979,7 @@ class SettingDialog(context: Context) : AlertDialog.Builder(context) {
"filter_comment" -> onFilterCommentClick()
"copy_access_key" -> onCopyAccessKeyClick()
"purify_story_video_ad" -> onPurifyStoryVideoAdClick()
"long_press_speed" -> onLongPressSpeedClick()
else -> false
}
}
Expand Down
1 change: 1 addition & 0 deletions app/src/main/java/me/iacn/biliroaming/XposedInit.kt
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ class XposedInit : IXposedHookLoadPackage, IXposedHookZygoteInit {
startHook { MultiWindowHook(lpparam.classLoader) }
startHook { LiveQualityHook(lpparam.classLoader) }
startHook { StoryPlayerAdHook(lpparam.classLoader) }
startHook { LongPressSpeed(lpparam.classLoader) }
}

lpparam.processName.endsWith(":web") -> {
Expand Down
23 changes: 23 additions & 0 deletions app/src/main/java/me/iacn/biliroaming/hook/LongPressSpeed.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package me.iacn.biliroaming.hook

import me.iacn.biliroaming.BiliBiliPackage.Companion.instance
import me.iacn.biliroaming.utils.hookAfterAllConstructors
import me.iacn.biliroaming.utils.sPrefs


class LongPressSpeed(cl: ClassLoader) : BaseHook(cl) {
private val speed: Float = sPrefs.getInt("long_press_speed", 300) / 100f


override fun startHook() {
if (speed == 3f) return

instance.tripleSpeedServiceClass!!.hookAfterAllConstructors {
val obj = it.thisObject
obj::class.java.getDeclaredField("\$speed").apply {
isAccessible = true
set(obj, speed)
}
}
}
}
6 changes: 1 addition & 5 deletions app/src/main/java/me/iacn/biliroaming/hook/VipSectionHook.kt
Original file line number Diff line number Diff line change
@@ -1,22 +1,18 @@
package me.iacn.biliroaming.hook

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import me.iacn.biliroaming.BiliBiliPackage.Companion.instance
import me.iacn.biliroaming.utils.findFieldByExactType
import me.iacn.biliroaming.utils.from
import me.iacn.biliroaming.utils.hookAfterMethod
import me.iacn.biliroaming.utils.sPrefs


class VipSectionHook(classLoader: ClassLoader) : BaseHook(classLoader) {
override fun startHook() {
if (!sPrefs.getBoolean("hidden", false)
|| !sPrefs.getBoolean("remove_vip_section", false)
) return


instance.homeUserCenterClass!!.hookAfterMethod(
"onViewCreated",
View::class.java,
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -310,4 +310,5 @@
<string name="skip_reward_ad_summary">有了这个,终于能过第二关了😋(需重启两次哔哩哔哩)</string>
<string name="purify_story_video_ad_title">净化竖屏模式广告/推广</string>
<string name="purify_story_video_ad_summary">有了这个,连第一关都看不到了😭</string>
<string name="long_press_speed">长按播放速度设置</string>
</resources>
5 changes: 5 additions & 0 deletions app/src/main/res/xml/prefs_setting.xml
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,11 @@
android:key="fake_non_multiwindow"
android:title="@string/fake_non_multiwindow_title"
android:summary="@string/fake_non_multiwindow_summary"/>

<Preference
android:defaultValue="300"
android:key="long_press_speed"
android:title="@string/long_press_speed" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/pref_backup">
<Preference
Expand Down