package com.fangxu.dota2helper.ui.widget; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.graphics.drawable.Drawable; import android.media.AudioManager; import android.os.Handler; import android.os.Message; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; import android.widget.TextView; import com.baseproject.image.ImageResizer; import com.baseproject.utils.Logger; import com.baseproject.utils.UIUtils; import com.baseproject.utils.Util; import com.bumptech.glide.Glide; import com.fangxu.dota2helper.R; import com.fangxu.dota2helper.callback.VideoStateCallback; import com.fangxu.dota2helper.util.BlurTransformation; import com.youku.player.ApiManager; import com.youku.player.Track; import com.youku.player.VideoQuality; import com.youku.player.apiservice.ICacheInfo; import com.youku.player.base.GoplayException; import com.youku.player.base.Orientation; import com.youku.player.base.YoukuBasePlayerManager; import com.youku.player.goplay.Profile; import com.youku.player.goplay.StaticsUtil; import com.youku.player.module.VideoCacheInfo; import com.youku.player.plugin.PluginOverlay; import com.youku.player.ui.interf.IMediaPlayerDelegate; import com.youku.player.util.DetailMessage; import com.youku.player.util.DetailUtil; import com.youku.player.util.PlayCode; import com.youku.player.util.PlayerUtil; import com.youku.uplayer.MPPErrorCode; import java.util.List; /** * 简单的播放控制插件 * * @author LongFan * @CreateDate 2013年5月15日10:38:55 */ @SuppressLint("NewApi") public class YoukuPluginPlayer extends PluginOverlay implements DetailMessage { private LinearLayout titleLayoutPort; private TextView playTitleTextView;// 播放标题 private RelativeLayout controlLayout; private ImageView play_pauseButton;// 播放暂停按钮 private ImageButton full_screenButton;// 全屏按钮 private VideoQualityTextView video_quality; private LinearLayout video_quality_container; private String id;// 上页传递id video/show private LinearLayout mContainerLayout;// 整个布局layout // private LinearLayout mainPlayLayout;// 包含播放器的部分 private ImageButton userPlayImageButton; private FrameLayout playerView; private YoukuBasePlayerManager mBasePlayerManager; private Activity mActivity; private ImageView userPlayButton; private FrameLayout interactFrameLayout; private View containerView; private String video_id;// 当前播放视频id private View seekLoadingContainerView; private RelativeLayout loadingInfoLayout; private SeekBar infoSeekBar; private String videoBackground; private VideoQuality mCurQuality; private VideoStateCallback mVideoStateCallback; // private Loading playLoading; public YoukuPluginPlayer(YoukuBasePlayerManager basePlayerManager, IMediaPlayerDelegate mediaPlayerDelegate) { super(basePlayerManager.getBaseActivity(), mediaPlayerDelegate); mBasePlayerManager = basePlayerManager; this.mActivity = basePlayerManager.getBaseActivity(); LayoutInflater mLayoutInflater = LayoutInflater.from(mActivity); containerView = mLayoutInflater.inflate( R.layout.layout_youku_plugin_player, null); if (null != mediaPlayerDelegate && mediaPlayerDelegate.videoInfo != null) video_id = mediaPlayerDelegate.videoInfo.getVid(); addView(containerView); initPlayLayout(); } public YoukuPluginPlayer(YoukuBasePlayerManager basePlayerManager, IMediaPlayerDelegate mediaPlayerDelegate, String videoBackground) { super(basePlayerManager.getBaseActivity(), mediaPlayerDelegate); mBasePlayerManager = basePlayerManager; this.videoBackground = videoBackground; this.mActivity = basePlayerManager.getBaseActivity(); LayoutInflater mLayoutInflater = LayoutInflater.from(mActivity); containerView = mLayoutInflater.inflate( R.layout.layout_youku_plugin_player, null); if (null != mediaPlayerDelegate && mediaPlayerDelegate.videoInfo != null) video_id = mediaPlayerDelegate.videoInfo.getVid(); addView(containerView); initPlayLayout(); } public void setBackground(String videoBackground) { this.videoBackground = videoBackground; Glide.with(mActivity).load(videoBackground).asBitmap().placeholder(R.color.black).transform(new BlurTransformation(mActivity)).into(seekBlur); Glide.with(mActivity).load(videoBackground).asBitmap().placeholder(R.color.black).transform(new BlurTransformation(mActivity)).into(loadBlur); Glide.with(mActivity).load(videoBackground).asBitmap().placeholder(R.color.black).transform(new BlurTransformation(mActivity)).into(retryBlur); Glide.with(mActivity).load(videoBackground).asBitmap().placeholder(R.color.black).transform(new BlurTransformation(mActivity)).into(endBlur); } public void setVideoStateCallback(VideoStateCallback callback) { mVideoStateCallback = callback; } /** * 清除不用的对象,释放内存 */ public void clear() { seekHandler.removeCallbacksAndMessages(null); seekendHandler.removeCallbacksAndMessages(null); loadInfoHandler.removeCallbacksAndMessages(null); hideHandler.removeCallbacksAndMessages(null); playHandler.removeCallbacksAndMessages(null); playLoadingBar = null; seekLoadingContainerView = null; mContainerLayout.setOnClickListener(null); mContainerLayout = null; interactFrameLayout = null; userPlayButton.setOnClickListener(null); userPlayButton.setImageBitmap(null); userPlayButton = null; containerView = null; } SeekBar videoBar; TextView totalTime; TextView currentTime; private View retryView; private ImageView retryBlur; private RelativeLayout goRetry; // 重试 /** * 重试初始化 */ private void initRetry() { if (null == containerView) return; retryView = containerView.findViewById(R.id.view_restart); goRetry = (RelativeLayout) containerView.findViewById(R.id.go_retry); retryBlur = (ImageView) containerView.findViewById(R.id.iv_retry_blur); Glide.with(mActivity).load(videoBackground).asBitmap().placeholder(R.color.black).transform(new BlurTransformation(mActivity)).into(retryBlur); if (null != goRetry) { goRetry.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { error = false; if (!Util.hasInternet()) { PlayerUtil.showTips(R.string.player_tips_no_network); return; } if (null != retryView) retryView.setVisibility(View.GONE); if (null != mMediaPlayerDelegate) { if (!infoFail) { mMediaPlayerDelegate.release(); mMediaPlayerDelegate.setFirstUnloaded(); mMediaPlayerDelegate.start(); mMediaPlayerDelegate.retry(); showLoading(false); } else { if (mMediaPlayerDelegate != null && mMediaPlayerDelegate.videoInfo != null) { mMediaPlayerDelegate .playVideo(mMediaPlayerDelegate.videoInfo .getVid()); mMediaPlayerDelegate.setFirstUnloaded(); } else if (!TextUtils .isEmpty(mMediaPlayerDelegate.nowVid)) { mMediaPlayerDelegate .playVideo(mMediaPlayerDelegate.nowVid); mMediaPlayerDelegate.setFirstUnloaded(); // mMediaPlayerDelegate.retry(); } // mMediaPlayerDelegate.replayVideo(); } } } }); } } private void hideShowQualityContainer(boolean hide) { if (hide) { video_quality_container.setVisibility(GONE); } else { video_quality_container.setVisibility(VISIBLE); } } // 初始化播放区控件 /** * 找到相关的layout */ private void initPlayLayout() { if (null == containerView) return; seekLoadingContainerView = containerView .findViewById(R.id.seek_loading_bg); seekLoadingContainerView.setVisibility(View.GONE); mContainerLayout = (LinearLayout) containerView .findViewById(R.id.ll_player_container); mContainerLayout.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { onContainerClick(); } }); if (UIUtils.hasHoneycomb()) { mContainerLayout .setOnSystemUiVisibilityChangeListener(new OnSystemUiVisibilityChangeListener() { @Override public void onSystemUiVisibilityChange(int visibility) { hideShowControl(); } }); } interactFrameLayout = (FrameLayout) containerView .findViewById(R.id.fl_interact); mContainerLayout.setClickable(false); controlLayout = (RelativeLayout) containerView .findViewById(R.id.layout_play_control); if (null != controlLayout) controlLayout.setVisibility(View.GONE); videoBar = (SeekBar) containerView .findViewById(R.id.sb_detail_play_progress); totalTime = (TextView) containerView.findViewById(R.id.total_time); currentTime = (TextView) containerView.findViewById(R.id.current_time); if (null != videoBar) videoBar.setOnSeekBarChangeListener(mBarChangeListener); play_pauseButton = (ImageView) containerView .findViewById(R.id.ib_detail_play_control); play_pauseButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (null == mMediaPlayerDelegate) return; if (isLoading) { play_pauseButton .setImageResource(R.drawable.ic_pause); return; } if (mMediaPlayerDelegate.isPlaying()) { mMediaPlayerDelegate.pause(); if (!isLoading) { play_pauseButton .setImageResource(R.drawable.ic_play); } else { play_pauseButton .setImageResource(R.drawable.ic_play); } } else { mMediaPlayerDelegate.start(); if (null != play_pauseButton) if (!isLoading) { play_pauseButton .setImageResource(R.drawable.ic_pause); } else { play_pauseButton .setImageResource(R.drawable.ic_pause); } } if (isBack) { isBack = false; isLoading = true; play_pauseButton.setImageResource(R.drawable.ic_pause); } userAction(); } }); full_screenButton = (ImageButton) containerView .findViewById(R.id.ib_detail_play_full); video_quality_container = (LinearLayout) containerView.findViewById(R.id.ll_video_quality_container); video_quality = (VideoQualityTextView) containerView.findViewById(R.id.tv_video_quality); video_quality.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { if (video_quality_container.getVisibility() == GONE) { hideShowQualityContainer(false); } else if (video_quality_container.getVisibility() == VISIBLE) { hideShowQualityContainer(true); } } }); full_screenButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mMediaPlayerDelegate.isFullScreen) { mMediaPlayerDelegate.goSmall(); } else { mMediaPlayerDelegate.goFullScreen(); } } }); ImageView backView = (ImageView) containerView.findViewById(R.id.iv_back); backView.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { Activity activity = YoukuPluginPlayer.this.mActivity; if (activity != null) { if (!activity.isFinishing()) { activity.finish(); } } } }); playTitleTextView = (TextView) containerView .findViewById(R.id.tv_detail_play_title); titleLayoutPort = (LinearLayout) containerView .findViewById(R.id.layout_title); titleLayoutPort.setOnClickListener(null); initSeekLoading(); if (null != mMediaPlayerDelegate && null != mMediaPlayerDelegate.videoInfo) { int duration = mMediaPlayerDelegate.videoInfo.getDurationMills(); videoBar.setMax(duration); } userPlayButton = (ImageView) containerView .findViewById(R.id.ib_user_play); if (null != userPlayButton) { userPlayButton.setOnClickListener(userPlayClickListener); userPlayButton.setVisibility(View.GONE); } // videoBar.setMax(240000); if (null != mMediaPlayerDelegate) if (mMediaPlayerDelegate.isPlaying()) play_pauseButton .setImageResource(R.drawable.ic_pause); else { play_pauseButton .setImageResource(R.drawable.ic_play); } initRetry(); initEndPage(); initLoadInfoPage(); } private View endPageView; private ImageView endBlur; private LinearLayout nextLayout; private LinearLayout replayLayout; /** * 初始化播放完成的显示 */ private void initEndPage() { if (null == mActivity) return; LayoutInflater mLayoutInflater = LayoutInflater.from(mActivity); if (null == mLayoutInflater) return; endPageView = mLayoutInflater.inflate(R.layout.youku_play_end_page, null); if (null == endPageView) return; endBlur = (ImageView) endPageView.findViewById(R.id.iv_retry_blur); Glide.with(mActivity).load(videoBackground).asBitmap().placeholder(R.color.black).transform(new BlurTransformation(mActivity)).into(endBlur); nextLayout = (LinearLayout) endPageView.findViewById(R.id.ll_next_play); replayLayout = (LinearLayout) endPageView.findViewById(R.id.ll_replay); if (null != nextLayout) nextLayout.setOnClickListener(new OnClickListener() {// 播放下一集 @Override public void onClick(View v) { if (!Util.hasInternet()) return; playNextVideo(); hideEndPage(); restartFromComplete(); } }); if (null != replayLayout) replayLayout.setOnClickListener(new OnClickListener() {// 重播 @Override public void onClick(View v) { if (null != mMediaPlayerDelegate) { mMediaPlayerDelegate.release(); mMediaPlayerDelegate.setFirstUnloaded(); onVideoInfoGetted(); mMediaPlayerDelegate.start(); if (null != mMediaPlayerDelegate.videoInfo) mMediaPlayerDelegate.videoInfo .setProgress(0); mMediaPlayerDelegate.seekTo(0); hideEndPage(); restartFromComplete(); } } }); } private ImageView loadBlur; /** * 初始化加载页面 */ private void initLoadInfoPage() { if (null == mActivity) return; LayoutInflater mLayoutInflater = LayoutInflater.from(mActivity); if (null == mLayoutInflater) return; loadingInfoLayout = (RelativeLayout) mLayoutInflater.inflate( R.layout.youku_loading_info_page, null); loadBlur = (ImageView) loadingInfoLayout.findViewById(R.id.iv_blur); Glide.with(mActivity).load(videoBackground).asBitmap().placeholder(R.color.black).transform(new BlurTransformation(mActivity)).into(loadBlur); if (null == loadingInfoLayout) return; infoSeekBar = (SeekBar) loadingInfoLayout .findViewById(R.id.loading_info_seekbar); } private TextView playNameTextView; private SeekBar playLoadingBar; private TextView loadingTips; private ImageView seekBlur; private String TAG = "PluginSmallScreenPlay"; /** * 初始化seek的loading界面 */ private void initSeekLoading() { if (null == seekLoadingContainerView) return; playNameTextView = (TextView) seekLoadingContainerView .findViewById(R.id.detail_play_load_name); playLoadingBar = (SeekBar) seekLoadingContainerView .findViewById(R.id.loading_seekbar); loadingTips = (TextView) seekLoadingContainerView .findViewById(R.id.loading_tips); seekBlur = (ImageView) seekLoadingContainerView.findViewById(R.id.iv_blur); Glide.with(mActivity).load(videoBackground).asBitmap().placeholder(R.color.black).transform(new BlurTransformation(mActivity)).into(seekBlur); if (null != playLoadingBar) playLoadingBar .setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (fromUser) { //Track.setTrackPlayLoading(false); return; } else { seekBar.setProgress(progress); } } }); } private int seekcount = 0; public static final int SHOW_LOADING = 1111; public static final int HIDE_LOADING = 1112; /** * 显示加载中 */ public void showLoading(boolean showBlur) { Logger.e(TAG, "showLoading()"); if (mMediaPlayerDelegate.isADShowing) { Logger.e(TAG, "mMediaPlayerDelegate.isADShowing()"); return; } if (null != seekLoadingContainerView) { if (seekLoadingContainerView.getVisibility() == View.GONE) { if (null != seekLoadingContainerView) seekLoadingContainerView.setVisibility(View.VISIBLE); seekcount = 0; if (null != seekendHandler) seekHandler.sendEmptyMessageDelayed(SHOW_LOADING, 0); } } if (null != mMediaPlayerDelegate && null != mMediaPlayerDelegate.videoInfo && !DetailUtil.isEmpty(mMediaPlayerDelegate.videoInfo .getTitle())) if (null != playNameTextView) playNameTextView.setText(mMediaPlayerDelegate.videoInfo .getTitle()); if (null != mMediaPlayerDelegate && null != mMediaPlayerDelegate.videoInfo && firstLoaded) { if (null != loadingTips) loadingTips.setVisibility(View.GONE); if (null != playNameTextView) playNameTextView.setVisibility(View.GONE); if (null != seekLoadingContainerView && firstLoaded) { //seekLoadingContainerView.setBackgroundResource(0); } } else { if (null != loadingTips) { loadingTips.setText(getResources().getString( R.string.player_tip_loading)); loadingTips.setVisibility(View.VISIBLE); } if (null != playNameTextView) playNameTextView.setVisibility(View.VISIBLE); if (null != seekLoadingContainerView) { //seekLoadingContainerView.setBackgroundResource(R.drawable.bg_play); } } if (showBlur) { seekBlur.setVisibility(VISIBLE); } else { seekBlur.setVisibility(INVISIBLE); } } /** * 隐藏加载 */ public void hideLoading() { if (null == mActivity) return; ((Activity) mActivity).runOnUiThread(new Runnable() { @Override public void run() { if (null != seekLoadingContainerView) { seekLoadingContainerView.setVisibility(View.GONE); playLoadingBar.setProgress(0); } if (null != seekHandler) seekHandler.removeCallbacksAndMessages(null); } }); } private Handler seekHandler = new Handler() { @Override public void handleMessage(Message msg) { if (null == seekHandler || null == playLoadingBar) return; if (msg.what == SHOW_LOADING) { if (seekcount >= 95) { seekcount = 0; } seekcount += 2; seekHandler.sendEmptyMessageDelayed(SHOW_LOADING, 100); playLoadingBar.setProgress(seekcount); } else { seekHandler.removeMessages(SHOW_LOADING); if (seekcount >= 90) { if (null != playLoadingBar) playLoadingBar.setProgress(seekcount); if (null != seekLoadingContainerView) seekLoadingContainerView.setVisibility(View.GONE); return; } seekcount += 10; if (null != playLoadingBar) playLoadingBar.setProgress(seekcount); seekHandler.sendEmptyMessageDelayed(HIDE_LOADING, 50); } } }; private Handler seekendHandler = new Handler() { @Override public void handleMessage(Message msg) { if (seekcount < 100) { seekcount++; if (null != playLoadingBar) playLoadingBar.setProgress(seekcount); if (null != seekHandler) seekHandler.sendEmptyMessageDelayed(0, 10); } } }; /** * 显示加载的片名 */ private void showLoadinfo() { if (null != mActivity) ((Activity) mActivity).runOnUiThread(new Runnable() { @Override public void run() { if (null != interactFrameLayout) { interactFrameLayout.removeView(loadingInfoLayout); interactFrameLayout.addView(loadingInfoLayout); } if (null != loadInfoHandler) loadInfoHandler.sendEmptyMessage(0); } }); } /** * 隐藏加载的片名 */ private void hideLoadinfo() { if (null != mActivity) ((Activity) mActivity).runOnUiThread(new Runnable() { @Override public void run() { if (null != interactFrameLayout) interactFrameLayout.removeView(loadingInfoLayout); if (null != loadInfoHandler) loadInfoHandler.removeCallbacksAndMessages(null); } }); } private int loadinfoseek = 0; private boolean loadinfoseekend = false; private Handler loadInfoHandler = new Handler() { @Override public void handleMessage(Message msg) { if (loadinfoseek == 0) { loadinfoseekend = false; } if (loadinfoseek == 100) { loadinfoseekend = true; } if (!loadinfoseekend) loadinfoseek++; else { loadinfoseek--; } if (null != infoSeekBar) infoSeekBar.setProgress(loadinfoseek); if (null != loadInfoHandler) loadInfoHandler.sendEmptyMessageDelayed(0, 50); } }; private boolean autoPlay = true; /** * 设置是否自动播放 * * @param autoplay */ public void setAutoPlay(boolean autoplay) { autoPlay = autoplay; if (null == userPlayButton) return; if (!autoplay) { if (null != userPlayButton) userPlayButton.setVisibility(View.VISIBLE); disableController(); hideLoading(); } else if (null != userPlayButton) userPlayButton.setVisibility(View.GONE); } /** * 设置title的高度 * * @return */ public int getTitleHeight() { if (null == playTitleTextView) return 0; LinearLayout.LayoutParams mParams = (LinearLayout.LayoutParams) playTitleTextView .getLayoutParams(); if (null != mParams) return mParams.height; else return 0; } /** * 搜索进度 * * @param seekBar */ protected void seekChange(SeekBar seekBar) { if (null == mMediaPlayerDelegate) return; if (null != seekBar && seekBar.getProgress() == seekBar.getMax() && seekBar.getMax() > 0) { if (null != mMediaPlayerDelegate.videoInfo) mMediaPlayerDelegate.videoInfo .setProgress(mMediaPlayerDelegate.videoInfo .getDurationMills()); // complete = true; mMediaPlayerDelegate.onComplete(); // if (null != playHandler) { // playHandler.removeCallbacksAndMessages(null); // playHandler.sendEmptyMessage(MSG_COMPLETE); // } } else if (mMediaPlayerDelegate != null) { if (null != mMediaPlayerDelegate.videoInfo) mMediaPlayerDelegate.videoInfo.setProgress(seekBar .getProgress()); if (!mMediaPlayerDelegate.isPlaying()) { startPlay(); } mMediaPlayerDelegate.seekTo(seekBar.getProgress()); isLoading = true; videoBar.setEnabled(false); Logger.e("PlayFlow", "小播放器拖动seekto" + seekBar.getProgress()); } } /** * 开始播放 */ private void startPlay() { if (null == mMediaPlayerDelegate) return; if (mMediaPlayerDelegate.isADShowing) { mBasePlayerManager.startPlay(); } else { mMediaPlayerDelegate.start(); if (null != play_pauseButton) play_pauseButton .setImageResource(R.drawable.ic_pause); } } /** * 用户上次与控制界面交互的时间。 */ protected long lastInteractTime = 0; // seekbar OnSeekBarChangeListener mBarChangeListener = new OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (Util.hasInternet()) if (fromUser) { Logger.d(TAG, "onProgressChanged: " + progress); seekBar.setProgress(progress); currentTime.setText(PlayerUtil.getFormatTime(progress)); } if (mVideoStateCallback != null) { mVideoStateCallback.onProgressChanged(progress); } changePlayPause(); } @Override public void onStartTrackingTouch(SeekBar seekBar) { Logger.d(TAG, "onStartTrackingTouch"); } @Override public void onStopTrackingTouch(SeekBar seekBar) { Logger.d(TAG, "onStopTrackingTouch"); seekChange(seekBar); } }; private void changePlayPause() { if (null == play_pauseButton || null == mMediaPlayerDelegate) return; if (isLoading) { return; } if (mMediaPlayerDelegate.isPlaying()) play_pauseButton .setImageResource(R.drawable.ic_pause); else { play_pauseButton .setImageResource(R.drawable.ic_play); } } private OnClickListener userPlayClickListener = new OnClickListener() { @Override public void onClick(View v) { enableController(); if (null != mMediaPlayerDelegate) mMediaPlayerDelegate.start(); if (null != userPlayButton) userPlayButton.setVisibility(View.GONE); } }; private void hideShowControl() { if (null == controlLayout || null == play_pauseButton) return; if (controlLayout.getVisibility() == View.VISIBLE) { controlLayout.setVisibility(View.GONE); play_pauseButton.setVisibility(View.GONE); hideShowQualityContainer(true); } else { // Logger.d("sgh","plugin_small, from local: " + mMediaPlayerDelegate.videoInfo.getPlayType()); if (mMediaPlayerDelegate.videoInfo != null && StaticsUtil.PLAY_TYPE_LOCAL .equals(mMediaPlayerDelegate.videoInfo.getPlayType())) { full_screenButton.setVisibility(View.INVISIBLE); } else { full_screenButton.setVisibility(View.VISIBLE); } controlLayout.setVisibility(View.VISIBLE); play_pauseButton.setVisibility(View.VISIBLE); if (isLoading) { play_pauseButton .setImageResource(R.drawable.ic_pause); return; } if (null != mMediaPlayerDelegate && mMediaPlayerDelegate.isPlaying()) play_pauseButton .setImageResource(R.drawable.ic_pause); else { play_pauseButton .setImageResource(R.drawable.ic_play); } } } protected void onContainerClick() { if (null == controlLayout || null == titleLayoutPort) return; if (null != hideHandler) hideHandler.removeCallbacksAndMessages(null); if (controlLayout.getVisibility() == View.VISIBLE && titleLayoutPort.getVisibility() == View.INVISIBLE) { controlLayout.setVisibility(View.GONE); return; } if (controlLayout.getVisibility() == View.GONE && titleLayoutPort.getVisibility() == View.VISIBLE) { hideTitle(); return; } hideShowControl(); showHideTitle(); userAction(); return; } private void showHideTitle() { if (null == titleLayoutPort) return; if (titleLayoutPort.getVisibility() == View.VISIBLE) hideTitle(); else { showTitle(); } } private void hideTitle() { if (null != titleLayoutPort) titleLayoutPort.setVisibility(View.INVISIBLE); } private void showTitle() { if (null != titleLayoutPort) titleLayoutPort.setVisibility(View.VISIBLE); } private void hideControl() { if (null != controlLayout) { controlLayout.setVisibility(View.GONE); } hideShowQualityContainer(true); } private void showControl() { if (null != controlLayout) controlLayout.setVisibility(View.VISIBLE); if (null != mMediaPlayerDelegate && mMediaPlayerDelegate.isPlaying()) { play_pauseButton .setImageResource(R.drawable.ic_pause); } else { play_pauseButton.setVisibility(View.VISIBLE); play_pauseButton .setImageResource(R.drawable.ic_play); } } private Handler hideHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case HIDE_CONTROL: { if (null != controlLayout) controlLayout.setVisibility(View.GONE); if (null != play_pauseButton) play_pauseButton.setVisibility(View.GONE); break; } case HIDE_TITLE: { hideTitle(); break; } case HIDE_ALL: { hideTitle(); hideControl(); } default: break; } } }; /** * 用户操作后,延迟隐藏 */ private final int HIDE_CONTROL = 1001; private final int HIDE_TITLE = 1002; private final int HIDE_ALL = 1003; protected void userAction() { if (hideHandler != null) { hideHandler.removeCallbacksAndMessages(null); hideHandler.sendEmptyMessageDelayed(HIDE_ALL, 5000); } } public void setVideoImage(ImageResizer maker, String imageurl) { } protected int selectedFormat = Profile.FORMAT_FLV_HD; /** * 分享 */ public void share() { } public void clearPlayState() { if (null == mActivity) return; ((Activity) mActivity).runOnUiThread(new Runnable() { @Override public void run() { disableControllerHide(); if (null != playTitleTextView) playTitleTextView.setText(""); if (null != videoBar) { { videoBar.setProgress(0); videoBar.setMax(0); } } } }); } int Adaptation_lastPercent = 0; @Override public void onBufferingUpdateListener(final int percent) { if (null == mActivity) return; ((Activity) mActivity).runOnUiThread(new Runnable() { @Override public void run() { if (percent == 100) { videoBar.setSecondaryProgress(videoBar.getMax()); } if (percent == 100 && Adaptation_lastPercent != 100) { Adaptation_lastPercent = percent; return; } // hideRetryLayout(); if (null == mMediaPlayerDelegate || null == mMediaPlayerDelegate.videoInfo) return; int showSecond = (percent * mMediaPlayerDelegate.videoInfo .getDurationMills()) / 100; if (null != videoBar) videoBar.setSecondaryProgress(showSecond); } }); } @Override public void onCompletionListener() { if (null == mMediaPlayerDelegate || error) return; if (!pluginEnable) { return; } Logger.e("interactplugin", "playComplete"); ((Activity) mActivity).runOnUiThread(new Runnable() { @Override public void run() { if (null != videoBar) videoBar.setProgress(0); hideLoading(); if (null != mMediaPlayerDelegate) { // mMediaPlayerDelegate.onEnd(); // mMediaPlayerDelegate.setOrientionDisable(); } disableController(); playComplete(); } }); // if (null != playHandler) { // playHandler.removeCallbacksAndMessages(null); // playHandler.sendEmptyMessageDelayed(MSG_COMPLETE, 200); // } } private boolean error; @Override public boolean onErrorListener(int what, int extra) { Logger.e(TAG, "播放错误 onErrorListener-->" + what); // mMediaPlayerDelegate.mediaState = STATE.ERROR; error = true; if (null != mActivity && mActivity.isFinishing()) { return true; } mMediaPlayerDelegate.release(); if (null != mMediaPlayerDelegate) { Logger.e(TAG, "播放错误 onErrorListener--> #0"); if (mMediaPlayerDelegate.isFullScreen) { showAlert(); return false; } Logger.e(TAG, "播放错误 onErrorListener--> #1"); mMediaPlayerDelegate.isStartPlay = false; if (mMediaPlayerDelegate.isADShowing) { showAlert(); return true; } if (what == MPPErrorCode.MEDIA_INFO_DATA_SOURCE_ERROR) { showAlert(); return true; } if (what == MPPErrorCode.MEDIA_INFO_PLAYERROR) { showAlert(); return true; } if (what == MPPErrorCode.MEDIA_INFO_SEEK_ERROR) { showAlert(); return true; } if (what == MPPErrorCode.MEDIA_INFO_PREPARE_TIMEOUT_ERROR) { // Util.showTips(HttpRequestManager.STATE_ERROR_TIMEOUT); showAlert(); return true; } if (what == MPPErrorCode.MEDIA_INFO_SEEK_ERROR && mMediaPlayerDelegate.currentOriention == Orientation.VERTICAL) { playComplete(); return true; } if (null != mMediaPlayerDelegate.videoInfo && StaticsUtil.PLAY_TYPE_LOCAL .equals(mMediaPlayerDelegate.videoInfo.playType)) { if (what == MPPErrorCode.MEDIA_INFO_NETWORK_DISSCONNECTED) { playComplete(); } else if (what == MPPErrorCode.MEDIA_INFO_DATA_SOURCE_ERROR) { PlayerUtil.showTips("本地文件已损坏"); Track.onError(mActivity, mMediaPlayerDelegate.videoInfo.getVid(), Profile.GUID, mMediaPlayerDelegate.videoInfo.playType, PlayCode.VIDEO_NOT_EXIST, mMediaPlayerDelegate.videoInfo.mSource, mMediaPlayerDelegate.videoInfo.getCurrentQuality(), mMediaPlayerDelegate.videoInfo.getProgress(), mMediaPlayerDelegate.isFullScreen); } else if (what == MPPErrorCode.MEDIA_INFO_PREPARE_ERROR) { // Util.showTips("播放器内部出错"); mMediaPlayerDelegate.finishActivity(); } else if (what == MPPErrorCode.MEDIA_INFO_NETWORK_ERROR) { playComplete(); return true; } else if (what == MPPErrorCode.MEDIA_INFO_SEEK_ERROR) { playComplete(); return true; } else { // Util.showTips("本地文件已损坏"); } mMediaPlayerDelegate.setFirstUnloaded(); mMediaPlayerDelegate.release(); mMediaPlayerDelegate.finishActivity(); return true; } if (null != mMediaPlayerDelegate.videoInfo && StaticsUtil.PLAY_TYPE_NET .equals(mMediaPlayerDelegate.videoInfo.playType)) { if (what == MPPErrorCode.MEDIA_INFO_NETWORK_DISSCONNECTED) { // if (Util.hasInternet()) PlayerUtil.showTips(R.string.tips_not_responding); } else if (what == MPPErrorCode.MEDIA_INFO_DATA_SOURCE_ERROR) { // if (Util.hasInternet()) PlayerUtil.showTips(R.string.tips_not_responding); } else if (what == MPPErrorCode.MEDIA_INFO_PREPARE_TIMEOUT_ERROR) { // if (Util.hasInternet()) PlayerUtil.showTips(R.string.tips_not_responding); } } } showAlert(); return true; } public void showAlert() { Logger.e(TAG, "showAlert()--> #0"); if (null != mMediaPlayerDelegate && null != mMediaPlayerDelegate.videoInfo && mMediaPlayerDelegate.videoInfo.getPlayType() == StaticsUtil.PLAY_TYPE_LOCAL) { Logger.e(TAG, "showAlert()--> #1"); PlayerUtil.showTips(R.string.player_error_native); alertRetry(mActivity, R.string.player_error_native); } else { alertRetry(mActivity, R.string.Player_error_timeout); } } public void alertRetry(final Activity c, final int msgId) { if (c.isFinishing()) return; c.runOnUiThread(new Runnable() { @Override public void run() { hideLoading(); hideLoadinfo(); if (null != mMediaPlayerDelegate) mMediaPlayerDelegate.release(); ((Activity) mActivity).runOnUiThread(new Runnable() { @Override public void run() { disableController(); showRetryLayout(); } }); if (null != mMediaPlayerDelegate && !mMediaPlayerDelegate.isFullScreen) { mMediaPlayerDelegate.isStartPlay = false; if (null != mMediaPlayerDelegate.videoInfo && Orientation.VERTICAL .equals(mMediaPlayerDelegate.currentOriention)) mMediaPlayerDelegate.onVVEnd(); } } }); } @Override public void OnPreparedListener() { Logger.e(TAG, " OnPreparedListener()"); seekcount = 0; if (null != retryView) retryView.setVisibility(View.GONE); } @Override public void OnSeekCompleteListener() { isLoading = false; if (videoBar != null) { mActivity.runOnUiThread(new Runnable() { @Override public void run() { videoBar.setEnabled(true); } }); } } @Override public void OnVideoSizeChangedListener(int width, int height) { } @Override public void OnTimeoutListener() { if (null == mActivity) return; ((Activity) mActivity).runOnUiThread(new Runnable() { @Override public void run() { disableController(); showRetryLayout(); } }); Logger.e(TAG, " OnTimeoutListener()"); // if (null != playHandler) { // playHandler.removeCallbacksAndMessages(null); // playHandler.sendEmptyMessage(MSG_TIME_OUT); // } } private boolean firstLoaded = false; private boolean isLoading = false; @Override public void onLoadedListener() { Logger.e(TAG, " onLoadedListener()"); // if (mMediaPlayerDelegate.mediaState == STATE.COMPLETE // || mMediaPlayerDelegate.mediaState == STATE.ERROR) // return; isLoading = false; if (null == mMediaPlayerDelegate) return; if (mMediaPlayerDelegate.isComplete) return; if (!firstLoaded) { // 这个在onrealVideoStart的时候seek过一次了 // mMediaPlayerDelegate.seekToHistory(); firstLoaded = true; } error = false; if (null != seekHandler) seekHandler.removeCallbacksAndMessages(null); if (null != seekendHandler) seekendHandler.sendEmptyMessage(0); if (null != mActivity) { ((Activity) mActivity).runOnUiThread(new Runnable() { @Override public void run() { hideLoading(); hideLoadinfo(); hideRetryLayout(); } }); } if (null != mActivity && ((Activity) mActivity).isFinishing()) { hideLoading(); hideRetryLayout(); } /* * if (null != playHandler) { * playHandler.removeCallbacksAndMessages(null); * playHandler.sendEmptyMessageDelayed(MSG_LOADED, 500); } */ } /** * 显示重试 onerror/timeout/get play data failed */ private void showRetryLayout() { hideEndPage(); if (null != mActivity) { ((Activity) mActivity).runOnUiThread(new Runnable() { @Override public void run() { if (null != retryView) retryView.setVisibility(View.VISIBLE); } }); } } /** * 隐藏重试 */ private void hideRetryLayout() { if (null != mActivity) { ((Activity) mActivity).runOnUiThread(new Runnable() { @Override public void run() { if (null != retryView) retryView.setVisibility(View.GONE); } }); } } @Override public void onLoadingListener() { Logger.e(TAG, "onLoadingListener"); isLoading = true; if (error) { Logger.e(TAG, "null == error "); return; } if (null == mMediaPlayerDelegate || mMediaPlayerDelegate.isComplete || mMediaPlayerDelegate.isReleased) { Logger.e(TAG, "null == mMediaPlayerDelegate "); return; } if (!autoPlay) { Logger.e(TAG, "!autoPlay"); return; } if (null != mActivity) { ((Activity) mActivity).runOnUiThread(new Runnable() { @Override public void run() { hideEndPage(); showLoading(false); hideRetryLayout(); } }); } } /** * replay/retry/playnext */ private void restartFromComplete() { if (null != mMediaPlayerDelegate) { mMediaPlayerDelegate.clearEnd(); mMediaPlayerDelegate.setOrientionDisable(); } } protected void playComplete() { Logger.e(TAG, "playComplete()"); if (null == mMediaPlayerDelegate) return; if (!pluginEnable) { return; } clearPlayState(); if (null != mMediaPlayerDelegate) { // mMediaPlayerDelegate.onEnd(); // mMediaPlayerDelegate.setOrientionDisable(); } if (Profile.from == Profile.PHONE_BROWSER || Profile.from == Profile.PAD_BROWSER) { mMediaPlayerDelegate.finishActivity(); return; } mMediaPlayerDelegate.isStartPlay = false; Track.setplayCompleted(true); mMediaPlayerDelegate.isComplete = true; if (null != mMediaPlayerDelegate.videoInfo && mMediaPlayerDelegate.videoInfo.getPlayType() != StaticsUtil.PLAY_TYPE_LOCAL) { goEndPage(); if (mVideoStateCallback != null) { mVideoStateCallback.onVideoEnd(); } } else { mMediaPlayerDelegate.finishActivity(); } } // private static final int MSG_LOADING = 20131; // private static final int MSG_LOADED = 20132; // private static final int MSG_BUFFER_UPDATE = 20133; // private static final int MSG_ERROR = 20134; // private static final int MSG_TIME_OUT = 20135; // private static final int MSG_COMPLETE = 20136; // private static final int MSG_INFO_GETTING = 20137; private static final int MSG_INFO_GETTED = 20138; private static final int MSG_INFO_FAILED = 20139; // 处理播放相关消息 private Handler playHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { /* * case MSG_LOADING: { if (!autoPlay && null != mMediaPlayerDelegate * && !mMediaPlayerDelegate.changeAutoPlay) return; ((Activity) * mActivity).runOnUiThread(new Runnable() { * * @Override public void run() { showLoading(); } }); * * break; } */ /* * case MSG_LOADED: { ((Activity) mActivity).runOnUiThread(new * Runnable() { * * @Override public void run() { hideLoading(); enableController(); * hideRetryLayout(); if (count == 0) if (null != * mMediaPlayerDelegate && null != mMediaPlayerDelegate.videoInfo) { * videoBar.setMax(mMediaPlayerDelegate.videoInfo * .getDurationMills()); count++; if (null != playTitleTextView) * playTitleTextView .setText(mMediaPlayerDelegate.videoInfo * .getTitle()); } } }); * * break; } */ // case MSG_BUFFER_UPDATE: { // break; // } /* * case MSG_ERROR: { ((Activity) mActivity).runOnUiThread(new * Runnable() { * * @Override public void run() { disableController(); * showRetryLayout(); } }); break; } */ /* * case MSG_TIME_OUT: { ((Activity) mActivity).runOnUiThread(new * Runnable() { * * @Override public void run() { disableController(); * showRetryLayout(); } }); break; } */ /* * case MSG_COMPLETE: ((Activity) mActivity).runOnUiThread(new * Runnable() { * * @Override public void run() { if (null != videoBar) * videoBar.setProgress(0); hideLoading(); playComplete(); if (null * != mMediaPlayerDelegate) mMediaPlayerDelegate.onEnd(); * disableController(); } }); break; */ // case MSG_INFO_GETTING: { // break; // } // case MSG_INFO_GETTED: { // int i = 0; // // break; // } // case MSG_INFO_FAILED: { // // break; // } default: break; } } }; // public void hidePlayLoading() { // if (null != playLoading) // playLoading.setVisibility(View.GONE); // } /** * 播放下一集 */ private void playNextVideo() { restartFromComplete(); clearPlayState(); firstLoaded = false; isRealVideoStart = false; if (null == mMediaPlayerDelegate || null == mMediaPlayerDelegate.videoInfo) return; if (!Util.hasInternet()) { playLocalNext(); return; } // 本地播放询问是否在线 /* * if ( StaticsUtil.PLAY_TYPE_LOCAL * .equals(mMediaPlayerDelegate.videoInfo.getPlayType())) { IDownload * download = YoukuService.getService(IDownload.class); DownloadInfo * info = download.getDownloadInfo( * mMediaPlayerDelegate.videoInfo.getShowId(), * mMediaPlayerDelegate.videoInfo.getShow_videoseq() + 1); if (info != * null) { mMediaPlayerDelegate.playVideo(info.videoid, * StaticsUtil.PLAY_TYPE_LOCAL .equals(mMediaPlayerDelegate.videoInfo * .getPlayType())); return; } if (info == null) { * Util.showTips(R.string.download_no_network); // * mMediaPlayerDelegate.finishActivity(); return; } * mMediaPlayerDelegate.playVideo(info.videoid); return; } */ if (mMediaPlayerDelegate.videoInfo.getHaveNext() == 0) { goEndPage(); return; } mMediaPlayerDelegate .playVideo(mMediaPlayerDelegate.videoInfo.nextVideoId); } /** * 播放本地下一集 */ private void playLocalNext() { if (null == mMediaPlayerDelegate || null == mMediaPlayerDelegate.videoInfo) return; ICacheInfo download = IMediaPlayerDelegate.mICacheInfo; VideoCacheInfo info = download .getNextDownloadInfo(mMediaPlayerDelegate.videoInfo.getVid()); if (info == null) { mMediaPlayerDelegate.finishActivity(); return; } firstLoaded = false; isRealVideoStart = false; mMediaPlayerDelegate.playVideo(info.videoid, StaticsUtil.PLAY_TYPE_LOCAL .equals(mMediaPlayerDelegate.videoInfo.getPlayType())); } // 只有重播页 private void goReplayPage() { Logger.e(TAG, "goReplayPage"); firstLoaded = false; isRealVideoStart = false; if (null != mActivity) ((Activity) mActivity).runOnUiThread(new Runnable() { @Override public void run() { if (null != interactFrameLayout && null != endPageView) { interactFrameLayout.removeView(endPageView); interactFrameLayout.addView(endPageView); LinearLayout nextLayout = (LinearLayout) endPageView .findViewById(R.id.ll_next_play); if (null != nextLayout) nextLayout.setVisibility(View.GONE); } } }); } private void hideEndPage() { if (null != mActivity) ((Activity) mActivity).runOnUiThread(new Runnable() { @Override public void run() { if (null != interactFrameLayout && null != endPageView) { interactFrameLayout.removeView(endPageView); LinearLayout nextLayout = (LinearLayout) endPageView .findViewById(R.id.ll_next_play); if (null != nextLayout) nextLayout.setVisibility(View.VISIBLE); } } }); } // 重播+下一集 private void goReplayNextPage() { firstLoaded = false; isRealVideoStart = false; if (null != mActivity) ((Activity) mActivity).runOnUiThread(new Runnable() { @Override public void run() { if (null != interactFrameLayout && null != endPageView) { interactFrameLayout.removeView(endPageView); interactFrameLayout.addView(endPageView); } } }); } /** * 去播放结束页 */ private void goEndPage() { firstLoaded = false; isRealVideoStart = false; hideLoadinfo(); hideLoading(); hideRetryLayout(); if (null != mMediaPlayerDelegate && null != mMediaPlayerDelegate.videoInfo) { mMediaPlayerDelegate.release(); mMediaPlayerDelegate.setFirstUnloaded(); if (mMediaPlayerDelegate.videoInfo.getHaveNext() == 1) { goReplayNextPage(); } else { goReplayPage(); } } } protected void onCurrentPostionUpdate(int currentPostion) { // Logger.e(tag, "onCurrentPostionUpdate"+currentPostion); enableController(); if (null != userPlayButton) userPlayButton.setVisibility(View.GONE); if (null == mMediaPlayerDelegate || mMediaPlayerDelegate.videoInfo == null || mMediaPlayerDelegate.isADShowing || mMediaPlayerDelegate.isReleased) return; if (Profile.isSkipHeadAndTail() && !mMediaPlayerDelegate.isFullScreen) { if (mMediaPlayerDelegate.videoInfo.isHasHead()) { int headPosition = mMediaPlayerDelegate.videoInfo .getHeadPosition(); if (currentPostion < headPosition - 15000) { // Util.showTips("为您跳过片头"); if (null != videoBar) videoBar.setProgress(headPosition); mMediaPlayerDelegate.videoInfo.setProgress(headPosition); mMediaPlayerDelegate.seekTo(headPosition); return; } } if (mMediaPlayerDelegate.videoInfo.isHasTail()) { int tailPosition = mMediaPlayerDelegate.videoInfo .getTailPosition(); if ((tailPosition - currentPostion) <= 2000) { // Util.showTips("为您跳过片尾"); mMediaPlayerDelegate.videoInfo .setProgress(tailPosition - 5000); playComplete(); return; } } } currentTime.setText(PlayerUtil.getFormatTime(currentPostion)); // mMediaPlayerDelegate.mediaState = STATE.PLAYING; if (null != videoBar) videoBar.setProgress(currentPostion); mMediaPlayerDelegate.videoInfo.setProgress(currentPostion); } @Override public void OnCurrentPositionChangeListener(int currentPosition) { if (null != videoBar) videoBar.setProgress(currentPosition); /* 片头片尾 */ onCurrentPostionUpdate(currentPosition); } private Drawable playDrawable; public void setPlayImg(Drawable mDrawable) { playDrawable = mDrawable; } @Override public void newVideo() { } @Override public void onVolumnUp() { if (null != mActivity) { AudioManager audioMa = (AudioManager) mActivity .getSystemService(Context.AUDIO_SERVICE); if (null != mMediaPlayerDelegate && mMediaPlayerDelegate.isFullScreen) { audioMa.adjustVolume(AudioManager.ADJUST_SAME, AudioManager.FLAG_PLAY_SOUND); } else { audioMa.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_SAME, AudioManager.FX_FOCUS_NAVIGATION_UP); } } } @Override public void onVolumnDown() { if (null != mActivity) { AudioManager audioMa = (AudioManager) mActivity .getSystemService(mActivity.AUDIO_SERVICE); if (null != mMediaPlayerDelegate && mMediaPlayerDelegate.isFullScreen) { audioMa.adjustVolume(AudioManager.ADJUST_SAME, AudioManager.FLAG_PLAY_SOUND); } else { audioMa.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_SAME, AudioManager.FX_FOCUS_NAVIGATION_UP); } } } @Override public void onMute(boolean mute) { } @Override public void onVideoChange() { firstLoaded = false; } /** * 设置viwe是否可点击 * * @param state * @param view */ private void setClickable(boolean state, View view) { if (null == view) return; view.setClickable(state); } /** * 禁用控制并隐藏 */ private void disableController() { if (null != controlLayout) controlLayout.setVisibility(View.GONE); setClickable(false, play_pauseButton); setClickable(false, videoBar); setClickable(false, mContainerLayout); setClickable(false, full_screenButton); setClickable(false, videoBar); hideTitle(); } /** * 禁用控制 */ private void disableControllerHide() { setClickable(false, play_pauseButton); setClickable(false, videoBar); setClickable(false, mContainerLayout); setClickable(false, full_screenButton); setClickable(false, videoBar); } /** * 启用控制 */ private void enableController() { setClickable(true, play_pauseButton); setClickable(true, videoBar); setClickable(true, mContainerLayout); setClickable(true, full_screenButton); setClickable(true, videoBar); } @Override public void onVideoInfoGetting() { hideRetryLayout(); playANewVideo(); Logger.e("interactplugin", "onVideoInfoGetting"); initSeekLoading(); // showLoadinfo(); showLoadinfo(); disableController(); } private void playANewVideo() { firstLoaded = false; isRealVideoStart = false; if (null != userPlayButton) userPlayButton.setVisibility(View.GONE); clearPlayState(); hideEndPage(); disableController(); restartFromComplete(); } @Override public void onVideoInfoGetted() { firstLoaded = false; isRealVideoStart = false; Logger.e("interactplugin", "onVideoInfoGetted"); hideLoadinfo(); showLoading(true); if (null != mMediaPlayerDelegate && mMediaPlayerDelegate.videoInfo != null) video_id = mMediaPlayerDelegate.videoInfo.getVid(); infoFail = false; disableController(); mActivity.runOnUiThread(new Runnable() { @Override public void run() { if (null != mMediaPlayerDelegate && null != mMediaPlayerDelegate.videoInfo) { if (null != videoBar) { int duration = mMediaPlayerDelegate.videoInfo .getDurationMills(); videoBar.setMax(duration); totalTime.setText(PlayerUtil.getFormatTime(duration)); } if (null != playTitleTextView) playTitleTextView .setText(mMediaPlayerDelegate.videoInfo .getTitle()); } } }); } @Override public void onVideoInfoGetFail(boolean needRetry) { Logger.e("interactplugin", "onVideoInfoGetFail"); infoFail = true; if (null != mActivity) ((Activity) mActivity).runOnUiThread(new Runnable() { @Override public void run() { showRetryLayout(); hideLoadinfo(); } }); // if (null != playHandler) // playHandler.sendEmptyMessage(MSG_INFO_FAILED); } private boolean infoFail = false; @Override public void setVisible(boolean visible) { if (null == containerView) return; if (visible) { containerView.setVisibility(View.VISIBLE); } else { containerView.setVisibility(View.GONE); } } @Override public void onNotifyChangeVideoQuality() { } boolean isBack = false; public void back() { if (firstLoaded) { isBack = true; showTitle(); showControl(); userAction(); } } public void onPluginAdded() { super.onPluginAdded(); Logger.e(TAG, "onPluginAdded()"); if (null != mMediaPlayerDelegate && !mMediaPlayerDelegate.onChangeOrient) { Logger.e(TAG, "onChangeOrient()"); // if (null != black && isRealVideoStart) // black.setBackgroundResource(R.color.black); mMediaPlayerDelegate.onChangeOrient = false; } else { Logger.e(TAG, "black.setBackgroundDrawable(null)()"); // if (null != black) // black.setBackgroundDrawable(null); } try { } catch (Exception e) { e.printStackTrace(); } changePlayPause(); if (mMediaPlayerDelegate.isFullScreen) { full_screenButton.setImageResource(R.drawable.ic_video_small); } else { full_screenButton .setImageResource(R.drawable.ic_video_full); } } public void set3GTips() { // if (null != seekLoadingContainerView) // seekLoadingContainerView.setVisibility(View.VISIBLE); // if (null != loadingTips) { // loadingTips.setVisibility(View.VISIBLE); // loadingTips.setText(getResources().getString( // R.string.detail_3g_tips)); // } } private TextView mCountUpdateTextView; private boolean isRealVideoStart = false; protected void startCache() { if (IMediaPlayerDelegate.mIUserInfo == null || !IMediaPlayerDelegate.mIUserInfo.isLogin()) { // Util.showToast("请先登录"); return; } } private boolean changeQuality(VideoQuality videoQuality) { if (videoQuality == mCurQuality) { return true; } int result = ApiManager.getInstance().changeVideoQuality(videoQuality, mBasePlayerManager); if (result != 0) { mCurQuality = videoQuality; video_quality.setQuality(mCurQuality); return true; } else { return false; } } @Override public void onRealVideoStart() { isRealVideoStart = true; isLoading = false; enableController(); if (mVideoStateCallback != null) { int duration = mMediaPlayerDelegate.videoInfo.getDurationMills(); mVideoStateCallback.onVideoStart(duration); } int currentQuality = mMediaPlayerDelegate.videoInfo.getCurrentQuality(); List<VideoQuality> videoQualityList = ApiManager.getInstance().getSupportedVideoQuality(mBasePlayerManager); if (videoQualityList.size() > 1) { video_quality_container.removeAllViews(); for (int i = 0; i < videoQualityList.size(); i++) { VideoQuality quality = videoQualityList.get(i); final VideoQualityTextView qualityTextView = new VideoQualityTextView(mActivity); if (quality.ordinal() == currentQuality) { mCurQuality = quality; qualityTextView.setTextColor(R.color.white); } if (i == 0) { qualityTextView.setDividerVisibility(false); } qualityTextView.setQuality(quality); qualityTextView.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { VideoQuality selectQuality = qualityTextView.getQuality(); changeQuality(selectQuality); hideShowQualityContainer(true); } }); video_quality_container.addView(qualityTextView); } video_quality.setQuality(mCurQuality); video_quality.setDividerVisibility(false); } else { video_quality.setVisibility(GONE); hideShowQualityContainer(true); } } @Override public void onUp() { } @Override public void onDown() { } @Override public void onFavor() { } @Override public void onUnFavor() { } @Override public void onADplaying() { } @Override public void onRealVideoStarted() { } @Override public void onStart() { } @Override public void onClearUpDownFav() { } @Override public void onPause() { } @Override public void onPlayNoRightVideo(GoplayException e) { // TODO Auto-generated method stub } @Override public void onPlayReleateNoRightVideo() { // TODO Auto-generated method stub } }