Search in sources :

Example 1 with MediaItemStatus

use of android.support.v7.media.MediaItemStatus in project cw-omnibus by commonsguy.

the class PlaybackFragment method play.

private void play() {
    logToTranscript(getActivity().getString(R.string.play_requested));
    ItemActionCallback playCB = new ItemActionCallback() {

        @Override
        public void onResult(Bundle data, String sessionId, MediaSessionStatus sessionStatus, String itemId, MediaItemStatus itemStatus) {
            logToTranscript(getActivity().getString(R.string.playing));
            isPlaying = true;
            getActivity().supportInvalidateOptionsMenu();
        }

        @Override
        public void onError(String error, int code, Bundle data) {
            logToTranscript(getActivity().getString(R.string.play_error) + error);
        }
    };
    client.play(Uri.parse("http://misc.commonsware.com/ed_hd_512kb.mp4"), "video/mp4", null, 0, null, playCB);
}
Also used : MediaSessionStatus(android.support.v7.media.MediaSessionStatus) Bundle(android.os.Bundle) ItemActionCallback(android.support.v7.media.RemotePlaybackClient.ItemActionCallback) MediaItemStatus(android.support.v7.media.MediaItemStatus)

Example 2 with MediaItemStatus

use of android.support.v7.media.MediaItemStatus in project cw-omnibus by commonsguy.

the class PlaybackFragment method play.

private void play() {
    logToTranscript(getActivity().getString(R.string.play_requested));
    ItemActionCallback playCB = new ItemActionCallback() {

        @Override
        public void onResult(Bundle data, String sessionId, MediaSessionStatus sessionStatus, String itemId, MediaItemStatus itemStatus) {
            logToTranscript(getActivity().getString(R.string.playing));
            isPlaying = true;
            updateMenu();
        }

        @Override
        public void onError(String error, int code, Bundle data) {
            logToTranscript(getActivity().getString(R.string.play_error) + error);
        }
    };
    client.play(Uri.parse("http://misc.commonsware.com/ed_hd_512kb.mp4"), "video/mp4", null, 0, null, playCB);
}
Also used : MediaSessionStatus(android.support.v7.media.MediaSessionStatus) Bundle(android.os.Bundle) ItemActionCallback(android.support.v7.media.RemotePlaybackClient.ItemActionCallback) MediaItemStatus(android.support.v7.media.MediaItemStatus)

Example 3 with MediaItemStatus

use of android.support.v7.media.MediaItemStatus in project AndroidChromium by JackyAndroid.

the class DefaultMediaRouteController method processMediaStatusBundle.

private void processMediaStatusBundle(Bundle statusBundle) {
    if (statusBundle == null)
        return;
    logBundle("processMediaStatusBundle: ", statusBundle);
    String itemId = statusBundle.getString(MediaControlIntent.EXTRA_ITEM_ID);
    if (itemId == null || !itemId.equals(mCurrentItemId))
        return;
    // Extract item metadata, if available.
    if (statusBundle.containsKey(MediaControlIntent.EXTRA_ITEM_METADATA)) {
        Bundle metadataBundle = (Bundle) statusBundle.getParcelable(MediaControlIntent.EXTRA_ITEM_METADATA);
        updateTitle(metadataBundle.getString(MediaItemMetadata.KEY_TITLE, mPreferredTitle));
    }
    // Extract the item status, if available.
    if (statusBundle.containsKey(MediaControlIntent.EXTRA_ITEM_STATUS)) {
        Bundle itemStatusBundle = (Bundle) statusBundle.getParcelable(MediaControlIntent.EXTRA_ITEM_STATUS);
        MediaItemStatus itemStatus = MediaItemStatus.fromBundle(itemStatusBundle);
        logBundle("Received item status: ", itemStatusBundle);
        updateState(itemStatus.getPlaybackState());
        // Update the PositionExtrapolator that the playback state has changed.
        if (itemStatus.getPlaybackState() == MediaItemStatus.PLAYBACK_STATE_PLAYING) {
            mPositionExtrapolator.onResumed();
        } else if (itemStatus.getPlaybackState() == MediaItemStatus.PLAYBACK_STATE_FINISHED) {
            mPositionExtrapolator.onFinished();
        } else {
            mPositionExtrapolator.onPaused();
        }
        if ((getRemotePlayerState() == PlayerState.PAUSED) || (getRemotePlayerState() == PlayerState.PLAYING) || (getRemotePlayerState() == PlayerState.LOADING)) {
            this.mCurrentItemId = itemId;
            // duration can possibly be -1 if it's unknown, so cap to 0
            long duration = Math.max(itemStatus.getContentDuration(), 0);
            // update the position using the remote player's position
            // duration can possibly be -1 if it's unknown, so cap to 0
            long position = Math.min(Math.max(itemStatus.getContentPosition(), 0), duration);
            // TODO(zqzhang): The GMS core currently uses SystemClock.uptimeMillis() as
            // timestamp, which does not conform to the MediaRouter support library docs. See
            // b/28378525 and
            // http://developer.android.com/reference/android/support/v7/media/MediaItemStatus.html#getTimestamp().
            // Override the timestamp with elapsedRealtime() by assuming the delay between the
            // GMS core produces the MediaItemStatus and the code reaches here is short enough.
            // long timestamp = itemStatus.getTimestamp();
            long timestamp = SystemClock.elapsedRealtime();
            notifyDurationUpdated(duration);
            notifyPositionUpdated(position);
            mPositionExtrapolator.onPositionInfoUpdated(duration, position, timestamp);
            if (mSeeking) {
                mSeeking = false;
                if (getMediaStateListener() != null)
                    getMediaStateListener().onSeekCompleted();
            }
        }
        logExtraHttpInfo(itemStatus.getExtras());
    }
}
Also used : Bundle(android.os.Bundle) MediaItemStatus(android.support.v7.media.MediaItemStatus)

Aggregations

Bundle (android.os.Bundle)3 MediaItemStatus (android.support.v7.media.MediaItemStatus)3 MediaSessionStatus (android.support.v7.media.MediaSessionStatus)2 ItemActionCallback (android.support.v7.media.RemotePlaybackClient.ItemActionCallback)2