PlaylistItem.java revision 57456222f52fbfc1dcfb1b99030aad6acc02ad23
157456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang/* 257456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang * Copyright (C) 2013 The Android Open Source Project 357456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang * 457456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang * Licensed under the Apache License, Version 2.0 (the "License"); 557456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang * you may not use this file except in compliance with the License. 657456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang * You may obtain a copy of the License at 757456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang * 857456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang * http://www.apache.org/licenses/LICENSE-2.0 957456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang * 1057456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang * Unless required by applicable law or agreed to in writing, software 1157456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang * distributed under the License is distributed on an "AS IS" BASIS, 1257456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1357456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang * See the License for the specific language governing permissions and 1457456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang * limitations under the License. 1557456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang */ 1657456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang 1757456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhangpackage com.example.android.supportv7.media; 1857456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang 1957456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhangimport android.support.v7.media.MediaItemStatus; 2057456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhangimport android.net.Uri; 2157456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhangimport android.app.PendingIntent; 2257456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang 2357456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang/** 2457456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang * MediaQueueItem helps keep track of the current status of an media item. 2557456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang */ 2657456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhangfinal class MediaQueueItem { 2757456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang // immutables 2857456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang private final String mSessionId; 2957456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang private final String mItemId; 3057456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang private final Uri mUri; 3157456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang private final PendingIntent mUpdateReceiver; 3257456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang // changeable states 3357456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang private int mPlaybackState = MediaItemStatus.PLAYBACK_STATE_PENDING; 3457456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang private long mContentPosition; 3557456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang private long mContentDuration; 3657456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang 3757456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang public MediaQueueItem(String qid, String iid, Uri uri, PendingIntent pi) { 3857456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang mSessionId = qid; 3957456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang mItemId = iid; 4057456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang mUri = uri; 4157456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang mUpdateReceiver = pi; 4257456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang } 4357456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang 4457456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang public void setState(int state) { 4557456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang mPlaybackState = state; 4657456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang } 4757456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang 4857456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang public void setContentPosition(long pos) { 4957456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang mContentPosition = pos; 5057456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang } 5157456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang 5257456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang public void setContentDuration(long duration) { 5357456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang mContentDuration = duration; 5457456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang } 5557456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang 5657456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang public String getSessionId() { 5757456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang return mSessionId; 5857456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang } 5957456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang 6057456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang public String getItemId() { 6157456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang return mItemId; 6257456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang } 6357456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang 6457456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang public Uri getUri() { 6557456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang return mUri; 6657456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang } 6757456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang 6857456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang public PendingIntent getUpdateReceiver() { 6957456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang return mUpdateReceiver; 7057456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang } 7157456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang 7257456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang public int getState() { 7357456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang return mPlaybackState; 7457456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang } 7557456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang 7657456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang public long getContentPosition() { 7757456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang return mContentPosition; 7857456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang } 7957456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang 8057456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang public long getContentDuration() { 8157456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang return mContentDuration; 8257456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang } 8357456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang 8457456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang public MediaItemStatus getStatus() { 8557456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang return new MediaItemStatus.Builder(mPlaybackState) 8657456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang .setContentPosition(mContentPosition) 8757456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang .setContentDuration(mContentDuration) 8857456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang .build(); 8957456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang } 9057456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang 9157456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang @Override 9257456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang public String toString() { 9357456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang String state[] = { 9457456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang "PENDING", 9557456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang "PLAYING", 9657456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang "PAUSED", 9757456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang "BUFFERING", 9857456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang "FINISHED", 9957456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang "CANCELED", 10057456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang "INVALIDATED", 10157456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang "ERROR" 10257456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang }; 10357456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang return "[" + mSessionId + "|" + mItemId + "|" 10457456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang + state[mPlaybackState] + "] " + mUri.toString(); 10557456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang } 10657456222f52fbfc1dcfb1b99030aad6acc02ad23Chong Zhang}