Java Can';无法获取媒体元数据兼容字符串

Java Can';无法获取媒体元数据兼容字符串,java,android,kotlin,Java,Android,Kotlin,我正在创建一个kotlin应用程序。我对mediaMetadataCompat有问题。也许我得把数据放在临时演员那里?我把数据放在这里 audios = allAudios!!.map { audio -> MediaMetadataCompat.Builder() .putString(METADATA_KEY_WRITER, audio.writer._id)

我正在创建一个kotlin应用程序。我对mediaMetadataCompat有问题。也许我得把数据放在临时演员那里?我把数据放在这里

 audios = allAudios!!.map { audio ->
                    MediaMetadataCompat.Builder()
                        .putString(METADATA_KEY_WRITER, audio.writer._id)
                        .putString(METADATA_KEY_ARTIST, audio.writer.name)
                        .putString(METADATA_KEY_DISPLAY_SUBTITLE, audio.writer.name)
                        .putString(METADATA_KEY_MEDIA_ID, audio._id)
                        .putString(METADATA_KEY_TITLE, audio.title)
                        .putString(METADATA_KEY_DISPLAY_TITLE, audio.title)
                        .putString(METADATA_KEY_DISPLAY_ICON_URI, audio.writer.image)
                        .putString(METADATA_KEY_DATE, audio.createdAt)
                        .putString(METADATA_KEY_MEDIA_URI, audio.filePath)
                        .putString(METADATA_KEY_DISPLAY_DESCRIPTION, audio.description)
                        .build()
                }
fun MediaMetadataCompat.toAudio(): Audio? {
    return let {
        Audio(
            _id = it.description.mediaId ?: "",
            title = it.description.title.toString(),
            filePath = it.description.mediaUri.toString(),
            description = it.description.description.toString(),
            writer = User(
                _id = it.description.extras?.getString("writerId").toString(),
                name = it.description.subtitle.toString(),
                image = it.description.iconUri.toString()
            ),
            tags = listOf("Shit"),
            listened = 1,
            language = "en",
            isForKids = false,
            duration = 70,
            createdAt = "2020:01:01"
        )
    }
}
像这样得到它

 audios = allAudios!!.map { audio ->
                    MediaMetadataCompat.Builder()
                        .putString(METADATA_KEY_WRITER, audio.writer._id)
                        .putString(METADATA_KEY_ARTIST, audio.writer.name)
                        .putString(METADATA_KEY_DISPLAY_SUBTITLE, audio.writer.name)
                        .putString(METADATA_KEY_MEDIA_ID, audio._id)
                        .putString(METADATA_KEY_TITLE, audio.title)
                        .putString(METADATA_KEY_DISPLAY_TITLE, audio.title)
                        .putString(METADATA_KEY_DISPLAY_ICON_URI, audio.writer.image)
                        .putString(METADATA_KEY_DATE, audio.createdAt)
                        .putString(METADATA_KEY_MEDIA_URI, audio.filePath)
                        .putString(METADATA_KEY_DISPLAY_DESCRIPTION, audio.description)
                        .build()
                }
fun MediaMetadataCompat.toAudio(): Audio? {
    return let {
        Audio(
            _id = it.description.mediaId ?: "",
            title = it.description.title.toString(),
            filePath = it.description.mediaUri.toString(),
            description = it.description.description.toString(),
            writer = User(
                _id = it.description.extras?.getString("writerId").toString(),
                name = it.description.subtitle.toString(),
                image = it.description.iconUri.toString()
            ),
            tags = listOf("Shit"),
            listened = 1,
            language = "en",
            isForKids = false,
            duration = 70,
            createdAt = "2020:01:01"
        )
    }
}

它只提供我的标题、图标uri、媒体uri和媒体id,共享我代码的一小部分:

下面是MediaMetaDataCompat的构建对象。我在那个里添加了一些数据,并在应用程序的不同部分使用过

 var media = MediaMetadataCompat.Builder()
        .putString(MediaMetadataCompat.METADATA_KEY_MEDIA_ID, data.id.toString())
        .putString(MediaMetadataCompat.METADATA_KEY_ARTIST, data.artist_name)
        .putString(MediaMetadataCompat.METADATA_KEY_TITLE, data.title)
        .putString(MediaMetadataCompat.METADATA_KEY_MEDIA_URI, data.audio_path)
        .putString(MediaMetadataCompat.METADATA_KEY_DATE, data.track_year)
        .putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_ICON_URI, data.image_path)
        .putLong(MediaMetadataCompat.METADATA_KEY_DURATION, data.duration.toLong())
        .build()
mediaItem是MediaMetadataCompat的对象,这就是我获取添加到该对象的字段值的方式

    mediaItem is object of MediaMetadataCompat

    var artist =  mediaItem.bundle.getString(MediaMetadataCompat.METADATA_KEY_ARTIST)!!
    var title =  mediaItem.bundle.getString(MediaMetadataCompat.METADATA_KEY_TITLE)!!
    var duration = mediaItem.bundle.getLong(MediaMetadataCompat.METADATA_KEY_DURATION)!!
    var icon = mediaItem.bundle.getString(MediaMetadataCompat.METADATA_KEY_DISPLAY_ICON_URI)!!

非常感谢你。我刚到科特林,所以对我来说有点困难。欢迎光临,祝你好运