From bba9fa54b375248761df60deba428fb816a655d5 Mon Sep 17 00:00:00 2001 From: Nacho Date: Sat, 18 Oct 2025 17:41:11 +0800 Subject: [PATCH] feat: add fuck sport --- .../moe/ono/activity/OUOSettingActivity.kt | 4 + .../ono/hooks/item/entertainment/FuckSport.kt | 81 +++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 app/src/main/java/moe/ono/hooks/item/entertainment/FuckSport.kt diff --git a/app/src/main/java/moe/ono/activity/OUOSettingActivity.kt b/app/src/main/java/moe/ono/activity/OUOSettingActivity.kt index 28b17068..52fec01a 100644 --- a/app/src/main/java/moe/ono/activity/OUOSettingActivity.kt +++ b/app/src/main/java/moe/ono/activity/OUOSettingActivity.kt @@ -64,6 +64,7 @@ import moe.ono.hooks.item.chat.MessageEncryptor import moe.ono.hooks.item.chat.QQBubbleRedirect import moe.ono.hooks.item.chat.SelfMessageReactor import moe.ono.hooks.item.developer.QQPacketHelperEntry +import moe.ono.hooks.item.entertainment.FuckSport open class OUOSettingActivity : BaseActivity() { private var mAppBarLayoutHeight: Int = 0 @@ -441,6 +442,9 @@ open class OUOSettingActivity : BaseActivity() { getItem(QQPacketHelperEntry::class.java).path -> { showCFGDialogQQPacketHelperEntry(item, requireContext()) } + getItem(FuckSport::class.java).path -> { + FuckSport.showDialog(requireContext()) + } } } diff --git a/app/src/main/java/moe/ono/hooks/item/entertainment/FuckSport.kt b/app/src/main/java/moe/ono/hooks/item/entertainment/FuckSport.kt new file mode 100644 index 00000000..a1810293 --- /dev/null +++ b/app/src/main/java/moe/ono/hooks/item/entertainment/FuckSport.kt @@ -0,0 +1,81 @@ +package moe.ono.hooks.item.entertainment + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Build +import android.widget.EditText +import android.widget.LinearLayout +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import moe.ono.hooks._base.BaseClickableFunctionHookItem +import moe.ono.hooks._core.annotation.HookItem +import moe.ono.hooks.base.util.Toasts +import moe.ono.hooks.protocol.sendPacket +import moe.ono.ui.CommonContextWrapper +import java.time.LocalDate +import java.time.ZoneOffset + + +@SuppressLint("DiscouragedApi") +@HookItem(path = "娱乐功能/刷步数", description = "刷步数, 步数必须要比原步数高才会更新\n* 点击使用") +class FuckSport : BaseClickableFunctionHookItem() { + + override fun entry(classLoader: ClassLoader) {} + + companion object { + fun showDialog(context: Context) { + val fixContext = CommonContextWrapper.createAppCompatContext(context) + + val builder = MaterialAlertDialogBuilder(fixContext) + + builder.setTitle("刷步数") + + val stepCount = EditText(fixContext) + stepCount.hint = "请输入步数" + + val deviceName = EditText(fixContext) + deviceName.hint = "请输入设备代号或名称(默认自动获取)" + + val layout = LinearLayout(fixContext) + layout.orientation = LinearLayout.VERTICAL + + layout.addView(stepCount) + layout.addView(deviceName) + + builder.setView(layout) + + builder.setPositiveButton("确定") { dialog, i -> + fun getDeviceModel(): String { + return try { + val process = Runtime.getRuntime().exec("getprop ro.product.model") + process.inputStream.bufferedReader().use { it.readLine() ?: Build.MODEL } + } catch (e: Exception) { + Build.MODEL + } + } + + val body = "{\n" + + " \"1\": {\n" + + " \"1\": 109,\n" + + " \"2\": {\n" + + " \"6\": 53\n" + + " },\n" + + " \"3\": \"9.1.70\"\n" + + " },\n" + + " \"2\": \"{\\\"oauth_consumer_key\\\":1002,\\\"data\\\":[{\\\"type\\\":1,\\\"time\\\":"+ LocalDate.now().atStartOfDay().toEpochSecond(ZoneOffset.UTC) +",\\\"steps\\\":"+stepCount.text.toString()+"}],\\\"version\\\":\\\"9.1.70\\\",\\\"lastRecordTime\\\":1759919,\\\"model\\\":\\\""+(deviceName.text.toString().ifEmpty { getDeviceModel() })+"\\\",\\\"zone\\\":\\\"GMT+08:00 Asia\\\\\\/Shanghai\\\",\\\"imei\\\":\\\"\\\",\\\"mode\\\":1,\\\"stepSource\\\":0,\\\"foreground\\\":1}\"\n" + + "}" + + sendPacket("yundong_report.steps", body.trim()) + + Toasts.info(builder.context, "请求成功") + + dialog.dismiss() + } + + builder.setNegativeButton("取消") {dialog, i -> + dialog.dismiss() + } + + builder.show() + } + } +} \ No newline at end of file