1

我需要有关在“推荐”行中显示“正在玩牌”的帮助。我在 Android 开发者网站上阅读了有关它的帖子,但这对我没有多大帮助。

我有一项服务可以毫无问题地传输 MP3 数据。我添加了以下代码,但没有现在玩牌...

@Override
public void onCreate() {
    Log.i(TAG, "onCreate called");

    mSession = new MediaSession(this, "MusicService");
    mSession.setCallback(new MediaSessionCallback());
    mSession.setFlags(MediaSession.FLAG_HANDLES_MEDIA_BUTTONS |
            MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS);

    mSession.setActive(true);
}


private class MediaSessionCallback extends MediaSession.Callback {
}


编辑:为元数据添加代码:

@Override
public void onCreate() {
    Log.i(TAG, "onCreate called");

    mSession = new MediaSession(this, "MusicService");
    mSession.setCallback(new MediaSessionCallback());
    mSession.setFlags(MediaSession.FLAG_HANDLES_MEDIA_BUTTONS |
            MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS);


    final MediaMetadata.Builder metadataBuilder = new MediaMetadata.Builder();

    String title = "Burak";

    metadataBuilder.putString(MediaMetadata.METADATA_KEY_DISPLAY_TITLE, title);
    metadataBuilder.putString(MediaMetadata.METADATA_KEY_DISPLAY_SUBTITLE,
            "Burak müzik");
    metadataBuilder.putString(MediaMetadata.METADATA_KEY_DISPLAY_ICON_URI,
            "http://commondatastorage.googleapis.com/android-tv/Sample%20videos/Zeitgeist/Zeitgeist%202010_%20Year%20in%20Review/card.jpg");

    // And at minimum the title and artist for legacy support
    metadataBuilder.putString(MediaMetadata.METADATA_KEY_TITLE, title);
    metadataBuilder.putString(MediaMetadata.METADATA_KEY_ARTIST, "BKD Mobile");

    mSession.setMetadata(metadataBuilder.build());

    mSession.setActive(true);


}
4

2 回答 2

2

我会说你需要通过类指定当前正在播放的 MP3 文件的元数据Metadata.Builder

MediaMetadata.Builder metadataBuilder = new MediaMetadata.Builder();
metadataBuilder.putString(MediaMetadata.METADATA_KEY_DISPLAY_TITLE,
        "Title");
metadataBuilder.putString(MediaMetadata.METADATA_KEY_DISPLAY_SUBTITLE,
        "Subtitle");
metadataBuilder.putString(MediaMetadata.METADATA_KEY_DISPLAY_ICON_URI,
        "Artwork");
mSession.setMetadata(metadataBuilder.build());
于 2015-04-29T16:25:21.010 回答
0

这可能为时已晚,无法帮助 OP,但如果有人浏览此页面,我想分享一个可能的答案。您应该确保在某个时候调用 mSession.setPlayBackState(state)。例如,尝试做这样的事情来开始:

            mediaSession.setMetadata(builder.build());
        PlaybackState state = new PlaybackState.Builder()
                .setActions(
                        PlaybackState.ACTION_PLAY | PlaybackState.ACTION_PAUSE | PlaybackState
                                .ACTION_SKIP_TO_NEXT | PlaybackState.ACTION_REWIND |
                                PlaybackState.ACTION_FAST_FORWARD)
                .setState(PlaybackState.STATE_NONE, 0, 1.0f)
                .build();
        mediaSession.setPlaybackState(state);

您需要根据需要调整操作。我的猜测是您稍后会设置状态,这就是为什么您在后续尝试返回主屏幕时注意到它工作的原因。

于 2015-12-09T08:16:45.240 回答