From abbea02c8558db5b0ed7782ce8d6968e4fde58c9 Mon Sep 17 00:00:00 2001 From: xiao_wine Date: Sat, 2 Mar 2024 16:40:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=81=9C=E6=AD=A2=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/lyric/getter/hook/app/SystemUi.kt | 57 +++++++------------ 1 file changed, 22 insertions(+), 35 deletions(-) diff --git a/app/src/main/java/cn/lyric/getter/hook/app/SystemUi.kt b/app/src/main/java/cn/lyric/getter/hook/app/SystemUi.kt index 9171211..04ce2a4 100644 --- a/app/src/main/java/cn/lyric/getter/hook/app/SystemUi.kt +++ b/app/src/main/java/cn/lyric/getter/hook/app/SystemUi.kt @@ -26,7 +26,6 @@ import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinde object SystemUi : BaseHook() { - var isPlayer: Boolean = false private lateinit var receiver: LyricReceiver private var title: String by observableChange("") { _, _, newValue -> @@ -58,8 +57,7 @@ object SystemUi : BaseHook() { loadClassOrNull("com.android.systemui.statusbar.NotificationMediaManager").isNotNull { it.methodFinder().filterByName("clearCurrentMediaNotification").first().createHook { after { - if (!isPlayer || !useOwnMusicController) return@after - isPlayer = false + if (!useOwnMusicController) return@after eventTools.cleanLyric() } } @@ -69,8 +67,7 @@ object SystemUi : BaseHook() { loadClassOrNull("com.android.systemui.media.controls.ui.MediaCarouselController").isNotNull { it.methodFinder().filterByName("removePlayer\$default").first().createHook { after { - if (!isPlayer || !useOwnMusicController) return@after - isPlayer = false + if (!useOwnMusicController) return@after eventTools.cleanLyric() } } @@ -82,10 +79,9 @@ object SystemUi : BaseHook() { if (clazz!!.hasMethod("onPlaybackStateChanged")) { clazz.methodFinder().filterByName("onPlaybackStateChanged").first().createHook { after { hookParam -> - if (!isPlayer || !useOwnMusicController) return@after + if (!useOwnMusicController) return@after val playbackState = hookParam.args[0] as PlaybackState if (playbackState.state == 2) { - isPlayer = false eventTools.cleanLyric() } } @@ -94,30 +90,11 @@ object SystemUi : BaseHook() { } } } - if (config.enhancedHiddenLyrics || config.showTitle) { - moduleRes.getString(R.string.enhanced_hidden_lyrics).log() - for (i in 0..10) { - val clazz = loadClassOrNull("com.android.systemui.statusbar.NotificationMediaManager$$i") - if (clazz.isNotNull()) { - if (clazz!!.hasMethod("onMetadataChanged")) { - clazz.methodFinder().filterByName("onMetadataChanged").first().createHook { - after { hookParam -> - val metadata = hookParam.args[0] as MediaMetadata - title = metadata.getString(MediaMetadata.METADATA_KEY_TITLE) - } - } - break - } - } - } - } - loadClass("android.media.session.MediaController").methodFinder().filterByParamCount(1).filterByName("unregisterCallback").first().createHook { after { - if (!isPlayer || !useOwnMusicController) return@after + if (!useOwnMusicController) return@after if (it.args[0]::class.java.name.contains("statusbar")) { - isPlayer = false eventTools.cleanLyric() } @@ -125,17 +102,15 @@ object SystemUi : BaseHook() { } loadClass("android.media.session.MediaController").methodFinder().filterByParamCount(1).filterByName("registerCallback").first().createHook { after { - if (!isPlayer || !useOwnMusicController) return@after + if (!useOwnMusicController) return@after if (it.args[0]::class.java.name.contains("statusbar")) { (it.thisObject as MediaController).registerCallback(object : MediaController.Callback() { override fun onPlaybackStateChanged(state: PlaybackState?) { super.onPlaybackStateChanged(state) if (state != null) { if (state.state == PlaybackState.STATE_PAUSED) { - isPlayer = false eventTools.cleanLyric() } - } } }) @@ -143,16 +118,28 @@ object SystemUi : BaseHook() { } } + if (config.enhancedHiddenLyrics || config.showTitle) { + moduleRes.getString(R.string.enhanced_hidden_lyrics).log() + for (i in 0..10) { + val clazz = loadClassOrNull("com.android.systemui.statusbar.NotificationMediaManager$$i") + if (clazz.isNotNull()) { + if (clazz!!.hasMethod("onMetadataChanged")) { + clazz.methodFinder().filterByName("onMetadataChanged").first().createHook { + after { hookParam -> + val metadata = hookParam.args[0] as MediaMetadata + title = metadata.getString(MediaMetadata.METADATA_KEY_TITLE) + } + } + break + } + } + } + } getApplication { application -> receiver = LyricReceiver(object : LyricListener() { override fun onUpdate(lyricData: LyricData) { - isPlayer = true useOwnMusicController = lyricData.extraData.useOwnMusicController } - - override fun onStop(lyricData: LyricData) { - isPlayer = false - } }) Tools.registerLyricListener(application, BuildConfig.API_VERSION, receiver) }