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.reallynourl.nourl.fmpfoldermusicplayer.ui.notifications.MediaNotification.java

private static void updateMediaSession(MediaSessionCompat mediaSession) {
    ExtendedFile currentFile = MediaManager.getInstance().getCurrentFile();
    if (currentFile != null) {
        long validActions = PlaybackStateCompat.ACTION_STOP;
        if (MediaManager.getInstance().canPlay()) {
            validActions |= PlaybackStateCompat.ACTION_PLAY | PlaybackStateCompat.ACTION_PAUSE;
        }//from  w  w  w .java  2s  .c  om
        if (MediaManager.getInstance().hasNext()) {
            validActions |= PlaybackStateCompat.ACTION_SKIP_TO_NEXT;
        }
        if (MediaManager.getInstance().hasPrevious()) {
            validActions |= PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS;
        }
        int playState = MediaManager.getInstance().isPlaying() ? PlaybackStateCompat.STATE_PLAYING
                : PlaybackStateCompat.STATE_PAUSED;
        mediaSession.setMetadata(new MediaMetadataCompat.Builder()
                .putString(MediaMetadataCompat.METADATA_KEY_ALBUM, currentFile.getParentFile().getName())
                .putString(MediaMetadataCompat.METADATA_KEY_TITLE, currentFile.getNameWithoutExtension())
                .putLong(MediaMetadataCompat.METADATA_KEY_DURATION, MediaManager.getInstance().getDuration())
                .putLong(MediaMetadataCompat.METADATA_KEY_TRACK_NUMBER,
                        MediaManager.getInstance().getPlaylist().getCurrentIndex() + 1)
                .putLong(MediaMetadataCompat.METADATA_KEY_NUM_TRACKS,
                        MediaManager.getInstance().getPlaylist().size())
                //.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, bitmap)
                .build());
        mediaSession.setPlaybackState(new PlaybackStateCompat.Builder()
                .setState(playState, MediaManager.getInstance().getPosition(), 1.0f).setActions(validActions)
                .build());
    } else {
        mediaSession.setActive(false);
    }
}

From source file:com.livemasjid.livemasjidandroid.model.RemoteJSONSource.java

private MediaMetadataCompat buildFromJSON(JSONObject json, String basePath, int totalTracks, int trackNo,
        ArrayList<String> live) throws JSONException {
    try {/*w  w w . j  a v a  2 s . com*/
        String title = json.getString(JSON_STREAMNAME);
        String album = json.getString(JSON_STREAMNAME);
        String artist = json.getString(JSON_STREAMDESC);
        String genre = json.getString(JSON_GENRE).replaceAll("/", "-");
        String listenURL = json.getString(JSON_STREAMURL);
        String id = json.getString(JSON_MOUNTNAME);
        String iconUrl = "http://livemasjid.com/images/MasjidLogo.png";//json.getString(JSON_IMAGE);
        if (genre.contains("Aalim")) {
            iconUrl = "http://livemasjid.com/images/AalimLogo.png";
        } else if (genre.contains("Institution")) {
            iconUrl = "http://livemasjid.com/images/InstitutionLogo.png";
        }
        int trackNumber = trackNo;//json.getInt(JSON_TRACK_NUMBER);
        int totalTrackCount = totalTracks;//json.getInt(JSON_TOTAL_TRACK_COUNT);
        int duration = 10000000;//json.getInt(JSON_DURATION) * 1000; // ms

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

        LogHelper.d(TAG, id);

        // Media is stored relative to JSON file
        if (!listenURL.startsWith("http")) {
            listenURL = "http://" + listenURL;
        }

        if (!live.contains(id)) {
            genre = "Offline";
            title = "Last recording: " + title;
            listenURL = listenURL.replace(":8000", "/download/mp3") + "/latest.mp3";
            //listenURL = listenURL.replace(":8000/","/download/mp3/dir2cast.php?dir=");
        }
        //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 listenURL. In a real world app, this could come from the server.
        //String id = String.valueOf(listenURL.hashCode());

        // Adding the music listenURL 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, listenURL)
                .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();
    } catch (JSONException e) {
        LogHelper.e(TAG, e, "Could not retrieve required track info");
        return null;
    }
}

From source file:nuclei.media.MediaInterface.java

void onConnected() {
    try {//  w  w  w.  j  ava  2  s .c  o m
        Context context = mFragmentActivity == null ? mLActivity : mFragmentActivity;
        if (context == null)
            return;
        mMediaControls = new MediaControllerCompat(context, mMediaBrowser.getSessionToken());
        mMediaCallback = new MediaControllerCompat.Callback() {
            @Override
            public void onPlaybackStateChanged(PlaybackStateCompat state) {
                MediaInterface.this.onPlaybackStateChanged(state);
            }

            @Override
            public void onSessionEvent(String event, Bundle extras) {
                MediaInterface.this.onSessionEvent(event, extras);
            }

            @Override
            public void onMetadataChanged(MediaMetadataCompat metadata) {
                MediaInterface.this.onMetadataChanged(metadata);
            }
        };
        mMediaControls.registerCallback(mMediaCallback);

        if (mFragmentActivity != null) {
            MediaControllerCompat.setMediaController(mFragmentActivity, mMediaControls);
            //mFragmentActivity.setSupportMediaController(mMediaControls);
        } else if (mLActivity != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
            setMediaControllerL();

        if (mPlayerControls != null)
            mPlayerControls.setMediaControls(mCallbacks, mMediaControls);

        if (mMediaControls.getPlaybackState() != null)
            onPlaybackStateChanged(mMediaControls.getPlaybackState());

        final Intent intent = mFragmentActivity == null ? mLActivity.getIntent()
                : mFragmentActivity.getIntent();
        if (MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH.equals(intent.getAction())) {
            final Bundle params = intent.getExtras();
            final String query = params.getString(SearchManager.QUERY);
            LOG.i("Starting from voice search query=" + query);
            mMediaControls.getTransportControls().playFromSearch(query, params);
        }
        if (mCallbacks != null) {
            mCallbacks.onConnected(this);
            MediaMetadataCompat metadataCompat = mMediaControls.getMetadata();
            if (metadataCompat != null) {
                final long duration = metadataCompat.getLong(MediaMetadataCompat.METADATA_KEY_DURATION);
                if (duration > 0)
                    mCallbacks.setTimeTotal(this, duration);
            }
        }

        Bundle extras = mMediaControls.getExtras();
        if (extras != null && extras.containsKey(MediaService.EXTRA_CONNECTED_CAST)) {
            mCallbacks.onCasting(this, extras.getString(MediaService.EXTRA_CONNECTED_CAST));
        }

        if (mPlayerControls != null && mPlayerControls.isPlaying())
            mHandler.start();

        if (mSurface != null)
            setSurface(mSurface);

        LocalBroadcastManager.getInstance(context).sendBroadcast(new Intent(ACTION_CONNECTED));
    } catch (RemoteException err) {
        LOG.e("Error in onConnected", err);
    }
}

From source file:org.gateshipone.odyssey.playbackservice.managers.PlaybackServiceStatusHelper.java

/**
 * Updates the Metadata from Androids MediaSession. This sets track/album and stuff
 * for a lockscreen image for example./*  w  w w. j a  v  a2s  .  c o  m*/
 *
 * @param track         Current track.
 * @param playbackState State of the PlaybackService.
 */
private void updateMetadata(TrackModel track, PlaybackService.PLAYSTATE playbackState) {
    if (track != null) {
        if (playbackState == PlaybackService.PLAYSTATE.PLAYING) {
            mMediaSession.setPlaybackState(new PlaybackStateCompat.Builder()
                    .setState(PlaybackStateCompat.STATE_PLAYING, 0, 1.0f)
                    .setActions(PlaybackStateCompat.ACTION_SKIP_TO_NEXT + PlaybackStateCompat.ACTION_PAUSE
                            + PlaybackStateCompat.ACTION_PLAY + PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS
                            + PlaybackStateCompat.ACTION_STOP + PlaybackStateCompat.ACTION_SEEK_TO)
                    .build());
        } else {
            mMediaSession.setPlaybackState(new PlaybackStateCompat.Builder()
                    .setState(PlaybackStateCompat.STATE_PAUSED, 0, 1.0f)
                    .setActions(PlaybackStateCompat.ACTION_SKIP_TO_NEXT + PlaybackStateCompat.ACTION_PAUSE
                            + PlaybackStateCompat.ACTION_PLAY + PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS
                            + PlaybackStateCompat.ACTION_STOP + PlaybackStateCompat.ACTION_SEEK_TO)
                    .build());
        }
        // Try to get old metadata to save image retrieval.
        MediaMetadataCompat oldData = mMediaSession.getController().getMetadata();
        MediaMetadataCompat.Builder metaDataBuilder;
        if (oldData == null) {
            metaDataBuilder = new MediaMetadataCompat.Builder();
        } else {
            metaDataBuilder = new MediaMetadataCompat.Builder(mMediaSession.getController().getMetadata());
        }
        metaDataBuilder.putString(MediaMetadataCompat.METADATA_KEY_TITLE, track.getTrackName());
        metaDataBuilder.putString(MediaMetadataCompat.METADATA_KEY_ALBUM, track.getTrackAlbumName());
        metaDataBuilder.putString(MediaMetadataCompat.METADATA_KEY_ARTIST, track.getTrackArtistName());
        metaDataBuilder.putString(MediaMetadataCompat.METADATA_KEY_ALBUM_ARTIST, track.getTrackArtistName());
        metaDataBuilder.putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE, track.getTrackName());
        metaDataBuilder.putLong(MediaMetadataCompat.METADATA_KEY_TRACK_NUMBER, track.getTrackNumber());
        metaDataBuilder.putLong(MediaMetadataCompat.METADATA_KEY_DURATION, track.getTrackDuration());

        mMediaSession.setMetadata(metaDataBuilder.build());
    }
}

From source file:com.example.android.leanback.PlaybackTransportControlGlueSample.java

/**
 * Callback function when media session's meta data is changed.
 * When this function is returned, the callback function onMetaDataChanged will be
 * executed to address the new playback state.
 *//*  www . j  av a  2 s.c  o m*/
private void onMediaSessionMetaDataChanged() {

    /**
     * Only update the media session's meta data when the media session is connected
     */
    if (mMediaSessionCompat == null) {
        return;
    }

    MediaMetadataCompat.Builder metaDataBuilder = new MediaMetadataCompat.Builder();

    // update media title
    if (getTitle() != null) {
        metaDataBuilder.putString(MediaMetadataCompat.METADATA_KEY_TITLE, getTitle().toString());
    }

    if (getSubtitle() != null) {
        // update media subtitle
        metaDataBuilder.putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_SUBTITLE, getSubtitle().toString());
    }

    if (getArt() != null) {
        // update media art bitmap
        Drawable artDrawable = getArt();
        metaDataBuilder.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, Bitmap.createBitmap(
                artDrawable.getIntrinsicWidth(), artDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888));
    }

    metaDataBuilder.putLong(MediaMetadataCompat.METADATA_KEY_DURATION, getDuration());

    mMediaSessionCompat.setMetadata(metaDataBuilder.build());
}

From source file:github.popeen.dsub.util.compat.RemoteControlClientLP.java

public void setMetadata(MusicDirectory.Entry currentSong, Bitmap bitmap) {
    MediaMetadataCompat.Builder builder = new MediaMetadataCompat.Builder();
    builder.putString(MediaMetadataCompat.METADATA_KEY_ARTIST,
            (currentSong == null) ? null : currentSong.getArtist())
            .putString(MediaMetadataCompat.METADATA_KEY_ALBUM,
                    (currentSong == null) ? null : currentSong.getAlbum())
            .putString(MediaMetadataCompat.METADATA_KEY_ALBUM_ARTIST,
                    (currentSong == null) ? null : currentSong.getArtist())
            .putString(MediaMetadataCompat.METADATA_KEY_TITLE,
                    (currentSong) == null ? null : currentSong.getTitle())
            .putString(MediaMetadataCompat.METADATA_KEY_GENRE,
                    (currentSong) == null ? null : currentSong.getGenre())
            .putLong(MediaMetadataCompat.METADATA_KEY_TRACK_NUMBER,
                    (currentSong == null) ? 0 : ((currentSong.getTrack() == null) ? 0 : currentSong.getTrack()))
            .putLong(MediaMetadataCompat.METADATA_KEY_DURATION, (currentSong == null) ? 0
                    : ((currentSong.getDuration() == null) ? 0 : (currentSong.getDuration() * 1000)));

    if (bitmap != null) {
        builder.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, bitmap);
    }/* w w w. j  a v  a  2s. c  o  m*/

    mediaSession.setMetadata(builder.build());
}

From source file:com.appdevper.mediaplayer.model.MusicProvider.java

private MediaMetadataCompat buildFromContent(ContentItem contentItem) {
    String title = contentItem.toString();
    String album = contentItem.getSubtitle();
    String artist = contentItem.getItem().getCreator();
    String genre = contentItem.getMimeType();
    String source = contentItem.getResourceUri();
    String iconUrl = contentItem.getAlbumArtworkUri();
    int trackNumber = 0;
    int totalTrackCount = 0;
    long duration = Utils.strToMilli(contentItem.getDuration()); // ms

    String id = String.valueOf(source.hashCode());
    Log.i(TAG, "MediaMetadata id " + id);
    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.mylovemhz.simplay.MediaControlFragment.java

private void readMetadata(MediaMetadataCompat metadata) {
    if (metadata != null) {
        seekBar.setMax((int) metadata.getLong(MediaMetadataCompat.METADATA_KEY_DURATION));
        artistText.setText(metadata.getText(MediaMetadataCompat.METADATA_KEY_ALBUM_ARTIST));
        titleText.setText(metadata.getText(MediaMetadataCompat.METADATA_KEY_TITLE));
        String artUrl = metadata.getText(MediaMetadataCompat.METADATA_KEY_ALBUM_ART_URI).toString();
        try {//from  www  .java  2s  .c  o m
            Picasso.with(getContext().getApplicationContext()).load(artUrl).into(albumImage);
        } catch (IllegalArgumentException e) {
            //no artwork
            albumImage.setImageResource(R.drawable.ic_album);
        }
    }
}

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

@Override
public long getDuration() {
    if (mController.getMetadata() == null) {
        return 0;
    }//  w w w  .  j  av  a 2s .  com
    return (int) mController.getMetadata().getLong(MediaMetadataCompat.METADATA_KEY_DURATION);
}

From source file:github.popeen.dsub.util.compat.RemoteControlClientLP.java

@Override
public void updatePlaylist(List<DownloadFile> playlist) {
    List<MediaSessionCompat.QueueItem> queue = new ArrayList<>();

    for (DownloadFile file : playlist) {
        Entry entry = file.getSong();//from w w  w. ja v a 2s  .  c o m
        Bundle extras = new Bundle();
        extras.putLong(MediaMetadataCompat.METADATA_KEY_DURATION,
                ((entry.getDuration() == null) ? 0 : (entry.getDuration() * 1000)));

        MediaDescriptionCompat description = new MediaDescriptionCompat.Builder().setMediaId(entry.getId())
                .setTitle(entry.getTitle()).setSubtitle(entry.getArtist()).setDescription(entry.getAlbum())
                .setExtras(extras).build();
        MediaSessionCompat.QueueItem item = new MediaSessionCompat.QueueItem(description,
                entry.getId().hashCode());
        queue.add(item);
    }

    mediaSession.setQueue(queue);
    currentQueue = playlist;
}