admin
2020-08-12 149de6341fd8892cd19ca04885e7f75727e98c8d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
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
        MediaPlayerObserver {
 
    public IMediaPlayerDelegate mMediaPlayerDelegate;
    public boolean pluginEnable = false;
 
    public PluginOverlay(Context context,
            IMediaPlayerDelegate mediaPlayerDelegate) {
        super(context);
        mMediaPlayerDelegate = mediaPlayerDelegate;
    }
 
    public YoukuPlayerListener youkuPlayerListener;
 
    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
     *            true:静音
     */
    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() {
 
    }
 
    /**
     * 改变插件是否可见。需要控制自身view的可见性。
     * 
     * @param visible
     *            是否可见
     */
    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() {
 
    }
    public void setYoukuPlayerListener(YoukuPlayerListener youkuPlayerListener) {
        this.youkuPlayerListener = youkuPlayerListener;
    }
}