diff --git a/app/src/main/java/fm/jiecao/jiecaovideoplayer/MainActivity.java b/app/src/main/java/fm/jiecao/jiecaovideoplayer/MainActivity.java index 0ef599fb8..39900af17 100644 --- a/app/src/main/java/fm/jiecao/jiecaovideoplayer/MainActivity.java +++ b/app/src/main/java/fm/jiecao/jiecaovideoplayer/MainActivity.java @@ -2,8 +2,11 @@ import android.os.Bundle; import android.support.v7.app.AppCompatActivity; +import android.util.Log; +import de.greenrobot.event.EventBus; import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer; +import fm.jiecao.jcvideoplayer_lib.VideoEvents; public class MainActivity extends AppCompatActivity { JCVideoPlayer videoController1, videoController2; @@ -23,6 +26,45 @@ protected void onCreate(Bundle savedInstanceState) { videoController2.setUp("http://2449.vod.myqcloud.com/2449_a80a72289b1211e5a28d6dc08193c3c9.f20.mp4", "http://cos.myqcloud.com/1000264/qcloud_video_attachment/842646334/vod_cover/cover1449294460.jpg", "嫂子还摸我", false, false); + EventBus.getDefault().register(this); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + EventBus.getDefault().unregister(this); + } + public void onEventMainThread(VideoEvents event) { + if (event.type == VideoEvents.POINT_START_ICON) { + Log.i("Video Event", "POINT_START_ICON"); + } else if (event.type == VideoEvents.POINT_START_THUMB) { + Log.i("Video Event", "POINT_START_THUMB"); + } else if (event.type == VideoEvents.POINT_STOP) { + Log.i("Video Event", "POINT_STOP"); + } else if (event.type == VideoEvents.POINT_STOP_FULLSCREEN) { + Log.i("Video Event", "POINT_STOP_FULLSCREEN"); + } else if (event.type == VideoEvents.POINT_RESUME) { + Log.i("Video Event", "POINT_RESUME"); + } else if (event.type == VideoEvents.POINT_RESUME_FULLSCREEN) { + Log.i("Video Event", "POINT_RESUME_FULLSCREEN"); + } else if (event.type == VideoEvents.POINT_CLICK_BLANK) { + Log.i("Video Event", "POINT_CLICK_BLANK"); + } else if (event.type == VideoEvents.POINT_CLICK_BLANK_FULLSCREEN) { + Log.i("Video Event", "POINT_CLICK_BLANK_FULLSCREEN"); + } else if (event.type == VideoEvents.POINT_CLICK_SEEKBAR) { + Log.i("Video Event", "POINT_CLICK_SEEKBAR"); + } else if (event.type == VideoEvents.POINT_CLICK_SEEKBAR_FULLSCREEN) { + Log.i("Video Event", "POINT_CLICK_SEEKBAR_FULLSCREEN"); + } else if (event.type == VideoEvents.POINT_AUTO_COMPLETE) { + Log.i("Video Event", "POINT_AUTO_COMPLETE"); + } else if (event.type == VideoEvents.POINT_AUTO_COMPLETE_FULLSCREEN) { + Log.i("Video Event", "POINT_AUTO_COMPLETE_FULLSCREEN"); + } else if (event.type == VideoEvents.POINT_ENTER_FULLSCREEN) { + Log.i("Video Event", "POINT_ENTER_FULLSCREEN"); + } else if (event.type == VideoEvents.POINT_QUIT_FULLSCREEN) { + Log.i("Video Event", "POINT_QUIT_FULLSCREEN"); + } +// Log.i("Video Event", "type : " + event.type); } } diff --git a/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/FullScreenActivity.java b/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/FullScreenActivity.java index fd87d9ce7..bce70d114 100644 --- a/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/FullScreenActivity.java +++ b/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/FullScreenActivity.java @@ -37,6 +37,7 @@ public static void toActivity(Context context, int state, String url, String thu public static String URL; public static String TITLE; public static String THUMB; + public static boolean manualQuit = false; @Override protected void onCreate(Bundle savedInstanceState) { @@ -46,9 +47,10 @@ protected void onCreate(Bundle savedInstanceState) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); setContentView(R.layout.activity_fullscreen); jcVideoPlayer = (JCVideoPlayer) findViewById(R.id.jcvideoplayer); - jcVideoPlayer.setUp(URL, THUMB, TITLE, true); + jcVideoPlayer.setUpForFullscreen(URL, THUMB, TITLE, true); jcVideoPlayer.setState(STATE); JCMediaPlayer.intance().setUuid(jcVideoPlayer.uuid); + manualQuit = false; } public void onEventMainThread(VideoEvents videoEvents) { @@ -62,6 +64,15 @@ public void onBackPressed() { jcVideoPlayer.quitFullScreen(); } + @Override + protected void onPause() { + super.onPause(); + if (!manualQuit) { + JCVideoPlayer.releaseAllVideo(); + finish(); + } + } + @Override protected void onStart() { super.onStart(); @@ -73,4 +84,5 @@ protected void onStop() { super.onStop(); EventBus.getDefault().unregister(this); } + } diff --git a/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCMediaPlayer.java b/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCMediaPlayer.java index 9cfaf8894..8463dee5a 100644 --- a/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCMediaPlayer.java +++ b/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCMediaPlayer.java @@ -83,7 +83,7 @@ public boolean onError(MediaPlayer mp, int what, int extra) { public void setUuid(String uuid) { Log.i("uuid::", "0 " + uuid + " prevuuid " + prev_uuid); - backUpUuid(); +// backUpUuid(); this.uuid = uuid; Log.i("uuid::", "1 " + uuid + " prevuuid " + prev_uuid); } @@ -94,6 +94,7 @@ public void backUpUuid() { public void revertUuid() { this.uuid = this.prev_uuid; + this.prev_uuid = ""; Log.i("uuid::", "2 " + uuid + " prevuuid " + prev_uuid); } diff --git a/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCVideoPlayer.java b/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCVideoPlayer.java index 73c24db73..91cae7c30 100644 --- a/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCVideoPlayer.java +++ b/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCVideoPlayer.java @@ -14,13 +14,14 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ProgressBar; +import android.widget.RelativeLayout; import android.widget.SeekBar; import android.widget.TextView; -import android.widget.Toast; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.assist.ImageScaleType; +import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer; import java.util.Formatter; import java.util.Locale; @@ -37,7 +38,7 @@ public class JCVideoPlayer extends FrameLayout implements View.OnClickListener, SeekBar.OnSeekBarChangeListener, SurfaceHolder.Callback { ImageView ivStart; - ProgressBar pbLoading; + ProgressBar pbLoading, pbBottom; ImageView ivFullScreen; SeekBar sbProgress; TextView tvTimeCurrent, tvTimeTotal; @@ -46,9 +47,9 @@ public class JCVideoPlayer extends FrameLayout implements View.OnClickListener, LinearLayout llBottomControl; TextView tvTitle; ImageView ivThumb; - LinearLayout rlParent; + RelativeLayout rlParent; LinearLayout llTitleContainer; - + ImageView ivCover; //这个组件的四个属性 public String url; @@ -73,6 +74,8 @@ public class JCVideoPlayer extends FrameLayout implements View.OnClickListener, private OnTouchListener mSeekbarOnTouchListener; private static Timer mDismissControlViewTimer; private static Timer mUpdateBufferTimer; + private static long clickfullscreentime; + private static final int FULL_SCREEN_NORMAL_DELAY = 5000; public JCVideoPlayer(Context context, AttributeSet attrs) { super(context, attrs); @@ -84,6 +87,7 @@ private void init(Context context) { View.inflate(context, R.layout.video_control_view, this); ivStart = (ImageView) findViewById(R.id.start); pbLoading = (ProgressBar) findViewById(R.id.loading); + pbBottom = (ProgressBar) findViewById(R.id.bottom_progressbar); ivFullScreen = (ImageView) findViewById(R.id.fullscreen); sbProgress = (SeekBar) findViewById(R.id.progress); tvTimeCurrent = (TextView) findViewById(R.id.current); @@ -92,8 +96,9 @@ private void init(Context context) { llBottomControl = (LinearLayout) findViewById(R.id.bottom_control); tvTitle = (TextView) findViewById(R.id.title); ivThumb = (ImageView) findViewById(R.id.thumb); - rlParent = (LinearLayout) findViewById(R.id.parentview); + rlParent = (RelativeLayout) findViewById(R.id.parentview); llTitleContainer = (LinearLayout) findViewById(R.id.title_container); + ivCover = (ImageView) findViewById(R.id.cover); // surfaceView.setZOrderOnTop(true); // surfaceView.setBackgroundColor(R.color.black_a10_color); @@ -124,6 +129,7 @@ public boolean onTouch(View v, MotionEvent event) { break; case MotionEvent.ACTION_UP: startDismissControlViewTimer(); + sendPointEvent(ifFullScreen ? VideoEvents.POINT_CLICK_SEEKBAR_FULLSCREEN : VideoEvents.POINT_CLICK_SEEKBAR); break; } @@ -148,6 +154,7 @@ public void setUp(String url, String thumb, String title, boolean ifFullScreen, * 设置属性 */ public void setUp(String url, String thumb, String title, boolean ifFullScreen) { + if ((System.currentTimeMillis() - clickfullscreentime) < FULL_SCREEN_NORMAL_DELAY) return; this.url = url; this.thumb = thumb; this.title = title; @@ -160,16 +167,32 @@ public void setUp(String url, String thumb, String title, boolean ifFullScreen) tvTitle.setText(title); ivThumb.setVisibility(View.VISIBLE); ivStart.setVisibility(View.VISIBLE); - llBottomControl.setVisibility(View.GONE); - -// ivThumb.setImageResource(R.drawable.default_thum); -// ivThumb.setBackgroundColor(getResources().getColor(R.color.white_fafaf8)); -// ivThumb.setScaleType(ImageView.ScaleType.FIT_XY); + llBottomControl.setVisibility(View.INVISIBLE); + pbBottom.setVisibility(View.VISIBLE); ImageLoader.getInstance().displayImage(thumb, ivThumb, getDefaultDisplayImageOption()); CURRENT_STATE = CURRENT_STATE_NORMAL; setTitleVisibility(View.VISIBLE); } + public void setUpForFullscreen(String url, String thumb, String title, boolean ifFullScreen) { + this.url = url; + this.thumb = thumb; + this.title = title; + this.ifFullScreen = ifFullScreen; + if (ifFullScreen) { + ivFullScreen.setImageResource(R.drawable.shrink_video); + } else { + ivFullScreen.setImageResource(R.drawable.enlarge_video); + } + tvTitle.setText(title); + ivThumb.setVisibility(View.VISIBLE); + ivStart.setVisibility(View.VISIBLE); + llBottomControl.setVisibility(View.INVISIBLE); + pbBottom.setVisibility(View.VISIBLE); + CURRENT_STATE = CURRENT_STATE_NORMAL; + setTitleVisibility(View.VISIBLE); + } + public void setState(int state) { this.CURRENT_STATE = state; //全屏或取消全屏时继续原来的状态 @@ -177,19 +200,24 @@ public void setState(int state) { ivStart.setVisibility(View.INVISIBLE); ivThumb.setVisibility(View.INVISIBLE); pbLoading.setVisibility(View.VISIBLE); + ivCover.setVisibility(View.VISIBLE); setProgressAndTime(0, 0, 0, 0); } else if (CURRENT_STATE == CURRENT_STATE_PLAYING) { updateStartImage(); ivStart.setVisibility(View.VISIBLE); llBottomControl.setVisibility(View.VISIBLE); + pbBottom.setVisibility(View.INVISIBLE); setTitleVisibility(View.VISIBLE); ivThumb.setVisibility(View.INVISIBLE); + ivCover.setVisibility(View.INVISIBLE); } else if (CURRENT_STATE == CURRENT_STATE_PAUSE) { updateStartImage(); ivStart.setVisibility(View.VISIBLE); llBottomControl.setVisibility(View.VISIBLE); + pbBottom.setVisibility(View.INVISIBLE); setTitleVisibility(View.VISIBLE); ivThumb.setVisibility(View.INVISIBLE); + ivCover.setVisibility(View.INVISIBLE); } else if (CURRENT_STATE == CURRENT_STATE_NORMAL) { if (uuid.equals(JCMediaPlayer.intance().uuid)) { JCMediaPlayer.intance().mediaPlayer.stop(); @@ -197,6 +225,8 @@ public void setState(int state) { ivStart.setVisibility(View.VISIBLE); ivThumb.setVisibility(View.VISIBLE); llBottomControl.setVisibility(View.INVISIBLE); + pbBottom.setVisibility(View.VISIBLE); + ivCover.setVisibility(View.VISIBLE); updateStartImage(); cancelDismissControlViewTimer(); cancelBufferTimer(); @@ -248,7 +278,6 @@ public void run() { VideoEvents videoEvents = new VideoEvents().setType(VideoEvents.VE_MEDIAPLAYER_BUFFERUPDATE); videoEvents.obj = -1; EventBus.getDefault().post(videoEvents); - Log.i("update buffer", "updatebuffer:: "); } }); } @@ -268,6 +297,7 @@ private void cancelBufferTimer() { private void dismissControlView() { llBottomControl.setVisibility(View.INVISIBLE); + pbBottom.setVisibility(View.VISIBLE); setTitleVisibility(View.INVISIBLE); ivStart.setVisibility(View.INVISIBLE); pbLoading.setVisibility(View.INVISIBLE); @@ -304,6 +334,7 @@ public void onClick(View v) { ivStart.setVisibility(View.INVISIBLE); ivThumb.setVisibility(View.INVISIBLE); pbLoading.setVisibility(View.VISIBLE); + ivCover.setVisibility(View.VISIBLE); setProgressAndTime(0, 0, 0, 0); JCMediaPlayer.intance().prepareToPlay(getContext(), url); JCMediaPlayer.intance().setUuid(uuid); @@ -313,20 +344,26 @@ public void onClick(View v) { EventBus.getDefault().post(videoEvents); surfaceView.requestLayout(); setKeepScreenOn(true); + + sendPointEvent(i == R.id.start ? VideoEvents.POINT_START_ICON : VideoEvents.POINT_START_THUMB); } else if (CURRENT_STATE == CURRENT_STATE_PLAYING) { CURRENT_STATE = CURRENT_STATE_PAUSE; ivThumb.setVisibility(View.INVISIBLE); + ivCover.setVisibility(View.INVISIBLE); JCMediaPlayer.intance().mediaPlayer.pause(); updateStartImage(); setKeepScreenOn(false); cancelDismissControlViewTimer(); + sendPointEvent(ifFullScreen ? VideoEvents.POINT_STOP_FULLSCREEN : VideoEvents.POINT_STOP); } else if (CURRENT_STATE == CURRENT_STATE_PAUSE) { CURRENT_STATE = CURRENT_STATE_PLAYING; ivThumb.setVisibility(View.INVISIBLE); + ivCover.setVisibility(View.INVISIBLE); JCMediaPlayer.intance().mediaPlayer.start(); updateStartImage(); setKeepScreenOn(true); startDismissControlViewTimer(); + sendPointEvent(ifFullScreen ? VideoEvents.POINT_RESUME_FULLSCREEN : VideoEvents.POINT_RESUME); } } else if (i == R.id.fullscreen) { @@ -335,15 +372,20 @@ public void onClick(View v) { //退出全屏 quitFullScreen(); } else { + JCMediaPlayer.intance().mediaPlayer.pause(); JCMediaPlayer.intance().mediaPlayer.setDisplay(null); + JCMediaPlayer.intance().backUpUuid(); isClickFullscreen = true; FullScreenActivity.toActivity(getContext(), CURRENT_STATE, url, thumb, title); + sendPointEvent(VideoEvents.POINT_ENTER_FULLSCREEN); } + clickfullscreentime = System.currentTimeMillis(); } else if (i == R.id.surfaceView || i == R.id.parentview) { toggleClear(); startDismissControlViewTimer(); + sendPointEvent(ifFullScreen ? VideoEvents.POINT_CLICK_BLANK_FULLSCREEN : VideoEvents.POINT_CLICK_BLANK); } else if (i == R.id.bottom_control) { - JCMediaPlayer.intance().mediaPlayer.setDisplay(surfaceHolder); +// JCMediaPlayer.intance().mediaPlayer.setDisplay(surfaceHolder); } } @@ -351,9 +393,11 @@ private void toggleClear() { if (CURRENT_STATE == CURRENT_STATE_PREPAREING) { if (llBottomControl.getVisibility() == View.VISIBLE) { llBottomControl.setVisibility(View.INVISIBLE); + pbBottom.setVisibility(View.VISIBLE); setTitleVisibility(View.INVISIBLE); } else { llBottomControl.setVisibility(View.VISIBLE); + pbBottom.setVisibility(View.INVISIBLE); setTitleVisibility(View.VISIBLE); } ivStart.setVisibility(View.INVISIBLE); @@ -361,24 +405,28 @@ private void toggleClear() { } else if (CURRENT_STATE == CURRENT_STATE_PLAYING) { if (llBottomControl.getVisibility() == View.VISIBLE) { llBottomControl.setVisibility(View.INVISIBLE); + pbBottom.setVisibility(View.VISIBLE); setTitleVisibility(View.INVISIBLE); ivStart.setVisibility(View.INVISIBLE); } else { updateStartImage(); ivStart.setVisibility(View.VISIBLE); llBottomControl.setVisibility(View.VISIBLE); + pbBottom.setVisibility(View.INVISIBLE); setTitleVisibility(View.VISIBLE); } pbLoading.setVisibility(View.INVISIBLE); } else if (CURRENT_STATE == CURRENT_STATE_PAUSE) { if (llBottomControl.getVisibility() == View.VISIBLE) { llBottomControl.setVisibility(View.INVISIBLE); + pbBottom.setVisibility(View.VISIBLE); setTitleVisibility(View.INVISIBLE); ivStart.setVisibility(View.INVISIBLE); } else { updateStartImage(); ivStart.setVisibility(View.VISIBLE); llBottomControl.setVisibility(View.VISIBLE); + pbBottom.setVisibility(View.INVISIBLE); setTitleVisibility(View.VISIBLE); } pbLoading.setVisibility(View.INVISIBLE); @@ -386,11 +434,15 @@ private void toggleClear() { } public void quitFullScreen() { + FullScreenActivity.manualQuit = true; + clickfullscreentime = System.currentTimeMillis(); + JCMediaPlayer.intance().mediaPlayer.pause(); JCMediaPlayer.intance().mediaPlayer.setDisplay(null); JCMediaPlayer.intance().revertUuid(); VideoEvents videoEvents = new VideoEvents().setType(VideoEvents.VE_SURFACEHOLDER_FINISH_FULLSCREEN); videoEvents.obj = CURRENT_STATE; EventBus.getDefault().post(videoEvents); + sendPointEvent(VideoEvents.POINT_QUIT_FULLSCREEN); } private void updateStartImage() { @@ -411,8 +463,10 @@ private void setProgressAndTimeFromMediaPlayer(int secProgress) { private void setProgressAndTime(int progress, int secProgress, int currentTime, int totalTime) { sbProgress.setProgress(progress); + pbBottom.setProgress(progress); if (secProgress >= 0) { sbProgress.setSecondaryProgress(secProgress); + pbBottom.setSecondaryProgress(secProgress); } tvTimeCurrent.setText(stringForTime(currentTime)); tvTimeTotal.setText(stringForTime(totalTime)); @@ -429,8 +483,8 @@ public void onEventMainThread(VideoEvents videoEvents) { //TODO 这里要将背景置黑, // surfaceView.setBackgroundColor(R.color.black_a10_color); CURRENT_STATE = CURRENT_STATE_NORMAL; -// } setKeepScreenOn(false); + sendPointEvent(ifFullScreen ? VideoEvents.POINT_AUTO_COMPLETE_FULLSCREEN : VideoEvents.POINT_AUTO_COMPLETE); } if (!JCMediaPlayer.intance().uuid.equals(uuid)) { if (videoEvents.type == VideoEvents.VE_START) { @@ -441,10 +495,13 @@ public void onEventMainThread(VideoEvents videoEvents) { return; } if (videoEvents.type == VideoEvents.VE_PREPARED) { + if (CURRENT_STATE != CURRENT_STATE_PREPAREING) return; JCMediaPlayer.intance().mediaPlayer.setDisplay(surfaceHolder); JCMediaPlayer.intance().mediaPlayer.start(); pbLoading.setVisibility(View.INVISIBLE); + ivCover.setVisibility(View.INVISIBLE); llBottomControl.setVisibility(View.VISIBLE); + pbBottom.setVisibility(View.INVISIBLE); CURRENT_STATE = CURRENT_STATE_PLAYING; startDismissControlViewTimer(); startUpdateBufferTimer(); @@ -467,6 +524,7 @@ public void onEventMainThread(VideoEvents videoEvents) { JCMediaPlayer.intance().mediaPlayer.setDisplay(surfaceHolder); stopToFullscreenOrQuitFullscreenShowDisplay(); isFromFullScreenBackHere = false; + startDismissControlViewTimer(); } } else if (videoEvents.type == VideoEvents.VE_MEDIAPLAYER_RESIZE) { int mVideoWidth = JCMediaPlayer.intance().currentVideoWidth; @@ -490,7 +548,6 @@ public void run() { ((Activity) getContext()).runOnUiThread(new Runnable() { @Override public void run() { - Toast.makeText(getContext(), "显示图像 " + CURRENT_STATE + " " + ifFullScreen, Toast.LENGTH_SHORT).show(); JCMediaPlayer.intance().mediaPlayer.setDisplay(surfaceHolder); } }); @@ -502,17 +559,12 @@ public void run() { boolean isClickFullscreen = false; public void release() { + if ((System.currentTimeMillis() - clickfullscreentime) < FULL_SCREEN_NORMAL_DELAY) return; //将状态设为普通 setState(CURRENT_STATE_NORMAL); //回收surfaceview,或画黑板 } -// public void drawBlack() {//给surfaceview填充背景或图片 -// Canvas canvas = surfaceHolder.lockCanvas(); -// canvas.drawColor(R.color.biz_audio_progress_second); -// surfaceHolder.unlockCanvasAndPost(canvas); -// } - @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (fromUser) { @@ -535,7 +587,7 @@ public void onStopTrackingTouch(SeekBar seekBar) { protected void onDetachedFromWindow() { super.onDetachedFromWindow(); EventBus.getDefault().unregister(this); - cancelDismissControlViewTimer(); +// cancelDismissControlViewTimer(); if (uuid.equals(JCMediaPlayer.intance().uuid)) { JCMediaPlayer.intance().mediaPlayer.stop(); } @@ -551,8 +603,6 @@ protected void onAttachedToWindow() { public void surfaceCreated(SurfaceHolder holder) { //TODO MediaPlayer set holder,MediaPlayer prepareToPlay EventBus.getDefault().post(new VideoEvents().setType(VideoEvents.VE_SURFACEHOLDER_CREATED)); -// drawBlack(); - if (ifFullScreen) { JCMediaPlayer.intance().mediaPlayer.setDisplay(surfaceHolder); stopToFullscreenOrQuitFullscreenShowDisplay(); @@ -570,15 +620,9 @@ private void stopToFullscreenOrQuitFullscreenShowDisplay() { new Thread(new Runnable() { @Override public void run() { -// try { -// Thread.sleep(50); -// } catch (InterruptedException e) { -// e.printStackTrace(); -// } ((Activity) getContext()).runOnUiThread(new Runnable() { @Override public void run() { - Toast.makeText(getContext(), "显示图像 " + CURRENT_STATE + " " + ifFullScreen, Toast.LENGTH_SHORT).show(); JCMediaPlayer.intance().mediaPlayer.pause(); CURRENT_STATE = CURRENT_STATE_PAUSE; } @@ -586,6 +630,8 @@ public void run() { } }).start(); surfaceView.requestLayout(); + } else if (CURRENT_STATE == CURRENT_STATE_PLAYING) { + JCMediaPlayer.intance().mediaPlayer.start(); } } @@ -637,9 +683,30 @@ public static DisplayImageOptions getDefaultDisplayImageOption() { .considerExifParams(true) .imageScaleType(ImageScaleType.EXACTLY_STRETCHED) .bitmapConfig(Bitmap.Config.RGB_565) -// .displayer(new FadeInBitmapDisplayer(1000)) // 设置图片渐显的时间 + .displayer(new FadeInBitmapDisplayer(500)) // 设置图片渐显的时间 // .delayBeforeLoading(300) // 下载前的延迟时间 .build(); return options; } + + /** + * 有特殊需要的客户端 + */ + @Deprecated + public void setStartListener(OnClickListener onClickListener) { + if (onClickListener != null) { + ivStart.setOnClickListener(onClickListener); + ivThumb.setOnClickListener(onClickListener); + } else { + ivStart.setOnClickListener(this); + ivThumb.setOnClickListener(this); + } + } + + private void sendPointEvent(int type) { + VideoEvents videoEvents = new VideoEvents(); + videoEvents.setType(type); + videoEvents.obj = title; + EventBus.getDefault().post(videoEvents); + } } diff --git a/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/VideoEvents.java b/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/VideoEvents.java index 9fde667ca..6269b3182 100644 --- a/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/VideoEvents.java +++ b/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/VideoEvents.java @@ -4,10 +4,10 @@ * Created by Nathen * On 2015/11/30 12:19 */ -class VideoEvents { +public class VideoEvents { public static final int VE_START = 366001; public static final int VE_STOP = 366002; -// public static final int VE_PROGRESSING = 366003; + // public static final int VE_PROGRESSING = 366003; public static final int VE_PREPARED = 366004; public static final int VE_SURFACEHOLDER_CREATED = 366005; public static final int VE_SURFACEHOLDER_FINISH_FULLSCREEN = 366006; @@ -16,6 +16,26 @@ class VideoEvents { public static final int VE_MEDIAPLAYER_SEEKCOMPLETE = 366009; public static final int VE_MEDIAPLAYER_RESIZE = 366010; + /** + * 给统计用的埋点 + */ + public static final int POINT_START_ICON = 367001; + public static final int POINT_START_THUMB = 367002; + public static final int POINT_STOP = 367003; + public static final int POINT_STOP_FULLSCREEN = 367004; + public static final int POINT_RESUME = 367014; + public static final int POINT_RESUME_FULLSCREEN = 367005; + + public static final int POINT_CLICK_BLANK = 367006; + public static final int POINT_CLICK_BLANK_FULLSCREEN = 367007; + public static final int POINT_CLICK_SEEKBAR = 367008; + public static final int POINT_CLICK_SEEKBAR_FULLSCREEN = 367009; + public static final int POINT_AUTO_COMPLETE = 367010; + public static final int POINT_AUTO_COMPLETE_FULLSCREEN = 367011; + + public static final int POINT_ENTER_FULLSCREEN = 367012; + public static final int POINT_QUIT_FULLSCREEN = 367013; + public int type; public Object obj; public Object obj1; diff --git a/jcvideoplayer-lib/src/main/res/drawable/biz_video_progressbar.xml b/jcvideoplayer-lib/src/main/res/drawable/biz_video_progressbar.xml index f407822ee..3fb0479c3 100644 --- a/jcvideoplayer-lib/src/main/res/drawable/biz_video_progressbar.xml +++ b/jcvideoplayer-lib/src/main/res/drawable/biz_video_progressbar.xml @@ -1,22 +1,27 @@ - + - + - + - + diff --git a/jcvideoplayer-lib/src/main/res/drawable/click_video_pause_selector.xml b/jcvideoplayer-lib/src/main/res/drawable/click_video_pause_selector.xml index 486b80e52..604ba040c 100644 --- a/jcvideoplayer-lib/src/main/res/drawable/click_video_pause_selector.xml +++ b/jcvideoplayer-lib/src/main/res/drawable/click_video_pause_selector.xml @@ -1,7 +1,7 @@ - - - + + + diff --git a/jcvideoplayer-lib/src/main/res/drawable/seek_progress.xml b/jcvideoplayer-lib/src/main/res/drawable/seek_progress.xml index 3e1ac0789..8a7770d32 100644 --- a/jcvideoplayer-lib/src/main/res/drawable/seek_progress.xml +++ b/jcvideoplayer-lib/src/main/res/drawable/seek_progress.xml @@ -1,6 +1,5 @@ - + @@ -26,4 +25,4 @@ - \ No newline at end of file + diff --git a/jcvideoplayer-lib/src/main/res/drawable/seek_thumb.xml b/jcvideoplayer-lib/src/main/res/drawable/seek_thumb.xml index 90b87b5d5..c6f4f1778 100644 --- a/jcvideoplayer-lib/src/main/res/drawable/seek_thumb.xml +++ b/jcvideoplayer-lib/src/main/res/drawable/seek_thumb.xml @@ -1,6 +1,5 @@ - + - \ No newline at end of file + diff --git a/jcvideoplayer-lib/src/main/res/drawable/seek_thumb_normal.xml b/jcvideoplayer-lib/src/main/res/drawable/seek_thumb_normal.xml index 1ca21c9fd..32be9e36d 100644 --- a/jcvideoplayer-lib/src/main/res/drawable/seek_thumb_normal.xml +++ b/jcvideoplayer-lib/src/main/res/drawable/seek_thumb_normal.xml @@ -1,6 +1,9 @@ - + - - \ No newline at end of file + + diff --git a/jcvideoplayer-lib/src/main/res/drawable/seek_thumb_press.xml b/jcvideoplayer-lib/src/main/res/drawable/seek_thumb_press.xml index 339c13dba..c6f6969a6 100644 --- a/jcvideoplayer-lib/src/main/res/drawable/seek_thumb_press.xml +++ b/jcvideoplayer-lib/src/main/res/drawable/seek_thumb_press.xml @@ -1,6 +1,9 @@ - + - - \ No newline at end of file + + diff --git a/jcvideoplayer-lib/src/main/res/drawable/title_gradient_bg.xml b/jcvideoplayer-lib/src/main/res/drawable/title_gradient_bg.xml index c924ca785..02d03af5b 100644 --- a/jcvideoplayer-lib/src/main/res/drawable/title_gradient_bg.xml +++ b/jcvideoplayer-lib/src/main/res/drawable/title_gradient_bg.xml @@ -3,5 +3,5 @@ + android:startColor="#00000000" /> diff --git a/jcvideoplayer-lib/src/main/res/drawable/video_progress.xml b/jcvideoplayer-lib/src/main/res/drawable/video_progress.xml new file mode 100644 index 000000000..49138a3f9 --- /dev/null +++ b/jcvideoplayer-lib/src/main/res/drawable/video_progress.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jcvideoplayer-lib/src/main/res/layout/video_control_view.xml b/jcvideoplayer-lib/src/main/res/layout/video_control_view.xml index 631ced989..b643ad32d 100644 --- a/jcvideoplayer-lib/src/main/res/layout/video_control_view.xml +++ b/jcvideoplayer-lib/src/main/res/layout/video_control_view.xml @@ -4,7 +4,7 @@ android:layout_height="match_parent" android:background="@android:color/black"> - - + + + + + + android:orientation="horizontal" + android:visibility="invisible"> @@ -92,7 +115,8 @@ android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignParentStart="true" - android:layout_alignParentTop="true" /> + android:layout_alignParentTop="true" + android:background="#000000" /> + android:scaleType="centerInside" + android:src="@drawable/ic_back_white" />