1

おすすめの行に Now Playing カードを表示する方法について教えてください。Android 開発者サイトでそれに関する投稿を読みましたが、あまり役に立ちませんでした。

問題なく MP3 データをストリーミングするサービスがあります。以下のコードを追加しましたが、Now Playing Card がありません...

@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

Metadata.Builderクラスを介して、現在再生中の MP3 ファイルのメタデータを指定する必要があると思います。

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 に答える