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}