Example usage for android.support.v4.media.session PlaybackStateCompat getBufferedPosition

List of usage examples for android.support.v4.media.session PlaybackStateCompat getBufferedPosition

Introduction

In this page you can find the example usage for android.support.v4.media.session PlaybackStateCompat getBufferedPosition.

Prototype

public long getBufferedPosition() 

Source Link

Document

Get the current buffered position in ms.

Usage

From source file:org.opensilk.music.ui3.main.FooterScreenPresenter.java

void subscribeBroadcasts() {
    if (isSubscribed(broadcastSubscriptions)) {
        return;//w  w w  .j  a v  a  2s  . c o m
    }
    Subscription s = playbackController.subscribePlayStateChanges(new Action1<PlaybackStateCompat>() {
        @Override
        public void call(PlaybackStateCompat playbackState) {
            final int state = playbackState.getState();
            if (state == STATE_BUFFERING || state == STATE_CONNECTING) {
                setProgress(-1);
            } else {
                long position = playbackState.getPosition();
                long duration = playbackState.getBufferedPosition();
                if (position < 0 || duration <= 0) {
                    setProgress(1000);
                } else {
                    setProgress((int) (1000 * position / duration));
                }
                Timber.v("Position discrepancy = %d", lastPosition - position);
                lastPosition = position;
                lastDuration = duration;
                lastPosSynced = true;
                subscribeProgress(MainPresenter.isPlaying(playbackState));
            }

        }
    });
    Subscription s2 = playbackController.subscribeMetaChanges(new Action1<MediaMetadataCompat>() {
        @Override
        public void call(MediaMetadataCompat mediaMetadata) {
            setTrackName(mediaMetadata.getString(METADATA_KEY_TITLE));
            setArtistName(mediaMetadata.getString(METADATA_KEY_ARTIST));
            updateArtwork(mediaMetadata.getBitmap(METADATA_KEY_ALBUM_ART));
        }
    });

    broadcastSubscriptions = new CompositeSubscription(s, s2);
}

From source file:org.opensilk.music.ui3.nowplaying.NowPlayingScreenPresenter.java

void subscribeBroadcasts() {
    if (isSubscribed(broadcastSubscription))
        return;//from   w w  w .  ja v  a  2s.  c o  m
    Subscription s1 = playbackController.subscribePlayStateChanges(new Action1<PlaybackStateCompat>() {
        @Override
        public void call(PlaybackStateCompat playbackState) {
            boolean playing = MainPresenter.isPlaying(playbackState);
            if (hasView()) {
                getView().play.setChecked(MainPresenter.isActive(playbackState));
                getView().setVisualizerEnabled(playing);
            }
            isPlaying = playing;
            long position = playbackState.getPosition();
            long duration = playbackState.getBufferedPosition();
            updateProgress(position, duration);
            if (duration != lastDuration) {
                setTotalTimeText(duration);
            }
            Timber.v("Position discrepancy = %d", lastPosition - position);
            lastPosition = position;
            lastDuration = duration;
            lastPosSynced = true;
            //TODO shuffle/repeat
        }
    });
    Subscription s2 = playbackController.subscribeMetaChanges(new Action1<MediaMetadataCompat>() {
        @Override
        public void call(MediaMetadataCompat mediaMetadata) {
            //TODO maybe should just set the large art uri in the metadata
            String track = mediaMetadata.getString(METADATA_KEY_TITLE);
            String artist = mediaMetadata.getString(METADATA_KEY_ARTIST);
            String albumArtist = mediaMetadata.getString(METADATA_KEY_ALBUM_ARTIST);
            String album = mediaMetadata.getString(METADATA_KEY_ALBUM);
            String uriString = mediaMetadata.getString(METADATA_KEY_ART_URI);
            Uri artworkUri = uriString != null ? Uri.parse(uriString) : null;
            Timber.d("%s, %s, %s, %s", artist, albumArtist, album, uriString);
            final ArtInfo artInfo = UtilsCommon.makeBestfitArtInfo(albumArtist, artist, album, artworkUri);
            Timber.d(artInfo.toString());
            if (!artInfo.equals(lastArtInfo)) {
                lastArtInfo = artInfo;
                if (hasView() && getView().artwork != null) {
                    requestor.newRequest(getView().artwork, getView().paletteObserver, artInfo,
                            ArtworkType.LARGE);
                }
            }
            //Todo update display
        }
    });
    final long interval = 250;
    Subscription s3 = Observable.interval(interval, TimeUnit.MILLISECONDS)
            .observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<Long>() {
                @Override
                public void call(Long aLong) {
                    long position = lastPosition;
                    if (lastPosSynced) {
                        lastPosSynced = false;
                    } else if (isPlaying) {
                        position += interval + 10;
                        lastPosition = position;
                    }
                    long duration = lastDuration;
                    updateProgress(position, duration);
                }
            });
    broadcastSubscription = new CompositeSubscription(s1, s2, s3);
}