Skip to content

Commit 3e89f72

Browse files
committed
bump superlyric api to 3.3
1 parent 9d9ffcb commit 3e89f72

6 files changed

Lines changed: 41 additions & 40 deletions

File tree

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ gson = "2.13.2"
3030
hyperfocusapi = "2.0"
3131
appiconloader = "1.5.0"
3232
lunarcalendar = "latest.release"
33-
superLyricApi = "2.7"
33+
superLyricApi = "3.3"
3434

3535
[libraries]
3636
# AndroidX

library/libhook/proguard-rules.pro

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,6 @@
5353
-keep class com.sevtinge.hyperceiler.libhook.utils.hookapi.dexkit.** { *; }
5454
-keep class com.sevtinge.hyperceiler.libhook.utils.hookapi.effect.** { *; }
5555
-keep class com.sevtinge.hyperceiler.libhook.utils.hookapi.tool.** { *; }
56+
57+
# --- Warnning ---
58+
-dontwarn android.os.ServiceManager

library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/appbase/systemui/MusicBaseHook.kt

Lines changed: 26 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,19 @@ import androidx.core.app.NotificationCompat
4242
import androidx.core.graphics.createBitmap
4343
import androidx.core.graphics.drawable.IconCompat
4444
import androidx.core.graphics.drawable.toBitmap
45-
import com.hchen.superlyricapi.ISuperLyric
45+
import com.hchen.superlyricapi.ISuperLyricReceiver
4646
import com.hchen.superlyricapi.SuperLyricData
47-
import com.hchen.superlyricapi.SuperLyricTool
47+
import com.hchen.superlyricapi.SuperLyricHelper
4848
import com.hyperfocus.api.FocusApi
4949
import com.hyperfocus.api.IslandApi
50+
import com.sevtinge.hyperceiler.common.log.XposedLog
51+
import com.sevtinge.hyperceiler.common.utils.PrefsBridge
52+
import com.sevtinge.hyperceiler.common.utils.api.ProjectApi
5053
import com.sevtinge.hyperceiler.libhook.R
5154
import com.sevtinge.hyperceiler.libhook.base.BaseHook
52-
import com.sevtinge.hyperceiler.common.utils.api.ProjectApi
5355
import com.sevtinge.hyperceiler.libhook.utils.hookapi.tool.AppsTool
5456
import com.sevtinge.hyperceiler.libhook.utils.hookapi.tool.EzxHelpUtils
55-
import com.sevtinge.hyperceiler.common.log.XposedLog
56-
import com.sevtinge.hyperceiler.common.utils.PrefsBridge
57+
import com.sevtinge.hyperceiler.libhook.utils.hookapi.tool.getIdByName
5758
import io.github.kyuubiran.ezxhelper.xposed.EzXposed
5859
import org.json.JSONObject
5960
import kotlin.math.min
@@ -100,12 +101,12 @@ abstract class MusicBaseHook : BaseHook() {
100101
private val resourceIds by lazy {
101102
val modRes = AppsTool.getModuleRes(context)
102103
ResourceIds(
103-
focuslyricLayout = modRes.getIdentifier("focuslyric_layout", "layout", ProjectApi.mAppModulePkg),
104-
focuslyricIslandLayout = modRes.getIdentifier("focuslyricisland_layout", "layout", ProjectApi.mAppModulePkg),
105-
focusaodlyricLayout = modRes.getIdentifier("focusaodlyric_layout", "layout", ProjectApi.mAppModulePkg),
106-
focuslyricId = modRes.getIdentifier("focuslyric", "id", ProjectApi.mAppModulePkg),
107-
focusiconId = modRes.getIdentifier("focusicon", "id", ProjectApi.mAppModulePkg),
108-
focustflyricId = modRes.getIdentifier("focustflyric", "id", ProjectApi.mAppModulePkg)
104+
focuslyricLayout = modRes.getIdByName("focuslyric_layout", "layout", ProjectApi.mAppModulePkg),
105+
focuslyricIslandLayout = modRes.getIdByName("focuslyricisland_layout", "layout", ProjectApi.mAppModulePkg),
106+
focusaodlyricLayout = modRes.getIdByName("focusaodlyric_layout", "layout", ProjectApi.mAppModulePkg),
107+
focuslyricId = modRes.getIdByName("focuslyric", "id", ProjectApi.mAppModulePkg),
108+
focusiconId = modRes.getIdByName("focusicon", "id", ProjectApi.mAppModulePkg),
109+
focustflyricId = modRes.getIdByName("focustflyric", "id", ProjectApi.mAppModulePkg)
109110
)
110111
}
111112

@@ -122,13 +123,13 @@ abstract class MusicBaseHook : BaseHook() {
122123
true
123124
}
124125

125-
private val receiver = object : ISuperLyric.Stub() {
126-
override fun onSuperLyric(data: SuperLyricData) {
127-
runCatching { this@MusicBaseHook.onSuperLyric(data) }
126+
private val receiver = object : ISuperLyricReceiver.Stub() {
127+
override fun onLyric(publisher: String, data: SuperLyricData) {
128+
runCatching { this@MusicBaseHook.onSuperLyric(publisher, data) }
128129
.onFailure { XposedLog.e(TAG, lpparam.packageName, it) }
129130
}
130131

131-
override fun onStop(data: SuperLyricData) {
132+
override fun onStop(publisher: String, data: SuperLyricData) {
132133
runCatching {
133134
if (data.playbackState?.state == PlaybackState.STATE_BUFFERING) return
134135
this@MusicBaseHook.onStop()
@@ -137,16 +138,16 @@ abstract class MusicBaseHook : BaseHook() {
137138
}
138139

139140
init {
140-
EzxHelpUtils.runOnApplicationAttach { context ->
141+
EzxHelpUtils.runOnApplicationAttach { _ ->
141142
runCatching {
142-
SuperLyricTool.registerSuperLyric(context, receiver)
143+
SuperLyricHelper.registerReceiver(receiver)
143144
}.onFailure {
144145
XposedLog.e(TAG, lpparam.packageName, "registerLyricListener not found: ${it.message}")
145146
}
146147
}
147148
}
148149

149-
abstract fun onSuperLyric(data: SuperLyricData)
150+
abstract fun onSuperLyric(packageName: String?, data: SuperLyricData)
150151
abstract fun onStop()
151152

152153
/**
@@ -160,7 +161,7 @@ abstract class MusicBaseHook : BaseHook() {
160161
// 确保 Channel 已创建
161162
channelCreated
162163

163-
val (musicAppName, launchIntent) = resolveAppNameAndLaunchIntent(extraData.packageName)
164+
val (musicAppName, launchIntent) = resolveAppNameAndLaunchIntent()
164165

165166
// 准备图标
166167
val iconBundle = prepareIcons(extraData, launchIntent)
@@ -181,10 +182,10 @@ abstract class MusicBaseHook : BaseHook() {
181182
// Island template
182183
val islandTemplate = buildIslandTemplate(leftText, rightText, musicAppName, text)
183184

184-
val tf = extraData.translation
185+
val tf = extraData.translation?.text
185186

186187
// 发送通知
187-
sendFocusNotification(builder, text, tf, iconBundle, islandTemplate, extraData.packageName)
188+
sendFocusNotification(builder, text, tf, iconBundle, islandTemplate, packageName)
188189
}
189190

190191
/**
@@ -204,14 +205,12 @@ abstract class MusicBaseHook : BaseHook() {
204205
/**
205206
* 解析应用名称和启动 Intent
206207
*/
207-
private fun resolveAppNameAndLaunchIntent(packageName: String?): Pair<String, Intent?> {
208-
packageName ?: return "unknown" to null
209-
208+
private fun resolveAppNameAndLaunchIntent(): Pair<String, Intent?> {
210209
return runCatching {
211210
val pm = context.packageManager
212-
val appInfo = pm.getApplicationInfo(packageName, 0)
211+
val appInfo = pm.getApplicationInfo(context.packageName, 0)
213212
val label = pm.getApplicationLabel(appInfo).toString()
214-
val launchIntent = pm.getLaunchIntentForPackage(packageName)
213+
val launchIntent = pm.getLaunchIntentForPackage(context.packageName)
215214
label to launchIntent
216215
}.getOrElse { e ->
217216
XposedLog.e(TAG, e)
@@ -228,7 +227,7 @@ abstract class MusicBaseHook : BaseHook() {
228227
runCatching { context.packageManager.getActivityIcon(it).toBitmap() }.getOrNull()
229228
}
230229

231-
val isSaltMusic = extraData.packageName == SALT_MUSIC_PACKAGE
230+
val isSaltMusic = context.packageName == SALT_MUSIC_PACKAGE
232231
val primaryBitmap = when {
233232
isSaltMusic -> activityIconBitmap
234233
else -> baseBitmap ?: activityIconBitmap

library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/systemui/statusbar/island/FocusNotifLyric.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ import kotlinx.coroutines.launch
5050
// co-author git@lingqiqi5211
5151
object FocusNotifLyric : MusicBaseHook() {
5252
private var speed = -0.1f
53-
private var lastLyric = ""
53+
private var lastLyric: String? = ""
5454
private val runnablePool = mutableMapOf<Int, Runnable>()
5555
private val focusTextViewList = mutableListOf<TextView>()
5656
private val sCollectFocusedTextViews = ThreadLocal<Boolean>()
@@ -162,7 +162,7 @@ object FocusNotifLyric : MusicBaseHook() {
162162
// setStaticObject(loadClass("miui.systemui.notification.NotificationUtil", classLoader), "DEBUG", true)
163163
}
164164

165-
override fun onSuperLyric(data: SuperLyricData) {
165+
override fun onSuperLyric(packageName: String?, data: SuperLyricData) {
166166
val lyric = data.lyric
167167
focusTextViewList.forEach { textView ->
168168
textView.post {
@@ -175,8 +175,8 @@ object FocusNotifLyric : MusicBaseHook() {
175175
callMethod("stop")
176176
}
177177
}
178-
textView.text = lyric
179-
lastLyric = lyric
178+
textView.text = lyric?.text
179+
lastLyric = lyric?.text
180180
}
181181
val key = textView.hashCode()
182182
val startScroll = runnablePool.getOrPut(key) {
@@ -190,9 +190,9 @@ object FocusNotifLyric : MusicBaseHook() {
190190
}
191191
}
192192

193-
if (!isShowApp && data.lyric.isNotEmpty()) {
193+
if (!isShowApp && data.lyric!!.text.isNotEmpty()) {
194194
CoroutineScope(Dispatchers.Main).launch {
195-
sendNotification(data.lyric, data)
195+
sendNotification(data.lyric!!.text, data)
196196
}
197197
}
198198
}

library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/systemui/statusbar/island/HideFakeStatusBar.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ object HideFakeStatusBar : MusicBaseHook() {
9595

9696
}
9797

98-
override fun onSuperLyric(data: SuperLyricData) {
98+
override fun onSuperLyric(packageName: String?, data: SuperLyricData) {
9999
}
100100

101101
override fun onStop() {

library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/various/MusicHooks.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,11 @@ object MusicHooks : MusicBaseHook() {
4848
}*/
4949
}
5050

51-
override fun onSuperLyric(data: SuperLyricData) {
52-
val pkgName = data.packageName
53-
if (pkgName == context.packageName) {
54-
if (data.lyric.isNotEmpty()) {
51+
override fun onSuperLyric(packageName: String?, data: SuperLyricData) {
52+
if (packageName == context.packageName) {
53+
if (data.lyric!!.text.isNotEmpty()) {
5554
CoroutineScope(Dispatchers.Main).launch {
56-
sendNotification(data.lyric, data)
55+
sendNotification(data.lyric!!.text, data)
5756
}
5857
}
5958
}

0 commit comments

Comments
 (0)