/* * Copyright (c) 2015 [1076559197@qq.com | tchen0707@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 com.youku.player.plugin; import android.content.Context; import android.util.AttributeSet; import android.widget.FrameLayout; import com.youku.player.base.GoplayException; import com.youku.player.ui.interf.IMediaPlayerDelegate; /** * Class PluginOverlay * 目前使用了framelayout解决了控制层和播放器级别的问题 * 其实也可以考虑使用windowsmanager创建浮动窗口 * 利用反射 @com.android.internal.policy.impl.Policy 解决窗口问题 * */ public abstract class PluginOverlay extends FrameLayout implements LoginObserver, MediaPlayerObserver { public IMediaPlayerDelegate mMediaPlayerDelegate; public boolean pluginEnable = false; public PluginOverlay(Context context, IMediaPlayerDelegate mediaPlayerDelegate) { super(context); mMediaPlayerDelegate = mediaPlayerDelegate; } public PluginOverlay(Context context) { super(context); } public PluginOverlay(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public PluginOverlay(Context context, AttributeSet attrs) { super(context, attrs); } /** */ public abstract void onUp(); /** */ public abstract void onDown(); /** * 清空顶踩信息 */ public abstract void onClearUpDownFav(); /** */ public abstract void onFavor(); /** */ public abstract void onUnFavor(); /** * 播放新视频,需要重置一些layout和参数 */ public abstract void newVideo(); //声音调大 public abstract void onVolumnUp(); public abstract void onVolumnDown(); /** * 是否静音 * @param mute */ public abstract void onMute(boolean mute); /** * Activity onStart触发 */ public abstract void onStart(); /** * Activity onPause触发 */ public abstract void onPause(); /** * 切换新视频 */ public abstract void onVideoChange(); /** * 开始获取播放地址 */ public abstract void onVideoInfoGetting(); /** * 获取播放地址成功 */ public abstract void onVideoInfoGetted(); /** * 正片开始播放 */ public abstract void onRealVideoStart(); /** * 播放无版权视频 * @param e */ public abstract void onPlayNoRightVideo(GoplayException e); /** * 无版权视频时候播放相关视频 * @param e */ public abstract void onPlayReleateNoRightVideo(); /** * 正片开始播放 */ public abstract void onADplaying(); /** * 获取播放地址失败 * @param needRetry 需要重试 */ public abstract void onVideoInfoGetFail(boolean needRetry); /** */ public void download() { } /** */ public void loginSucc() { } /** */ public void loginFail() { } /** * 添加下载失败 */ public void onDownloadSucc() { } /** * 添加下载失败 * @param msg */ public void onDownloadFail(String msg) { } public void onPluginAdded() { } public abstract void setVisible(boolean visible); /** * 从3g返回后设置 * 在onresume的时候会调用插件的back * 例如:挂起后启动 */ public abstract void back(); /** * 增加网速通知回调 * @param speed */ public void onNetSpeedChange(int speed){ } /** * 订阅 */ public void onSubscribe() { } /** * 取消订阅 */ public void onUnSubscribe() { } public void onRelease() { // TODO Auto-generated method stub } public boolean isShowing() { return false; } /** * 重播回调 */ public void onReplay() { } }