001/*
002 * Copyright (C) 2013-2014 Zhang Rui <bbcallen@gmail.com>
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 *      http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016
017package com.baidu.cloud.media.player;
018
019import android.os.Bundle;
020
021import com.baidu.cloud.media.player.misc.IMediaDataSource;
022
023@SuppressWarnings("WeakerAccess")
024public abstract class AbstractMediaPlayer implements IMediaPlayer {
025    private OnPreparedListener mOnPreparedListener;
026    private OnCompletionListener mOnCompletionListener;
027    private OnBufferingUpdateListener mOnBufferingUpdateListener;
028    private OnSeekCompleteListener mOnSeekCompleteListener;
029    private OnVideoSizeChangedListener mOnVideoSizeChangedListener;
030    private OnErrorListener mOnErrorListener;
031    private OnInfoListener mOnInfoListener;
032    private OnTimedTextListener mOnTimedTextListener;
033    private OnMetadataListener mOnMetadataListener;
034
035    public final void setOnPreparedListener(OnPreparedListener listener) {
036        mOnPreparedListener = listener;
037    }
038
039    public final void setOnCompletionListener(OnCompletionListener listener) {
040        mOnCompletionListener = listener;
041    }
042
043    public final void setOnBufferingUpdateListener(
044            OnBufferingUpdateListener listener) {
045        mOnBufferingUpdateListener = listener;
046    }
047
048    public final void setOnSeekCompleteListener(OnSeekCompleteListener listener) {
049        mOnSeekCompleteListener = listener;
050    }
051
052    public final void setOnVideoSizeChangedListener(
053            OnVideoSizeChangedListener listener) {
054        mOnVideoSizeChangedListener = listener;
055    }
056
057    public final void setOnErrorListener(OnErrorListener listener) {
058        mOnErrorListener = listener;
059    }
060
061    public final void setOnInfoListener(OnInfoListener listener) {
062        mOnInfoListener = listener;
063    }
064
065    public final void setOnTimedTextListener(OnTimedTextListener listener) {
066        mOnTimedTextListener = listener;
067    }
068
069    public final void setOnMetadataListener(OnMetadataListener listener) {
070        mOnMetadataListener = listener;
071    }
072
073    public void resetListeners() {
074        mOnPreparedListener = null;
075        mOnBufferingUpdateListener = null;
076        mOnCompletionListener = null;
077        mOnSeekCompleteListener = null;
078        mOnVideoSizeChangedListener = null;
079        mOnErrorListener = null;
080        mOnInfoListener = null;
081        mOnTimedTextListener = null;
082    }
083
084    protected final void notifyOnPrepared() {
085        if (mOnPreparedListener != null) {
086            mOnPreparedListener.onPrepared(this);
087        }
088    }
089
090    protected final void notifyOnCompletion() {
091        if (mOnCompletionListener != null) {
092            mOnCompletionListener.onCompletion(this);
093        }
094    }
095
096    protected final void notifyOnBufferingUpdate(int percent) {
097        if (mOnBufferingUpdateListener != null) {
098            mOnBufferingUpdateListener.onBufferingUpdate(this, percent);
099        }
100    }
101
102    protected final void notifyOnSeekComplete() {
103        if (mOnSeekCompleteListener != null) {
104            mOnSeekCompleteListener.onSeekComplete(this);
105        }
106    }
107
108    protected final void notifyOnVideoSizeChanged(int width, int height, int sarNum, int sarDen) {
109        if (mOnVideoSizeChangedListener != null) {
110            mOnVideoSizeChangedListener.onVideoSizeChanged(this, width, height, sarNum, sarDen);
111        }
112    }
113
114    protected final boolean notifyOnError(int what, int extra) {
115        return mOnErrorListener != null && mOnErrorListener.onError(this, what, extra);
116    }
117
118    protected final boolean notifyOnInfo(int what, int extra) {
119        return mOnInfoListener != null && mOnInfoListener.onInfo(this, what, extra);
120    }
121
122    protected final void notifyOnTimedText(BDTimedText text) {
123        if (mOnTimedTextListener != null) {
124            mOnTimedTextListener.onTimedText(this, text);
125        }
126    }
127
128    protected final void notifyOnMetadata(Bundle meta) {
129        if (mOnMetadataListener != null) {
130            mOnMetadataListener.onMetadata(this, meta);
131        }
132    }
133
134    public void setDataSource(IMediaDataSource mediaDataSource) {
135        throw new UnsupportedOperationException();
136    }
137}