/* * Copyright (C) 2013-2014 Zhang Rui <bbcallen@gmail.com> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package tv.danmaku.ijk.media.player; /** * @author bbcallen * * Common IMediaPlayer implement */ public abstract class SimpleMediaPlayer extends BaseMediaPlayer implements IMediaPlayer { private OnPreparedListener mOnPreparedListener; private OnCompletionListener mOnCompletionListener; private OnBufferingUpdateListener mOnBufferingUpdateListener; private OnSeekCompleteListener mOnSeekCompleteListener; private OnVideoSizeChangedListener mOnVideoSizeChangedListener; private OnErrorListener mOnErrorListener; private OnInfoListener mOnInfoListener; public final void setOnPreparedListener(OnPreparedListener listener) { mOnPreparedListener = listener; } public final void setOnCompletionListener(OnCompletionListener listener) { mOnCompletionListener = listener; } public final void setOnBufferingUpdateListener( OnBufferingUpdateListener listener) { mOnBufferingUpdateListener = listener; } public final void setOnSeekCompleteListener(OnSeekCompleteListener listener) { mOnSeekCompleteListener = listener; } public final void setOnVideoSizeChangedListener( OnVideoSizeChangedListener listener) { mOnVideoSizeChangedListener = listener; } public final void setOnErrorListener(OnErrorListener listener) { mOnErrorListener = listener; } public final void setOnInfoListener(OnInfoListener listener) { mOnInfoListener = listener; } public void resetListeners() { mOnPreparedListener = null; mOnBufferingUpdateListener = null; mOnCompletionListener = null; mOnSeekCompleteListener = null; mOnVideoSizeChangedListener = null; mOnErrorListener = null; mOnInfoListener = null; } public void attachListeners(IMediaPlayer mp) { mp.setOnPreparedListener(mOnPreparedListener); mp.setOnBufferingUpdateListener(mOnBufferingUpdateListener); mp.setOnCompletionListener(mOnCompletionListener); mp.setOnSeekCompleteListener(mOnSeekCompleteListener); mp.setOnVideoSizeChangedListener(mOnVideoSizeChangedListener); mp.setOnErrorListener(mOnErrorListener); mp.setOnInfoListener(mOnInfoListener); } protected final void notifyOnPrepared() { if (mOnPreparedListener != null) mOnPreparedListener.onPrepared(this); } protected final void notifyOnCompletion() { if (mOnCompletionListener != null) mOnCompletionListener.onCompletion(this); } protected final void notifyOnBufferingUpdate(int percent) { if (mOnBufferingUpdateListener != null) mOnBufferingUpdateListener.onBufferingUpdate(this, percent); } protected final void notifyOnSeekComplete() { if (mOnSeekCompleteListener != null) mOnSeekCompleteListener.onSeekComplete(this); } protected final void notifyOnVideoSizeChanged(int width, int height, int sarNum, int sarDen) { if (mOnVideoSizeChangedListener != null) mOnVideoSizeChangedListener.onVideoSizeChanged(this, width, height, sarNum, sarDen); } protected final boolean notifyOnError(int what, int extra) { if (mOnErrorListener != null) return mOnErrorListener.onError(this, what, extra); return false; } protected final boolean notifyOnInfo(int what, int extra) { if (mOnInfoListener != null) return mOnInfoListener.onInfo(this, what, extra); return false; } }