1692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim/*
2692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim * Copyright 2018 The Android Open Source Project
3692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim *
4692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim * Licensed under the Apache License, Version 2.0 (the "License");
5692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim * you may not use this file except in compliance with the License.
6692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim * You may obtain a copy of the License at
7692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim *
8692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim *      http://www.apache.org/licenses/LICENSE-2.0
9692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim *
10692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim * Unless required by applicable law or agreed to in writing, software
11692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim * distributed under the License is distributed on an "AS IS" BASIS,
12692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim * See the License for the specific language governing permissions and
14692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim * limitations under the License.
15692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim */
16692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim
17692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Limpackage com.android.support.mediarouter.media;
18692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim
19692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Limimport android.os.Bundle;
20692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim
21692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim/**
22692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim * Constants for specifying metadata about a media item as a {@link Bundle}.
23692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim * <p>
24692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim * This class is part of the remote playback protocol described by the
25692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim * {@link MediaControlIntent MediaControlIntent} class.
26692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim * </p><p>
27692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim * Media item metadata is described as a bundle of key/value pairs as defined
28692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim * in this class.  The documentation specifies the type of value associated
29692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim * with each key.
30692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim * </p><p>
31692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim * An application may specify additional custom metadata keys but there is no guarantee
32692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim * that they will be recognized by the destination.
33692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim * </p>
34692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim */
35692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Limpublic final class MediaItemMetadata {
36692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim    /*
37692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * Note: MediaMetadataRetriever also defines a collection of metadata keys that can be
38692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * retrieved from a content stream although the representation is somewhat different here
39692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * since we are sending the data to a remote endpoint.
40692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     */
41692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim
42692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim    private MediaItemMetadata() {
43692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim    }
44692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim
45692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim    /**
46692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * String key: Album artist name.
47692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * <p>
48692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * The value is a string suitable for display.
49692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * </p>
50692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     */
51692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim    public static final String KEY_ALBUM_ARTIST = "android.media.metadata.ALBUM_ARTIST";
52692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim
53692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim    /**
54692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * String key: Album title.
55692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * <p>
56692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * The value is a string suitable for display.
57692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * </p>
58692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     */
59692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim    public static final String KEY_ALBUM_TITLE = "android.media.metadata.ALBUM_TITLE";
60692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim
61692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim    /**
62692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * String key: Artwork Uri.
63692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * <p>
64692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * The value is a string URI for an image file associated with the media item,
65692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * such as album or cover art.
66692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * </p>
67692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     */
68692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim    public static final String KEY_ARTWORK_URI = "android.media.metadata.ARTWORK_URI";
69692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim
70692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim    /**
71692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * String key: Artist name.
72692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * <p>
73692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * The value is a string suitable for display.
74692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * </p>
75692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     */
76692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim    public static final String KEY_ARTIST = "android.media.metadata.ARTIST";
77692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim
78692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim    /**
79692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * String key: Author name.
80692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * <p>
81692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * The value is a string suitable for display.
82692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * </p>
83692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     */
84692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim    public static final String KEY_AUTHOR = "android.media.metadata.AUTHOR";
85692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim
86692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim    /**
87692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * String key: Composer name.
88692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * <p>
89692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * The value is a string suitable for display.
90692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * </p>
91692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     */
92692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim    public static final String KEY_COMPOSER = "android.media.metadata.COMPOSER";
93692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim
94692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim    /**
95692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * String key: Track title.
96692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * <p>
97692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * The value is a string suitable for display.
98692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * </p>
99692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     */
100692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim    public static final String KEY_TITLE = "android.media.metadata.TITLE";
101692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim
102692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim    /**
103692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * Integer key: Year of publication.
104692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * <p>
105692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * The value is an integer year number.
106692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * </p>
107692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     */
108692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim    public static final String KEY_YEAR = "android.media.metadata.YEAR";
109692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim
110692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim    /**
111692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * Integer key: Track number (such as a track on a CD).
112692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * <p>
113692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * The value is a one-based integer track number.
114692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * </p>
115692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     */
116692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim    public static final String KEY_TRACK_NUMBER = "android.media.metadata.TRACK_NUMBER";
117692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim
118692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim    /**
119692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * Integer key: Disc number within a collection.
120692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * <p>
121692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * The value is a one-based integer disc number.
122692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * </p>
123692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     */
124692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim    public static final String KEY_DISC_NUMBER = "android.media.metadata.DISC_NUMBER";
125692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim
126692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim    /**
127692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * Long key: Item playback duration in milliseconds.
128692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * <p>
129692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * The value is a <code>long</code> number of milliseconds.
130692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * </p><p>
131692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * The duration metadata is only a hint to enable a remote media player to
132692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * guess the duration of the content before it actually opens the media stream.
133692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * The remote media player should still determine the actual content duration from
134692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * the media stream itself independent of the value that may be specified by this key.
135692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     * </p>
136692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim     */
137692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim    public static final String KEY_DURATION = "android.media.metadata.DURATION";
138692a547730bbc95ad277d5214ef3d786ce1e499fSungsoo Lim}
139