Skip to content

Commit

Permalink
完善lyricData中的包名数据
Browse files Browse the repository at this point in the history
  • Loading branch information
HChenX committed Nov 16, 2024
1 parent 2de0df8 commit c5b7676
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 26 deletions.
31 changes: 16 additions & 15 deletions app/src/main/kotlin/cn/lyric/getter/hook/app/SystemUi.kt
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import cn.lyric.getter.tool.ConfigTools.xConfig as config

object SystemUi : BaseHook() {
var isPlaying: Boolean = false
var playApp: String = ""
private lateinit var receiver: LyricReceiver
val uidObserveService: UidObserveService by lazy {
UidObserveService { packageName ->
Expand All @@ -30,19 +31,18 @@ object SystemUi : BaseHook() {
}
}

data class TitleInfo (
val changedApp: String,
data class TitleInfo(
val caller: String,
val title: String
)

private var title: TitleInfo by observableChange(TitleInfo("","")) { _, _, newValue ->
private var title: TitleInfo by observableChange(TitleInfo("", "")) { _, _, newValue ->
"title: $newValue".log()
if (config.enhancedHiddenLyrics) {
eventTools.cleanLyric(newValue.changedApp)
}
if (config.showTitle) {
if (config.enhancedHiddenLyrics)
eventTools.cleanLyric(newValue.caller)

if (config.showTitle)
eventTools.sendLyric(newValue.title)
}
}

private var useOwnMusicController: Boolean = false
Expand All @@ -55,6 +55,7 @@ object SystemUi : BaseHook() {
isPlaying = true
useOwnMusicController = lyricData.extraData.useOwnMusicController
if (lyricData.extraData.packageName.isNotEmpty()) {
playApp = lyricData.extraData.packageName
uidObserveService.registerForPackage(lyricData.extraData.packageName)
}
}
Expand All @@ -65,16 +66,16 @@ object SystemUi : BaseHook() {
})
Tools.registerLyricListener(application, BuildConfig.API_VERSION, receiver)
object : MediaSessionObserve(application) {
override fun onTitleChanged(changedApp: String, title: String) {
super.onTitleChanged(changedApp, title)
override fun onTitleChanged(caller: String, title: String) {
super.onTitleChanged(caller, title)
if (config.enhancedHiddenLyrics || config.showTitle) {
moduleRes.getString(R.string.enhanced_hidden_lyrics).log()
this@SystemUi.title = TitleInfo(changedApp, title)
this@SystemUi.title = TitleInfo(caller, title)
}
}

override fun onStateChanged(changedApp: String, state: Int) {
super.onStateChanged(changedApp, state)
override fun onStateChanged(caller: String, state: Int) {
super.onStateChanged(caller, state)
val stateString = when (state) {
PlaybackState.STATE_PLAYING -> "Playing"
PlaybackState.STATE_PAUSED -> "Paused"
Expand All @@ -86,15 +87,15 @@ object SystemUi : BaseHook() {
if (!isPlaying || useOwnMusicController) return
if (state == PlaybackState.STATE_PAUSED) {
isPlaying = false
eventTools.cleanLyric(changedApp)
eventTools.cleanLyric(caller)
}
}

override fun onCleared() {
super.onCleared()
if (!isPlaying || useOwnMusicController) return
isPlaying = false
eventTools.cleanLyric()
eventTools.cleanLyric(playApp)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ open class MediaSessionObserve(context: Context) {
// 监听活跃会话的变化
private val activeSessionsListener = MediaSessionManager.OnActiveSessionsChangedListener { controllers ->
"activeSessionsListener: ${controllers?.size}".log()
if (controllers?.size == 0) {
if (controllers?.size == 0)
onCleared()
}

// 清理之前的回调
activeControllers.entries.forEach { it.key.unregisterCallback(it.value) }
activeControllers.forEach { it.key.unregisterCallback(it.value) }
activeControllers.clear()

controllers?.let {
Expand Down Expand Up @@ -70,19 +70,19 @@ open class MediaSessionObserve(context: Context) {
}

// 显示媒体元数据
private fun displayMediaMetadata(changedApp: String, metadata: MediaMetadata) {
private fun displayMediaMetadata(caller: String, metadata: MediaMetadata) {
val title = metadata.getString(MediaMetadata.METADATA_KEY_TITLE) ?: "Unknown Title"
onTitleChanged(changedApp, title)
onTitleChanged(caller, title)
}

fun cleanup() {
mediaSessionManager?.removeOnActiveSessionsChangedListener(activeSessionsListener)
activeControllers.entries.forEach { it.key.unregisterCallback(it.value) }
}

open fun onTitleChanged(changedApp: String, title: String) {}
open fun onTitleChanged(caller: String, title: String) {}

open fun onStateChanged(changedApp: String, state: Int) {}
open fun onStateChanged(caller: String, state: Int) {}

open fun onCleared() {}
}
10 changes: 6 additions & 4 deletions app/src/main/kotlin/cn/lyric/getter/tool/EventTools.kt
Original file line number Diff line number Diff line change
Expand Up @@ -46,19 +46,21 @@ class EventTools(val context: Context) {
this.delay = 0
})
} else {
this.extraData.mergeExtra(extra!!)
this.extraData.mergeExtra(extra!!.apply {
this.packageName = this.packageName.takeIf { it.isNotEmpty() } ?: context.packageName
})
}

}
}

fun cleanLyric(stopPlayPkg: String = "") {
fun cleanLyric(caller: String = "") {
context.sendBroadcast(Intent().apply {
action = "Lyric_Data"
val lyricData = LyricData().apply {
this.type = OperateType.STOP
this.extraData.mergeExtra(ExtraData().apply {
this.packageName = stopPlayPkg
this.packageName = caller.takeIf { it.isNotEmpty() }
?: context.packageName.takeIf { it != "com.android.systemui" } ?: ""
})
}
putExtra("Data", lyricData)
Expand Down

0 comments on commit c5b7676

Please sign in to comment.