如何从 Activity 调用 mediaBrowserService 中的 getDuration?

How do I call getDuration in mediaBrowserService from an Activity?

早些时候,使用 boundService 可以很容易地实现这一点。但是使用 MediaBrowserService 我无法在外部访问 getDuration,没有它我无法更新搜索栏。

在 MediaBrowserService 上,当您更新 MediaMetadata 时,添加当前媒体的持续时间。

MediaMetadataCompat.Builder metadataBuilder = new MediaMetadataCompat.Builder();
metadataBuilder.putLong(MediaMetadataCompat.METADATA_KEY_DURATION, track.durationMs);

在客户端,您可以使用 MediaBrowserCompat 连接到 MediaBrowserService 并检索 MediaSessionCompat.Token。使用令牌,您可以从中获取包含有关当前媒体信息的 MediaMetadataCompat 的 MediaSessionController。

int duration = (int) metadata.getLong(MediaMetadataCompat.METADATA_KEY_DURATION);

官方documentation有一个好的解释这是如何工作的