Example usage for android.support.v4.media MediaMetadataCompat METADATA_KEY_DURATION

List of usage examples for android.support.v4.media MediaMetadataCompat METADATA_KEY_DURATION

Introduction

In this page you can find the example usage for android.support.v4.media MediaMetadataCompat METADATA_KEY_DURATION.

Prototype

String METADATA_KEY_DURATION

To view the source code for android.support.v4.media MediaMetadataCompat METADATA_KEY_DURATION.

Click Source Link

Document

The duration of the media in ms.

Usage

From source file:com.phearom.um.model.RemoteJSONSource.java

private MediaMetadataCompat buildFromJSON(JSONObject json, String basePath) throws JSONException {
    String title = json.getString(JSON_TITLE);
    String album = json.getString(JSON_ALBUM);
    String artist = json.getString(JSON_ARTIST);
    String genre = json.getString(JSON_GENRE);
    String source = json.getString(JSON_SOURCE);
    String iconUrl = json.getString(JSON_IMAGE);
    //        try {
    //            MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever();
    //            metaRetriever.setDataSource(source);
    //            String time = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
    ///*from  w w w .ja v  a2s  . co  m*/
    //            Log.i("Duration",time);
    //
    //            duration = Long.valueOf(time);
    //        } catch (Exception e) {
    //            e.printStackTrace();
    //        }
    LogHelper.d(TAG, "Found music track: ", json);
    // Media is stored relative to JSON file
    if (!source.startsWith("http")) {
        source = basePath + source;
    }
    if (!iconUrl.startsWith("http")) {
        iconUrl = basePath + iconUrl;
    }
    String id = String.valueOf(source.hashCode());

    //noinspection ResourceType
    return new MediaMetadataCompat.Builder().putString(MediaMetadataCompat.METADATA_KEY_MEDIA_ID, id)
            .putString(MusicProviderSource.CUSTOM_METADATA_TRACK_SOURCE, source)
            .putString(MediaMetadataCompat.METADATA_KEY_ALBUM, album)
            .putString(MediaMetadataCompat.METADATA_KEY_ARTIST, artist)
            .putLong(MediaMetadataCompat.METADATA_KEY_DURATION, duration)
            .putString(MediaMetadataCompat.METADATA_KEY_GENRE, genre)
            .putString(MediaMetadataCompat.METADATA_KEY_ALBUM_ART_URI, iconUrl)
            .putString(MediaMetadataCompat.METADATA_KEY_TITLE, title).build();
}

From source file:com.classiqo.nativeandroid_32bitz.model.RemoteJSONSource.java

private MediaMetadataCompat buildFromJSON(JSONObject json/*, String basePath*/) throws JSONException {
    String title = json.getString(JSON_TITLE);
    String album = json.getString(JSON_ALBUM);
    String artist = json.getString(JSON_ARTIST);
    String genre = json.getString(JSON_GENRE);
    String source = json.getString(JSON_SOURCE);
    String iconUrl = json.getString(JSON_IMAGE);
    int trackNumber = json.getInt(JSON_TRACK_NUMBER);
    int totalTrackCount = json.getInt(JSON_TOTAL_TRACK_COUNT);
    int duration = json.getInt(JSON_DURATION) * 1000;
    String site = json.getString(JSON_SITE);

    LogHelper.d(TAG, "Found music track", json);

    if (!source.startsWith("http")) {
        //            source = basePath + source;
        source = site + JSON_S3_BUCKET + "/" + JSON_MUSIC + "/" + artist + "/" + source;
    }//from  w  w w . j  ava  2s. c  om
    if (!iconUrl.startsWith("http")) {
        //            source = basePath + iconUrl;
        iconUrl = site + JSON_S3_BUCKET + "/" + JSON_MUSIC + "/" + artist + "/" + album + ".jpg";
    }

    LogHelper.i(TAG, source);
    LogHelper.i(TAG, iconUrl);
    String id = String.valueOf(source.hashCode());

    //noinspection ResourceType
    return new MediaMetadataCompat.Builder().putString(MediaMetadataCompat.METADATA_KEY_MEDIA_ID, id)
            .putString(MusicProviderSource.CUSTOM_METADATA_TRACK_SOURCE, source)
            .putString(MediaMetadataCompat.METADATA_KEY_ALBUM, album)
            .putString(MediaMetadataCompat.METADATA_KEY_ARTIST, artist)
            .putLong(MediaMetadataCompat.METADATA_KEY_DURATION, duration)
            .putString(MediaMetadataCompat.METADATA_KEY_GENRE, genre)
            .putString(MediaMetadataCompat.METADATA_KEY_ALBUM_ART_URI, iconUrl)
            .putString(MediaMetadataCompat.METADATA_KEY_TITLE, title)
            .putLong(MediaMetadataCompat.METADATA_KEY_TRACK_NUMBER, trackNumber)
            .putLong(MediaMetadataCompat.METADATA_KEY_NUM_TRACKS, totalTrackCount).build();
}

From source file:com.example.android.uamp.model.RemoteJSONSource.java

private MediaMetadataCompat buildFromJSON(JSONObject json, String basePath) throws JSONException {
    String title = json.getString(JSON_TITLE);
    String album = json.getString(JSON_ALBUM);
    String artist = json.getString(JSON_ARTIST);
    String genre = json.getString(JSON_GENRE);
    String source = json.getString(JSON_SOURCE);
    String iconUrl = json.getString(JSON_IMAGE);
    int trackNumber = json.getInt(JSON_TRACK_NUMBER);
    int totalTrackCount = json.getInt(JSON_TOTAL_TRACK_COUNT);
    int duration = json.getInt(JSON_DURATION) * 1000; // ms

    LogHelper.d(TAG, "Found music track: ", json);

    // Media is stored relative to JSON file
    if (!source.startsWith("http")) {
        source = basePath + source;/*from w  w  w .  j a v  a2 s. c  o  m*/
    }
    if (!iconUrl.startsWith("http")) {
        iconUrl = basePath + iconUrl;
    }
    // Since we don't have a unique ID in the server, we fake one using the hashcode of
    // the music source. In a real world app, this could come from the server.
    String id = String.valueOf(source.hashCode());

    // Adding the music source to the MediaMetadata (and consequently using it in the
    // mediaSession.setMetadata) is not a good idea for a real world music app, because
    // the session metadata can be accessed by notification listeners. This is done in this
    // sample for convenience only.
    //noinspection ResourceType
    return new MediaMetadataCompat.Builder().putString(MediaMetadataCompat.METADATA_KEY_MEDIA_ID, id)
            .putString(MusicProviderSource.CUSTOM_METADATA_TRACK_SOURCE, source)
            .putString(MediaMetadataCompat.METADATA_KEY_ALBUM, album)
            .putString(MediaMetadataCompat.METADATA_KEY_ARTIST, artist)
            .putLong(MediaMetadataCompat.METADATA_KEY_DURATION, duration)
            .putString(MediaMetadataCompat.METADATA_KEY_GENRE, genre)
            .putString(MediaMetadataCompat.METADATA_KEY_ALBUM_ART_URI, iconUrl)
            .putString(MediaMetadataCompat.METADATA_KEY_TITLE, title)
            .putLong(MediaMetadataCompat.METADATA_KEY_TRACK_NUMBER, trackNumber)
            .putLong(MediaMetadataCompat.METADATA_KEY_NUM_TRACKS, totalTrackCount).build();
}

From source file:dk.glutter.android.dansker.uamp.model.RemoteJSONSource.java

private MediaMetadataCompat buildFromJSON(JSONObject json, String basePath) throws JSONException {
    String title = json.getString(JSON_TITLE);
    String album = json.getString(JSON_ALBUM);
    String artist = json.getString(JSON_ARTIST);
    String genre = json.getString(JSON_GENRE);
    String source = json.getString(JSON_SOURCE);
    String iconUrl = json.getString(JSON_IMAGE);
    int trackNumber = json.getInt(JSON_TRACK_NUMBER);
    int totalTrackCount = json.getInt(JSON_TOTAL_TRACK_COUNT);
    int duration = json.getInt(JSON_DURATION) * 1000; // ms

    LogHelper.d(TAG, "Found music track: ", json);

    // Media is stored relative to JSON file
    if (!source.startsWith("http")) {
        source = basePath + source;/* ww w.  j a  va  2  s .c  om*/
    }
    if (!iconUrl.startsWith("http")) {
        iconUrl = "http://denstoredanske.dk/@api/deki/files/70689/=dannebrog.jpg";
    }
    // Since we don't have a unique ID in the server, we fake one using the hashcode of
    // the music source. In a real world app, this could come from the server.
    String id = String.valueOf(source.hashCode());

    // Adding the music source to the MediaMetadata (and consequently using it in the
    // mediaSession.setMetadata) is not a good idea for a real world music app, because
    // the session metadata can be accessed by notification listeners. This is done in this
    // sample for convenience only.
    //noinspection ResourceType
    return new MediaMetadataCompat.Builder().putString(MediaMetadataCompat.METADATA_KEY_MEDIA_ID, id)
            .putString(MusicProviderSource.CUSTOM_METADATA_TRACK_SOURCE, source)
            .putString(MediaMetadataCompat.METADATA_KEY_ALBUM, album)
            .putString(MediaMetadataCompat.METADATA_KEY_ARTIST, artist)
            .putLong(MediaMetadataCompat.METADATA_KEY_DURATION, duration)
            .putString(MediaMetadataCompat.METADATA_KEY_GENRE, genre)
            .putString(MediaMetadataCompat.METADATA_KEY_ALBUM_ART_URI, iconUrl)
            .putString(MediaMetadataCompat.METADATA_KEY_TITLE, title)
            .putLong(MediaMetadataCompat.METADATA_KEY_TRACK_NUMBER, trackNumber)
            .putLong(MediaMetadataCompat.METADATA_KEY_NUM_TRACKS, totalTrackCount).build();
}

From source file:com.example.hp.smartstor.CloudMusicManager.uamp.model.RemoteJSONSource.java

private MediaMetadataCompat buildFromJSON(JSONObject json, String basePath) throws JSONException {
    String title = json.getString(JSON_TITLE);
    String alb = json.getString(JSON_ALBUM);
    alb = alb.replace(" ", "%20");
    String album = alb;/* w w w.j a  v  a  2 s. c  om*/
    Log.i("album after edit", alb);
    String artist = json.getString(JSON_ARTIST);
    String genre = json.getString(JSON_GENRE);
    String src = json.getString(JSON_SOURCE);
    src = src.replace(" ", "%20");
    String source = src;
    String iconUrl = json.getString(JSON_IMAGE);
    int trackNumber = json.getInt(JSON_TRACK_NUMBER);
    int totalTrackCount = json.getInt(JSON_TOTAL_TRACK_COUNT);
    int duration = json.getInt(JSON_DURATION) * 1000; // ms

    LogHelper.d(TAG, "Found music track: ", json);

    // Media is stored relative to JSON file
    if (!source.startsWith("http")) {
        source = basePath + source;
    }
    if (!iconUrl.startsWith("http")) {
        iconUrl = basePath + iconUrl;
    }
    // Since we don't have a unique ID in the server, we fake one using the hashcode of
    // the music source. In a real world app, this could come from the server.
    String id = String.valueOf(source.hashCode());

    // Adding the music source to the MediaMetadata (and consequently using it in the
    // mediaSession.setMetadata) is not a good idea for a real world music app, because
    // the session metadata can be accessed by notification listeners. This is done in this
    // sample for convenience only.
    //noinspection ResourceType
    return new MediaMetadataCompat.Builder().putString(MediaMetadataCompat.METADATA_KEY_MEDIA_ID, id)
            .putString(MusicProviderSource.CUSTOM_METADATA_TRACK_SOURCE, source)
            .putString(MediaMetadataCompat.METADATA_KEY_ALBUM, album)
            .putString(MediaMetadataCompat.METADATA_KEY_ARTIST, artist)
            .putLong(MediaMetadataCompat.METADATA_KEY_DURATION, duration)
            .putString(MediaMetadataCompat.METADATA_KEY_GENRE, genre)
            .putString(MediaMetadataCompat.METADATA_KEY_ALBUM_ART_URI, iconUrl)
            .putString(MediaMetadataCompat.METADATA_KEY_TITLE, title)
            .putLong(MediaMetadataCompat.METADATA_KEY_TRACK_NUMBER, trackNumber)
            .putLong(MediaMetadataCompat.METADATA_KEY_NUM_TRACKS, totalTrackCount).build();
}

From source file:com.scooter1556.sms.android.utils.MediaUtils.java

public static MediaMetadataCompat getMediaMetadataCompatFromMediaElement(MediaElement mediaElement) {
    if (mediaElement == null) {
        return null;
    }/*from w ww.ja  va  2 s  .c o  m*/

    // Update session metadata
    MediaMetadataCompat.Builder metadata = new MediaMetadataCompat.Builder();
    metadata.putString(MediaMetadataCompat.METADATA_KEY_MEDIA_ID, mediaElement.getID().toString());

    if (mediaElement.getArtist() != null) {
        metadata.putString(MediaMetadataCompat.METADATA_KEY_ARTIST, mediaElement.getArtist());
        metadata.putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_SUBTITLE, mediaElement.getArtist());
    }

    if (mediaElement.getAlbum() != null) {
        metadata.putString(MediaMetadataCompat.METADATA_KEY_ALBUM, mediaElement.getAlbum());
        metadata.putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_DESCRIPTION, mediaElement.getAlbum());
    }

    if (mediaElement.getTitle() != null) {
        metadata.putString(MediaMetadataCompat.METADATA_KEY_TITLE, mediaElement.getTitle());
        metadata.putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE, mediaElement.getTitle());
    }

    if (mediaElement.getDuration() != null) {
        metadata.putLong(MediaMetadataCompat.METADATA_KEY_DURATION,
                Double.valueOf(mediaElement.getDuration() * 1000.0).longValue());
    }

    if (mediaElement.getYear() != null) {
        metadata.putLong(MediaMetadataCompat.METADATA_KEY_YEAR, mediaElement.getYear());
    }

    if (mediaElement.getGenre() != null) {
        metadata.putString(MediaMetadataCompat.METADATA_KEY_GENRE, mediaElement.getGenre());
    }

    if (mediaElement.getTrackNumber() != null) {
        metadata.putLong(MediaMetadataCompat.METADATA_KEY_TRACK_NUMBER, mediaElement.getTrackNumber());
    }

    if (mediaElement.getDiscNumber() != null) {
        metadata.putLong(MediaMetadataCompat.METADATA_KEY_DISC_NUMBER, mediaElement.getDiscNumber());
    }

    if (mediaElement.getAlbumArtist() != null) {
        metadata.putString(MediaMetadataCompat.METADATA_KEY_ALBUM_ARTIST, mediaElement.getAlbumArtist());
    }

    if (RESTService.getInstance().getAddress() != null) {
        metadata.putString(MediaMetadataCompat.METADATA_KEY_ALBUM_ART_URI,
                RESTService.getInstance().getAddress() + "/image/" + mediaElement.getID() + "/cover");
        metadata.putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_ICON_URI,
                RESTService.getInstance().getAddress() + "/image/" + mediaElement.getID() + "/cover");
        metadata.putString(MediaMetadataCompat.METADATA_KEY_ART_URI,
                RESTService.getInstance().getAddress() + "/image/" + mediaElement.getID() + "/fanart");
    }

    return metadata.build();
}

From source file:android.support.v17.leanback.media.MediaControllerGlue.java

@Override
public int getMediaDuration() {
    return (int) mMediaController.getMetadata().getLong(MediaMetadataCompat.METADATA_KEY_DURATION);
}

From source file:com.murati.oszk.audiobook.model.RemoteJSONSource.java

protected MediaMetadataCompat buildFromJSON(JSONObject json, String basePath) throws JSONException {
    String writer = json.getString(JSON_WRITER);
    String ebook = json.getString(JSON_EBOOK_TITLE);

    String title = json.getString(JSON_TRACK_TITLE);
    int trackNumber = json.getInt(JSON_TRACK_NUMBER);

    String genre = json.getString(JSON_GENRE);
    String source = json.getString(JSON_SOURCE);
    String iconUrl = json.getString(JSON_IMAGE);

    int totalTrackCount = json.getInt(JSON_TOTAL_TRACK_COUNT);
    int duration = json.getInt(JSON_DURATION) * 1000; // ms

    LogHelper.d(TAG, "Loaded tracks: ", json);

    // Media is stored relative to JSON file
    if (!source.startsWith("http")) {
        source = basePath + source;/*  w w w.j a  v  a  2s.  c  om*/
    }
    if (!iconUrl.startsWith("http")) {
        iconUrl = basePath + iconUrl;
    }
    // Since we don't have a unique ID in the server, we fake one using the hashcode of
    // the music source. In a real world app, this could come from the server.
    String id = String.valueOf(source.hashCode());

    // Adding the music source to the MediaMetadata (and consequently using it in the
    // mediaSession.setMetadata) is not a good idea for a real world music app, because
    // the session metadata can be accessed by notification listeners. This is done in this
    // sample for convenience only.
    //noinspection ResourceType

    // Skip faulty ones
    if (ebook == null || title == null || ebook.trim().length() * title.trim().length() == 0) {
        LogHelper.e(TAG, "Error processing JSON: " + json.toString());
        return null;
    }

    // Fix writer
    if (writer == null || writer.trim().length() == 0) {
        if (title.contains(":")) {
            writer = title.split(":")[0];
        } else {
            writer = "Ismeretlen szerz"; //TODO: resource
        }
    }

    //Fix title TODO: Strip from API
    ebook = ebook.replace(""", "");
    ebook = ebook.replace("\"", "");
    title = title.replace(""", "\"");

    return new MediaMetadataCompat.Builder().putString(MediaMetadataCompat.METADATA_KEY_MEDIA_ID, id)
            .putString(CUSTOM_METADATA_TRACK_SOURCE, source)
            .putString(MediaMetadataCompat.METADATA_KEY_ALBUM, ebook)
            .putString(MediaMetadataCompat.METADATA_KEY_WRITER, writer)
            .putLong(MediaMetadataCompat.METADATA_KEY_DURATION, duration)
            .putString(MediaMetadataCompat.METADATA_KEY_GENRE, genre)
            .putString(MediaMetadataCompat.METADATA_KEY_ALBUM_ART_URI, iconUrl)
            .putString(MediaMetadataCompat.METADATA_KEY_TITLE, title)
            .putLong(MediaMetadataCompat.METADATA_KEY_TRACK_NUMBER, trackNumber)
            .putLong(MediaMetadataCompat.METADATA_KEY_NUM_TRACKS, totalTrackCount).build();
}

From source file:nuclei.media.MediaPlayerController.java

@Override
public int getDuration() {
    if (isEquals()) {
        MediaMetadataCompat mediaMetadataCompat = mMediaControls.getMetadata();
        if (mediaMetadataCompat != null) {
            long duration = mediaMetadataCompat.getLong(MediaMetadataCompat.METADATA_KEY_DURATION);
            if (duration > 0)
                return (int) duration;
        }/* w  w w.  ja v a 2 s.c  o  m*/
    }
    return -1;
}

From source file:com.whitecloud.ron.musicplayer.model.MusicProvider.java

public ArrayList<Song> getTopTracks(String spotifyId) {
    try {/*w w w. j  a  v  a  2s. c o m*/
        if (mCurrentState == State.NON_INITIALIZED) {
            mCurrentState = State.INITIALIZING;
            SpotifyApi api = new SpotifyApi();
            SpotifyService spotify = api.getService();
            Tracks tracks = spotify.getArtistTopTrack(spotifyId, "CA");
            List<Track> trackList = tracks.tracks;

            if (trackList != null) {
                for (int j = 0; j < trackList.size(); j++) {
                    Track track = trackList.get(j);
                    MediaMetadataCompat item = new MediaMetadataCompat.Builder()
                            .putString(MediaMetadataCompat.METADATA_KEY_MEDIA_ID, track.id)
                            //                                 .putString(CUSTOM_METADATA_TRACK_SOURCE, track.preview_url)
                            .putString(MediaMetadataCompat.METADATA_KEY_ALBUM, track.album.name)
                            .putString(MediaMetadataCompat.METADATA_KEY_ARTIST, track.artists.get(0).name)
                            .putLong(MediaMetadataCompat.METADATA_KEY_DURATION, track.duration_ms)
                            .putString(MediaMetadataCompat.METADATA_KEY_GENRE, track.type)
                            .putString(MediaMetadataCompat.METADATA_KEY_ALBUM_ART_URI,
                                    track.album.images.get(0).url)
                            .putString(MediaMetadataCompat.METADATA_KEY_TITLE, track.name)
                            .putLong(MediaMetadataCompat.METADATA_KEY_TRACK_NUMBER, track.track_number)
                            .putLong(MediaMetadataCompat.METADATA_KEY_NUM_TRACKS, trackList.size()).build();
                    String musicId = item.getString(MediaMetadataCompat.METADATA_KEY_MEDIA_ID);
                    mMusicListById.put(musicId, new MutableMediaMetadata(musicId, item));
                    mMusicSourceList.put(musicId, track.preview_url);
                    mSongs.add(new Song(track.preview_url, track.name, track.album.name,
                            track.album.images.get(0).url, track.album.images.get(1).url));
                }
                buildListsByGenre();
            }
            mCurrentState = State.INITIALIZED;
        }
    } catch (RetrofitError e) {
        LogHelper.e(TAG, e, "Could not retrieve music list");
    } finally {
        if (mCurrentState != State.INITIALIZED) {
            // Something bad happened, so we reset state to NON_INITIALIZED to allow
            // retries (eg if the network connection is temporary unavailable)
            mCurrentState = State.NON_INITIALIZED;
        }

        return (ArrayList) mSongs;

    }
}