监听QQ音乐等三方音乐播放的歌曲信息
fun init(context: Context) {
mAudioMg = context.getSystemService(Context.AUDIO_SERVICE)as AudioManager
mMediaMg =
context.getSystemService(AppCompatActivity.MEDIA_SESSION_SERVICE)as MediaSessionManager
mComponentName =
ComponentName(context.packageName, HnNotificationListenerService::class.java.name)
mAudioMg?.registerAudioPlaybackCallback(object : AudioManager.AudioPlaybackCallback() {
override fun onPlaybackConfigChanged(configs: MutableList?) {
super.onPlaybackConfigChanged(configs)
Log.i(
"guotz",
"MusicControlManager onPlaybackConfigChanged start !! configs=${configs}"
)
//监听变化
mMediaMg?.getActiveSessions(mComponentName)?.let {
traversal(it, "MusicControlManager onPlaybackConfigChanged --->")
}
}
}, null)
//主动查询
mMediaMg?.getActiveSessions(mComponentName)?.let {
traversal(it, "MusicControlManager init --->")
}
}
private fun traversal(controllerList: List, tags: String) {
var currentTime = System.currentTimeMillis()
var musicVolume =mAudioMg?.getStreamVolume(AudioManager.STREAM_MUSIC)
for (controllerin controllerList) {
var metaData = controller.metadata
var title = metaData?.getString(MediaMetadata.METADATA_KEY_TITLE)
var artist = metaData?.getString(MediaMetadata.METADATA_KEY_ARTIST)
Log.i(
"guotz",
"$tags! isMusicActive=${mAudioMg?.isMusicActive} state=${convertStates(controller.playbackState?.state)}, title=${title}, 歌手=${artist},musicVolume=$musicVolume,packageName=【${controller.packageName}】"
)
}
}