一旦播放器启动,我就使用它来设置元数据。这很好用。
mediaSession.setMetadata(
MediaMetadataCompat.Builder()
.putString(MediaMetadata.METADATA_KEY_ARTIST, Variables.currentArtist)
.putString(MediaMetadata.METADATA_KEY_TITLE, Variables.currentSong)
.build()
)
当流开始播放时,曲目信息会显示在连接的蓝牙设备的屏幕上,无论它是 Echo Show 还是我汽车的信息娱乐系统。但是,一旦播放下一首歌曲,它就不会更新。我必须停止/启动流才能更新。如何在无需停止/开始播放的情况下将更新推送到元数据?我每 5 秒使用一次处理程序调用此调用:
updateMetadata()
调用此函数:
private fun updateMetadata() {
val largeIcon =
BitmapFactory.decodeResource(resources, com.rustfm.rustfm.R.drawable.album_art)
mediaSession.setMetadata(
MediaMetadataCompat.Builder()
.putString(MediaMetadataCompat.METADATA_KEY_ARTIST, Variables.currentArtist)
.putString(MediaMetadataCompat.METADATA_KEY_TITLE, Variables.currentSong)
.putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_DESCRIPTION, "Test Description")
.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, largeIcon)
.build()
)
}
每次我调用 updateMetadata() 函数时,我的回调类都会被触发,但我不确定从这里去哪里。任何帮助或指导表示赞赏!
这是我的回调班:
private inner class MediaControllerCallback : MediaControllerCompat.Callback() {
override fun onMetadataChanged(metadata: MediaMetadataCompat?) {
// Where to go from here?
Log.d("Event Metadata", "Fired")
}
}