From 0a68180aeb4ed5448bd7d76a93e51649d6de8569 Mon Sep 17 00:00:00 2001 From: Nathen Date: Sun, 21 Feb 2016 20:18:17 +0800 Subject: [PATCH 1/4] Update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b6913f698..55f012cf8 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ ##使用 引入类库 ```java -compile 'fm.jiecao:jiecaovideoplayer:1.2_preview' +compile 'fm.jiecao:jiecaovideoplayer:1.2' ``` 添加布局 From 60b1c295b1daaebf3755864415b3c6e18c2a21f8 Mon Sep 17 00:00:00 2001 From: Nathen Date: Sun, 21 Feb 2016 22:07:00 +0800 Subject: [PATCH 2/4] Fix fullscreen click home bug --- .../ListViewpagerActivity.java | 2 +- .../jiecaovideoplayer/MainActivity.java | 4 +- .../jcvideoplayer_lib/FullScreenActivity.java | 5 +- ...JCMediaPlayer.java => JCMediaManager.java} | 14 ++-- .../jcvideoplayer_lib/JCVideoPlayer.java | 82 ++++++++++--------- .../jcvideoplayer_lib/ResizeSurfaceView.java | 4 +- 6 files changed, 57 insertions(+), 54 deletions(-) rename jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/{JCMediaPlayer.java => JCMediaManager.java} (86%) diff --git a/app/src/main/java/fm/jiecao/jiecaovideoplayer/ListViewpagerActivity.java b/app/src/main/java/fm/jiecao/jiecaovideoplayer/ListViewpagerActivity.java index ffd8b25ad..038537e73 100644 --- a/app/src/main/java/fm/jiecao/jiecaovideoplayer/ListViewpagerActivity.java +++ b/app/src/main/java/fm/jiecao/jiecaovideoplayer/ListViewpagerActivity.java @@ -53,7 +53,7 @@ public void onPageScrolled(int position, float positionOffset, int positionOffse @Override public void onPageSelected(int position) { - JCVideoPlayer.releaseAllVideo(); + JCVideoPlayer.releaseAllVideos(); } @Override diff --git a/app/src/main/java/fm/jiecao/jiecaovideoplayer/MainActivity.java b/app/src/main/java/fm/jiecao/jiecaovideoplayer/MainActivity.java index 19585c3a0..04971bf16 100644 --- a/app/src/main/java/fm/jiecao/jiecaovideoplayer/MainActivity.java +++ b/app/src/main/java/fm/jiecao/jiecaovideoplayer/MainActivity.java @@ -48,7 +48,7 @@ protected void onCreate(Bundle savedInstanceState) { @Override protected void onPause() { super.onPause(); - JCVideoPlayer.releaseAllVideo(); + JCVideoPlayer.releaseAllVideos(); } @Override @@ -91,7 +91,7 @@ public void onEventMainThread(VideoEvents event) { @Override public void onClick(View v) { - JCVideoPlayer.releaseAllVideo(); + JCVideoPlayer.releaseAllVideos(); switch (v.getId()) { case R.id.to_list_activity: startActivity(new Intent(MainActivity.this, ListActivity.class)); 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 4be7c9c48..80e163183 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 @@ -46,7 +46,7 @@ protected void onCreate(Bundle savedInstanceState) { jcVideoPlayer = (JCVideoPlayer) findViewById(R.id.jcvideoplayer); jcVideoPlayer.setUpForFullscreen(URL, THUMB, TITLE); jcVideoPlayer.setState(STATE); - JCMediaPlayer.intance().setUuid(jcVideoPlayer.uuid); + JCMediaManager.intance().setUuid(jcVideoPlayer.uuid); manualQuit = false; } @@ -65,7 +65,8 @@ public void onBackPressed() { protected void onPause() { super.onPause(); if (!manualQuit) { - JCVideoPlayer.releaseAllVideo(); + jcVideoPlayer.isClickFullscreen = false; + JCVideoPlayer.releaseAllVideos(); finish(); } } diff --git a/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCMediaPlayer.java b/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCMediaManager.java similarity index 86% rename from jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCMediaPlayer.java rename to jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCMediaManager.java index 15067ce6d..5e0f64e24 100644 --- a/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCMediaPlayer.java +++ b/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCMediaManager.java @@ -17,23 +17,23 @@ * Created by Nathen * On 2015/11/30 15:39 */ -class JCMediaPlayer implements MediaPlayer.OnPreparedListener, MediaPlayer.OnCompletionListener, MediaPlayer.OnBufferingUpdateListener, MediaPlayer.OnSeekCompleteListener, MediaPlayer.OnErrorListener, MediaPlayer.OnVideoSizeChangedListener { +class JCMediaManager implements MediaPlayer.OnPreparedListener, MediaPlayer.OnCompletionListener, MediaPlayer.OnBufferingUpdateListener, MediaPlayer.OnSeekCompleteListener, MediaPlayer.OnErrorListener, MediaPlayer.OnVideoSizeChangedListener { public MediaPlayer mediaPlayer; - private static JCMediaPlayer jcMediaPlayer; + private static JCMediaManager jcMediaManager; public String uuid = "";//这个是正在播放中的视频控件的uuid, private String prev_uuid = ""; public int currentVideoWidth = 0; public int currentVideoHeight = 0; - public static JCMediaPlayer intance() { - if (jcMediaPlayer == null) { - jcMediaPlayer = new JCMediaPlayer(); + public static JCMediaManager intance() { + if (jcMediaManager == null) { + jcMediaManager = new JCMediaManager(); } - return jcMediaPlayer; + return jcMediaManager; } - public JCMediaPlayer() { + public JCMediaManager() { mediaPlayer = new MediaPlayer(); } 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 0177d9587..c09f9e954 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 @@ -71,8 +71,8 @@ public class JCVideoPlayer extends FrameLayout implements View.OnClickListener, // 一些临时表示状态的变量 private boolean touchingProgressBar = false; - boolean isFromFullScreenBackHere = false;//如果是true表示这个正在不是全屏,并且全屏刚推出,总之进入过全屏 - boolean isClickFullscreen = false; + static boolean isFromFullScreenBackHere = false;//如果是true表示这个正在不是全屏,并且全屏刚推出,总之进入过全屏 + static boolean isClickFullscreen = false; public JCVideoPlayer(Context context, AttributeSet attrs) { super(context, attrs); @@ -154,8 +154,8 @@ public void setUp(String url, String thumb, String title, boolean ifShowTitle) { ImageLoader.getInstance().displayImage(thumb, ivThumb, Utils.getDefaultDisplayImageOption()); CURRENT_STATE = CURRENT_STATE_NORMAL; setTitleVisibility(View.VISIBLE); - if (uuid.equals(JCMediaPlayer.intance().uuid)) { - JCMediaPlayer.intance().mediaPlayer.stop(); + if (uuid.equals(JCMediaManager.intance().uuid)) { + JCMediaManager.intance().mediaPlayer.stop(); } } @@ -218,8 +218,8 @@ public void setState(int state) { 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(); + if (uuid.equals(JCMediaManager.intance().uuid)) { + JCMediaManager.intance().mediaPlayer.stop(); } ivStart.setVisibility(View.VISIBLE); ivThumb.setVisibility(View.VISIBLE); @@ -247,7 +247,7 @@ public void onEventMainThread(VideoEvents videoEvents) { setKeepScreenOn(false); sendPointEvent(ifFullScreen ? VideoEvents.POINT_AUTO_COMPLETE_FULLSCREEN : VideoEvents.POINT_AUTO_COMPLETE); } - if (!JCMediaPlayer.intance().uuid.equals(uuid)) { + if (!JCMediaManager.intance().uuid.equals(uuid)) { if (videoEvents.type == VideoEvents.VE_START) { if (CURRENT_STATE != CURRENT_STATE_NORMAL) { setState(CURRENT_STATE_NORMAL); @@ -257,8 +257,8 @@ public void onEventMainThread(VideoEvents videoEvents) { } if (videoEvents.type == VideoEvents.VE_PREPARED) { if (CURRENT_STATE != CURRENT_STATE_PREPAREING) return; - JCMediaPlayer.intance().mediaPlayer.setDisplay(surfaceHolder); - JCMediaPlayer.intance().mediaPlayer.start(); + JCMediaManager.intance().mediaPlayer.setDisplay(surfaceHolder); + JCMediaManager.intance().mediaPlayer.start(); pbLoading.setVisibility(View.INVISIBLE); ivCover.setVisibility(View.INVISIBLE); llBottomControl.setVisibility(View.VISIBLE); @@ -284,14 +284,14 @@ public void onEventMainThread(VideoEvents videoEvents) { } } else if (videoEvents.type == VideoEvents.VE_SURFACEHOLDER_CREATED) { if (isFromFullScreenBackHere) { - JCMediaPlayer.intance().mediaPlayer.setDisplay(surfaceHolder); + JCMediaManager.intance().mediaPlayer.setDisplay(surfaceHolder); stopToFullscreenOrQuitFullscreenShowDisplay(); isFromFullScreenBackHere = false; startDismissControlViewTimer(); } } else if (videoEvents.type == VideoEvents.VE_MEDIAPLAYER_RESIZE) { - int mVideoWidth = JCMediaPlayer.intance().currentVideoWidth; - int mVideoHeight = JCMediaPlayer.intance().currentVideoHeight; + int mVideoWidth = JCMediaManager.intance().currentVideoWidth; + int mVideoHeight = JCMediaManager.intance().currentVideoHeight; if (mVideoWidth != 0 && mVideoHeight != 0) { surfaceHolder.setFixedSize(mVideoWidth, mVideoHeight); surfaceView.requestLayout(); @@ -309,7 +309,7 @@ private void startDismissControlViewTimer() { mDismissControlViewTimer.schedule(new TimerTask() { @Override public void run() { - if (uuid.equals(JCMediaPlayer.intance().uuid)) { + if (uuid.equals(JCMediaManager.intance().uuid)) { if (getContext() != null && getContext() instanceof Activity) { ((Activity) getContext()).runOnUiThread(new Runnable() { @Override @@ -405,7 +405,7 @@ public void run() { } private void cancelProgressTimer() { - if (uuid.equals(JCMediaPlayer.intance().uuid)) { + if (uuid.equals(JCMediaManager.intance().uuid)) { if (mUpdateProgressTimer != null) { mUpdateProgressTimer.cancel(); Log.i("update buffer", "updatebuffer:: cancel"); @@ -445,7 +445,7 @@ public void onClick(View v) { } //点击缩略图或播放按钮。1.如果在normal模式准备视频,如果在播放模式就暂停,如果在暂停就播放,如果在prepare下不可能有这情况。 if (CURRENT_STATE == CURRENT_STATE_NORMAL) { - JCMediaPlayer.intance().clearWidthAndHeight(); + JCMediaManager.intance().clearWidthAndHeight(); //进入准备状态,开始缓冲视频 CURRENT_STATE = CURRENT_STATE_PREPAREING; ivStart.setVisibility(View.INVISIBLE); @@ -454,8 +454,8 @@ public void onClick(View v) { ivCover.setVisibility(View.VISIBLE); setProgressAndTime(0, 0, 0); setProgressBuffered(0); - JCMediaPlayer.intance().prepareToPlay(getContext(), url); - JCMediaPlayer.intance().setUuid(uuid); + JCMediaManager.intance().prepareToPlay(getContext(), url); + JCMediaManager.intance().setUuid(uuid); VideoEvents videoEvents = new VideoEvents().setType(VideoEvents.VE_START); videoEvents.obj = uuid; @@ -468,7 +468,7 @@ public void onClick(View v) { CURRENT_STATE = CURRENT_STATE_PAUSE; ivThumb.setVisibility(View.INVISIBLE); ivCover.setVisibility(View.INVISIBLE); - JCMediaPlayer.intance().mediaPlayer.pause(); + JCMediaManager.intance().mediaPlayer.pause(); updateStartImage(); setKeepScreenOn(false); cancelDismissControlViewTimer(); @@ -477,7 +477,7 @@ public void onClick(View v) { CURRENT_STATE = CURRENT_STATE_PLAYING; ivThumb.setVisibility(View.INVISIBLE); ivCover.setVisibility(View.INVISIBLE); - JCMediaPlayer.intance().mediaPlayer.start(); + JCMediaManager.intance().mediaPlayer.start(); updateStartImage(); setKeepScreenOn(true); startDismissControlViewTimer(); @@ -490,9 +490,9 @@ public void onClick(View v) { //退出全屏 quitFullScreen(); } else { - JCMediaPlayer.intance().mediaPlayer.pause(); - JCMediaPlayer.intance().mediaPlayer.setDisplay(null); - JCMediaPlayer.intance().backUpUuid(); + JCMediaManager.intance().mediaPlayer.pause(); + JCMediaManager.intance().mediaPlayer.setDisplay(null); + JCMediaManager.intance().backUpUuid(); isClickFullscreen = true; FullScreenActivity.toActivity(getContext(), CURRENT_STATE, url, thumb, title); sendPointEvent(VideoEvents.POINT_ENTER_FULLSCREEN); @@ -527,8 +527,8 @@ private void setProgressBuffered(int secProgress) { } private void setProgressAndTimeFromTimer() { - int position = JCMediaPlayer.intance().mediaPlayer.getCurrentPosition(); - int duration = JCMediaPlayer.intance().mediaPlayer.getDuration(); + int position = JCMediaManager.intance().mediaPlayer.getCurrentPosition(); + int duration = JCMediaManager.intance().mediaPlayer.getDuration(); int progress = position * 100 / duration; setProgressAndTime(progress, position, duration); } @@ -553,8 +553,8 @@ public void release() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (fromUser) { - int time = progress * JCMediaPlayer.intance().mediaPlayer.getDuration() / 100; - JCMediaPlayer.intance().mediaPlayer.seekTo(time); + int time = progress * JCMediaManager.intance().mediaPlayer.getDuration() / 100; + JCMediaManager.intance().mediaPlayer.seekTo(time); pbLoading.setVisibility(View.VISIBLE); ivStart.setVisibility(View.INVISIBLE); } @@ -575,8 +575,8 @@ protected void onDetachedFromWindow() { super.onDetachedFromWindow(); EventBus.getDefault().unregister(this); // cancelDismissControlViewTimer(); - if (uuid.equals(JCMediaPlayer.intance().uuid)) { - JCMediaPlayer.intance().mediaPlayer.stop(); + if (uuid.equals(JCMediaManager.intance().uuid)) { + JCMediaManager.intance().mediaPlayer.stop(); } } @@ -592,9 +592,9 @@ protected void onAttachedToWindow() { public void quitFullScreen() { FullScreenActivity.manualQuit = true; clickfullscreentime = System.currentTimeMillis(); - JCMediaPlayer.intance().mediaPlayer.pause(); - JCMediaPlayer.intance().mediaPlayer.setDisplay(null); - JCMediaPlayer.intance().revertUuid(); + JCMediaManager.intance().mediaPlayer.pause(); + JCMediaManager.intance().mediaPlayer.setDisplay(null); + JCMediaManager.intance().revertUuid(); VideoEvents videoEvents = new VideoEvents().setType(VideoEvents.VE_SURFACEHOLDER_FINISH_FULLSCREEN); videoEvents.obj = CURRENT_STATE; EventBus.getDefault().post(videoEvents); @@ -603,7 +603,7 @@ public void quitFullScreen() { private void stopToFullscreenOrQuitFullscreenShowDisplay() { if (CURRENT_STATE == CURRENT_STATE_PAUSE) { - JCMediaPlayer.intance().mediaPlayer.start(); + JCMediaManager.intance().mediaPlayer.start(); CURRENT_STATE = CURRENT_STATE_PLAYING; new Thread(new Runnable() { @Override @@ -611,7 +611,7 @@ public void run() { ((Activity) getContext()).runOnUiThread(new Runnable() { @Override public void run() { - JCMediaPlayer.intance().mediaPlayer.pause(); + JCMediaManager.intance().mediaPlayer.pause(); CURRENT_STATE = CURRENT_STATE_PAUSE; } }); @@ -619,7 +619,7 @@ public void run() { }).start(); surfaceView.requestLayout(); } else if (CURRENT_STATE == CURRENT_STATE_PLAYING) { - JCMediaPlayer.intance().mediaPlayer.start(); + JCMediaManager.intance().mediaPlayer.start(); } } //******************************************************* @@ -629,7 +629,7 @@ public void surfaceCreated(SurfaceHolder holder) { //TODO MediaPlayer set holder,MediaPlayer prepareToPlay EventBus.getDefault().post(new VideoEvents().setType(VideoEvents.VE_SURFACEHOLDER_CREATED)); if (ifFullScreen) { - JCMediaPlayer.intance().mediaPlayer.setDisplay(surfaceHolder); + JCMediaManager.intance().mediaPlayer.setDisplay(surfaceHolder); stopToFullscreenOrQuitFullscreenShowDisplay(); } if (CURRENT_STATE != CURRENT_STATE_NORMAL) { @@ -651,11 +651,13 @@ public void surfaceDestroyed(SurfaceHolder holder) { /** * 停止所有音频的播放 */ - public static void releaseAllVideo() { - JCMediaPlayer.intance().mediaPlayer.stop(); - JCMediaPlayer.intance().setUuid(""); - JCMediaPlayer.intance().setUuid(""); - EventBus.getDefault().post(new VideoEvents().setType(VideoEvents.VE_MEDIAPLAYER_FINISH_COMPLETE)); + public static void releaseAllVideos() { + if (!isClickFullscreen) { + JCMediaManager.intance().mediaPlayer.stop(); + JCMediaManager.intance().setUuid(""); + JCMediaManager.intance().setUuid(""); + EventBus.getDefault().post(new VideoEvents().setType(VideoEvents.VE_MEDIAPLAYER_FINISH_COMPLETE)); + } } /** diff --git a/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/ResizeSurfaceView.java b/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/ResizeSurfaceView.java index 50bbb82d6..3cf31ff4a 100644 --- a/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/ResizeSurfaceView.java +++ b/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/ResizeSurfaceView.java @@ -21,8 +21,8 @@ public ResizeSurfaceView(Context context, AttributeSet attrs) { protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { //Log.i("@@@@", "onMeasure(" + MeasureSpec.toString(widthMeasureSpec) + ", " // + MeasureSpec.toString(heightMeasureSpec) + ")"); - int mVideoWidth = JCMediaPlayer.intance().currentVideoWidth; - int mVideoHeight = JCMediaPlayer.intance().currentVideoHeight; + int mVideoWidth = JCMediaManager.intance().currentVideoWidth; + int mVideoHeight = JCMediaManager.intance().currentVideoHeight; int width = getDefaultSize(mVideoWidth, widthMeasureSpec); int height = getDefaultSize(mVideoHeight, heightMeasureSpec); From 902e0e6d78099e7538a8f08120787822260e6a8f Mon Sep 17 00:00:00 2001 From: Nathen Date: Mon, 22 Feb 2016 01:03:06 +0800 Subject: [PATCH 3/4] Support mp3 --- .../jiecaovideoplayer/MainActivity.java | 7 +- app/src/main/res/layout/activity_main.xml | 12 ++ .../jcvideoplayer_lib/JCVideoPlayer.java | 188 ++++++++++-------- 3 files changed, 126 insertions(+), 81 deletions(-) diff --git a/app/src/main/java/fm/jiecao/jiecaovideoplayer/MainActivity.java b/app/src/main/java/fm/jiecao/jiecaovideoplayer/MainActivity.java index 04971bf16..171922231 100644 --- a/app/src/main/java/fm/jiecao/jiecaovideoplayer/MainActivity.java +++ b/app/src/main/java/fm/jiecao/jiecaovideoplayer/MainActivity.java @@ -14,7 +14,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListener { - JCVideoPlayer videoController1, videoController2; + JCVideoPlayer videoController1, videoController2, videoController3; Button btnToList, btnToListViewpager, btnToFullscreen, btnToChangecolor; @Override @@ -33,6 +33,11 @@ protected void onCreate(Bundle savedInstanceState) { "http://p.qpic.cn/videoyun/0/2449_ded7b566b37911e5942f0b208e48548d_2/640", "嫂子还摸我", false); + videoController3 = (JCVideoPlayer) findViewById(R.id.videocontroller3); + videoController3.setUp("http://121.40.64.47/resource/mp3/music_yangguang3.mp3",// + "http://p.qpic.cn/videoyun/0/2449_ded7b566b37911e5942f0b208e48548d_2/640", + "嫂子别闹"); + btnToList = (Button) findViewById(R.id.to_list_activity); btnToListViewpager = (Button) findViewById(R.id.to_list_viewpager_activity); btnToFullscreen = (Button) findViewById(R.id.to_fullscreen); diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index f6a447991..f7e233228 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -34,6 +34,18 @@ android:layout_height="200dp" android:layout_marginTop="2dp" /> + + + +