对不起我的毛孔英语。
我做一个广播播放器。我可以获得当前名称和标题,因此每 15 秒我就会阅读新信息并将其显示在主要活动和通知中。当我将手机连接到汽车时,第一个艺术家会很好地显示出来。第二次来临时,我的手机上的名称是正确的,但不会在汽车屏幕上更新。每次停止连接并重新启动时,名称都是正确的,但下一首歌来临时不会更新。
我的类实现 AudioManager。
我使用此代码更新元数据:
mediaSession 是一个 MediaSessionCompat
mediaSession.setMetadata(new MediaMetadataCompat.Builder()
.putString(MediaMetadataCompat.METADATA_KEY_ARTIST, strArtist)
.putString(MediaMetadataCompat.METADATA_KEY_ALBUM, strAl)
.putString(MediaMetadataCompat.METADATA_KEY_TITLE, strTitle)
.build());
我认为 mediaSession 的更新不会发送到蓝牙设备。
是否有强制同步的命令?
谢谢你的帮助。
JC
您必须在每次跟踪信息更改时调用 MediaSession.setMetadata (MediaMetadataCompat metadata)。https://developer.android.com/guide/topics/media-apps/media-apps-overview#mediasession-and-mediacontroller要获取元数据更改的更新,您需要注册 MediaController.Callback 以调用 MediaControllerCompat.registerCallback (ControllerCallback)。因此,当您为 MediaSession>设置新的元
每次跟踪信息更改时,您都必须调用 MediaSession.setMetadata (MediaMetadataCompat metadata)。(在 mediasession 中调用它回调您 onPlay / onPause / onStop 从MediaSessionCompat.Callback)https://developer.android.com/guide/topics/media-apps/audio-app/mediasession-callbacks
我面临这个问题。问题有点。在我的情况下,我没有设置音乐的持续时间。而且总是只会到 0。经过对 google 和 stack 溢出本身的大量研究。我无法获得解决方案。但最后,我找到了它,现在它工作正常。如果你们中的一个也面临同样的问题,请通过以下解决方案。
private fun initMediaSessionMetadata(currentTrack: MusicModel?) {
var duration =
(currentTrack?.duration?.toLong() ?: mMediaPlayer?.duration?.toLong()) ?: 1000
duration = if (duration <= 0) 1000 else duration
val info = MediaMetadataCompat.Builder()
.putString(MediaMetadata.METADATA_KEY_MEDIA_ID, currentTrack?.id.toString())
.putString(MediaMetadata.METADATA_KEY_TITLE, currentTrack?.name)
.putString(MediaMetadata.METADATA_KEY_ARTIST, currentTrack?.artists)
.putString(MediaMetadata.METADATA_KEY_ALBUM_ART_URI, currentTrack?.thumbnail)
.putLong(MediaMetadata.METADATA_KEY_DURATION, duration)
val metadata = info.build()
mediaSession?.setMetadata(metadata)
}
我希望你现在能够破解它。以下行只是我的主要问题duration = if (duration <= 0) 1000 else duration
在此之后,我的代码工作得很好。如果您有任何查询,您可以通过评论连接我。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(31条)