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}