/* * Copyright (c) Double Symmetry GmbH * Commercial use requires a license. See https://rntp.dev/pricing */ package com.doublesymmetry.trackplayer.models import android.net.Uri import androidx.media3.common.MediaMetadata import androidx.media3.common.Player /** Merges stream metadata into the current [Player] media item (see [PlayerConfig.autoUpdateMetadataFromStream]). */ internal object MetadataApplier { fun applyToCurrentMediaItem(player: Player, event: MetadataReceivedEvent): Boolean { val idx = player.currentMediaItemIndex if (idx < 0 || idx >= player.mediaItemCount) return false val existing = player.getMediaItemAt(idx) val newMeta = MediaMetadata.Builder() .populate(existing.mediaMetadata) .apply { event.title?.let { setTitle(it) } event.artist?.let { setArtist(it) } event.albumTitle?.let { setAlbumTitle(it) } event.artworkUri?.let { setArtworkUri(Uri.parse(it)) } event.genre?.let { setGenre(it) } } .build() val updated = existing.buildUpon() .setMediaMetadata(newMeta) .build() player.replaceMediaItem(idx, updated) return true } }