diff --git a/README-ZH.md b/README-ZH.md index 85729702b..8ab3340e6 100644 --- a/README-ZH.md +++ b/README-ZH.md @@ -2,7 +2,7 @@ --

- +

@@ -22,7 +22,7 @@ ##效果 -**[jiecaovideoplayer-4.7.0_preview-demo.apk](https://github.com/lipangit/JieCaoVideoPlayer/releases/download/v4.7.0_preview_Preview/jiecaovideoplayer-4.7.0_preview-demo.apk)** +**[jiecaovideoplayer-4.8.0-demo.apk](https://github.com/lipangit/JieCaoVideoPlayer/releases/download/v4.8.0/jiecaovideoplayer-4.8.0.apk)** ![Demo Screenshot][1] @@ -30,14 +30,14 @@ 1.添加类库,这个版本的目的是预览自动进入小窗功能,不要用在生产环境,稳定版本仍然是v4.6.5 ```gradle -compile 'fm.jiecao:jiecaovideoplayer:4.7.0_preview' +compile 'fm.jiecao:jiecaovideoplayer:4.8.0' ``` 或直接下载 -* [jiecaovideoplayer-4.7.0_preview.aar](https://github.com/lipangit/JieCaoVideoPlayer/releases/download/4.7.0_preview/jiecaovideoplayer-4.7.0_preview.aar) -* [jiecaovideoplayer-4.7.0_preview-javadoc.jar](https://github.com/lipangit/JieCaoVideoPlayer/releases/download/4.7.0_preview/jiecaovideoplayer-4.7.0_preview-javadoc.jar) -* [jiecaovideoplayer-4.7.0_preview-sources.jar](https://github.com/lipangit/JieCaoVideoPlayer/releases/download/4.7.0_preview/jiecaovideoplayer-4.7.0_preview-sources.jar) +* [jiecaovideoplayer-4.8.0.aar](https://github.com/lipangit/JieCaoVideoPlayer/releases/download/v4.8.0/jiecaovideoplayer-4.8.0.aar) +* [jiecaovideoplayer-4.8.0-javadoc.jar](https://github.com/lipangit/JieCaoVideoPlayer/releases/download/v4.8.0/jiecaovideoplayer-4.8.0-javadoc.jar) +* [jiecaovideoplayer-4.8.0-sources.jar](https://github.com/lipangit/JieCaoVideoPlayer/releases/download/v4.8.0/jiecaovideoplayer-4.8.0-sources.jar) 2.添加布局 ```xml diff --git a/README.md b/README.md index 711be6369..3fafbcbed 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ --

- +

@@ -28,7 +28,7 @@ Ambition is become the most widely used video playback control. ## Effect -**[jiecaovideoplayer-4.7.0_preview-demo.apk](https://github.com/lipangit/JieCaoVideoPlayer/releases/download/v4.7.0_preview_Preview/jiecaovideoplayer-4.7.0_preview-demo.apk)** +**[jiecaovideoplayer-4.8.0-demo.apk](https://github.com/lipangit/JieCaoVideoPlayer/releases/download/v4.8.0/jiecaovideoplayer-4.8.0.apk)** ![Demo Screenshot][1] @@ -36,14 +36,14 @@ Ambition is become the most widely used video playback control. 1.Import library,new feature auto tiny window is not perfect this version, do not use it in you project, this is juct preview the feature , Stable version is still v4.6.5 ```gradle -compile 'fm.jiecao:jiecaovideoplayer:4.7.0_preview' +compile 'fm.jiecao:jiecaovideoplayer:4.8.0' ``` Or download lib -* [jiecaovideoplayer-4.7.0_preview.aar](https://github.com/lipangit/JieCaoVideoPlayer/releases/download/4.7.0_preview/jiecaovideoplayer-4.7.0_preview.aar) -* [jiecaovideoplayer-4.7.0_preview-javadoc.jar](https://github.com/lipangit/JieCaoVideoPlayer/releases/download/4.7.0_preview/jiecaovideoplayer-4.7.0_preview-javadoc.jar) -* [jiecaovideoplayer-4.7.0_preview-sources.jar](https://github.com/lipangit/JieCaoVideoPlayer/releases/download/4.7.0_preview/jiecaovideoplayer-4.7.0_preview-sources.jar) +* [jiecaovideoplayer-4.8.0.aar](https://github.com/lipangit/JieCaoVideoPlayer/releases/download/v4.8.0/jiecaovideoplayer-4.8.0.aar) +* [jiecaovideoplayer-4.8.0-javadoc.jar](https://github.com/lipangit/JieCaoVideoPlayer/releases/download/v4.8.0/jiecaovideoplayer-4.8.0-javadoc.jar) +* [jiecaovideoplayer-4.8.0-sources.jar](https://github.com/lipangit/JieCaoVideoPlayer/releases/download/v4.8.0/jiecaovideoplayer-4.8.0-sources.jar) 2.Add JCVideoPlayer in your layout ```xml diff --git a/app/build.gradle b/app/build.gradle index f01ec03f3..c3263b6fc 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,8 +8,8 @@ android { applicationId "fm.jiecao.jiecaovideoplayer" minSdkVersion 14 targetSdkVersion 24 - versionCode 43 - versionName "4.7.1_preview" + versionCode 44 + versionName "4.8.0" } buildTypes { release { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b1dd8000b..a271faf17 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -12,7 +12,7 @@ android:theme="@style/AppTheme"> @@ -23,43 +23,60 @@ + android:name=".RecyclerViewNormalActivity" + android:configChanges="orientation|screenSize|keyboardHidden" + android:screenOrientation="portrait"/> + diff --git a/app/src/main/assets/jcvd.html b/app/src/main/assets/jcvd.html new file mode 100644 index 000000000..35727cd94 --- /dev/null +++ b/app/src/main/assets/jcvd.html @@ -0,0 +1,23 @@ + + + +
+
+
+
+

This is webview

+
+
+
+
+ + + \ No newline at end of file diff --git a/app/src/main/java/fm/jiecao/jiecaovideoplayer/ListViewMultiHolderActivity.java b/app/src/main/java/fm/jiecao/jiecaovideoplayer/ListViewMultiHolderActivity.java index 2464ed88b..32ad70648 100755 --- a/app/src/main/java/fm/jiecao/jiecaovideoplayer/ListViewMultiHolderActivity.java +++ b/app/src/main/java/fm/jiecao/jiecaovideoplayer/ListViewMultiHolderActivity.java @@ -11,7 +11,6 @@ import android.widget.ListView; import android.widget.TextView; -import com.nostra13.universalimageloader.core.ImageLoader; import com.squareup.picasso.Picasso; import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer; @@ -70,7 +69,9 @@ public long getItemId(int position) { @Override public View getView(int position, View convertView, ViewGroup parent) { //This is the point - + if (convertView != null && convertView.getTag() != null && convertView.getTag() instanceof VideoHolder) { + ((VideoHolder) convertView.getTag()).jcVideoPlayer.release(); + } if (getItemViewType(position) == 1) { VideoHolder viewHolder; if (convertView != null && convertView.getTag() != null && convertView.getTag() instanceof VideoHolder) { @@ -82,14 +83,13 @@ public View getView(int position, View convertView, ViewGroup parent) { convertView.setTag(viewHolder); } - boolean setUp = viewHolder.jcVideoPlayer.setUp( + viewHolder.jcVideoPlayer.setUp( VideoConstant.videoUrls[position], JCVideoPlayer.SCREEN_LAYOUT_LIST, VideoConstant.videoTitles[position]); - if (setUp) { + Picasso.with(ListViewMultiHolderActivity.this) .load(VideoConstant.videoThumbs[position]) .into(viewHolder.jcVideoPlayer.thumbImageView); - } } else { TextViewHolder textViewHolder; if (convertView != null && convertView.getTag() != null && convertView.getTag() instanceof TextViewHolder) { diff --git a/app/src/main/java/fm/jiecao/jiecaovideoplayer/ListViewNormalActivity.java b/app/src/main/java/fm/jiecao/jiecaovideoplayer/ListViewNormalActivity.java index 120fb813d..05c7faf40 100644 --- a/app/src/main/java/fm/jiecao/jiecaovideoplayer/ListViewNormalActivity.java +++ b/app/src/main/java/fm/jiecao/jiecaovideoplayer/ListViewNormalActivity.java @@ -1,10 +1,11 @@ package fm.jiecao.jiecaovideoplayer; +import android.hardware.Sensor; +import android.hardware.SensorManager; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.view.MenuItem; -import android.widget.AbsListView; import android.widget.ListView; import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer; @@ -16,6 +17,9 @@ public class ListViewNormalActivity extends AppCompatActivity { ListView listView; VideoListAdapter adapterVideoList; + SensorManager sensorManager; + JCVideoPlayer.JCAutoFullscreenListener sensorEventListener; + @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -29,6 +33,9 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { listView = (ListView) findViewById(R.id.listview); adapterVideoList = new VideoListAdapter(this); listView.setAdapter(adapterVideoList); + + sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); + sensorEventListener = new JCVideoPlayer.JCAutoFullscreenListener(); } @Override @@ -39,9 +46,17 @@ public void onBackPressed() { super.onBackPressed(); } + @Override + protected void onResume() { + super.onResume(); + Sensor accelerometerSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); + sensorManager.registerListener(sensorEventListener, accelerometerSensor, SensorManager.SENSOR_DELAY_NORMAL); + } + @Override protected void onPause() { super.onPause(); + sensorManager.unregisterListener(sensorEventListener); JCVideoPlayer.releaseAllVideos(); } diff --git a/app/src/main/java/fm/jiecao/jiecaovideoplayer/MainActivity.java b/app/src/main/java/fm/jiecao/jiecaovideoplayer/MainActivity.java index fd2db2286..8b41a6f40 100644 --- a/app/src/main/java/fm/jiecao/jiecaovideoplayer/MainActivity.java +++ b/app/src/main/java/fm/jiecao/jiecaovideoplayer/MainActivity.java @@ -10,7 +10,6 @@ import android.view.View; import android.widget.Button; -import com.nostra13.universalimageloader.core.ImageLoader; import com.squareup.picasso.Picasso; import fm.jiecao.jcvideoplayer_lib.JCBuriedPoint; @@ -24,59 +23,60 @@ */ public class MainActivity extends AppCompatActivity implements View.OnClickListener { - JCVideoPlayer.JCAutoFullscreenListener sensorEventListener; - SensorManager sensorManager; + JCVideoPlayer.JCAutoFullscreenListener mSensorEventListener; + SensorManager mSensorManager; - JCVideoPlayerStandard jcVideoPlayerStandard; - JCVideoPlayerSimple jcVideoPlayerSimple; + JCVideoPlayerStandard mJcVideoPlayerStandard; + JCVideoPlayerSimple mJcVideoPlayerSimple; - Button tinyWindow, autoTinyWindow, aboutListView, aboutUI, playDirectly; + Button mTinyWindow, mAutoTinyWindow, mAboutListView, mAboutUI, mPlayDirectly; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - tinyWindow = (Button) findViewById(R.id.tiny_window); - autoTinyWindow = (Button) findViewById(R.id.auto_tiny_window); - aboutUI = (Button) findViewById(R.id.play_directly_without_layout); - aboutListView = (Button) findViewById(R.id.about_listview); - playDirectly = (Button) findViewById(R.id.about_ui); + mTinyWindow = (Button) findViewById(R.id.tiny_window); + mAutoTinyWindow = (Button) findViewById(R.id.auto_tiny_window); + mAboutUI = (Button) findViewById(R.id.play_directly_without_layout); + mAboutListView = (Button) findViewById(R.id.about_listview); + mPlayDirectly = (Button) findViewById(R.id.about_ui); - tinyWindow.setOnClickListener(this); - autoTinyWindow.setOnClickListener(this); - aboutListView.setOnClickListener(this); - aboutUI.setOnClickListener(this); - playDirectly.setOnClickListener(this); + mTinyWindow.setOnClickListener(this); + mAutoTinyWindow.setOnClickListener(this); + mAboutListView.setOnClickListener(this); + mAboutUI.setOnClickListener(this); + mPlayDirectly.setOnClickListener(this); - jcVideoPlayerSimple = (JCVideoPlayerSimple) findViewById(R.id.simple_demo); - jcVideoPlayerSimple.setUp("http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8" + mJcVideoPlayerSimple = (JCVideoPlayerSimple) findViewById(R.id.simple_demo); + mJcVideoPlayerSimple.setUp("http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8" , JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL, "嫂子在家吗"); - jcVideoPlayerStandard = (JCVideoPlayerStandard) findViewById(R.id.jc_video); - jcVideoPlayerStandard.setUp("http://2449.vod.myqcloud.com/2449_22ca37a6ea9011e5acaaf51d105342e3.f20.mp4" + mJcVideoPlayerStandard = (JCVideoPlayerStandard) findViewById(R.id.jc_video); + mJcVideoPlayerStandard.setUp("http://2449.vod.myqcloud.com/2449_22ca37a6ea9011e5acaaf51d105342e3.f20.mp4" , JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL, "嫂子坐这"); Picasso.with(this) .load("http://cos.myqcloud.com/1000264/qcloud_video_attachment/842646334/vod_cover/cover1458036374.jpg") - .into(jcVideoPlayerStandard.thumbImageView); + .into(mJcVideoPlayerStandard.thumbImageView); +// mJcVideoPlayerStandard.setLoop(true); JCVideoPlayer.setJcBuriedPoint(new MyJCBuriedPointStandard()); - sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); - sensorEventListener = new JCVideoPlayer.JCAutoFullscreenListener(); + mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); + mSensorEventListener = new JCVideoPlayer.JCAutoFullscreenListener(); } @Override protected void onResume() { super.onResume(); - Sensor accelerometerSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); - sensorManager.registerListener(sensorEventListener, accelerometerSensor, SensorManager.SENSOR_DELAY_NORMAL); + Sensor accelerometerSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); + mSensorManager.registerListener(mSensorEventListener, accelerometerSensor, SensorManager.SENSOR_DELAY_NORMAL); } @Override protected void onPause() { super.onPause(); - sensorManager.unregisterListener(sensorEventListener); + mSensorManager.unregisterListener(mSensorEventListener); JCVideoPlayer.releaseAllVideos(); } @@ -92,7 +92,7 @@ public void onBackPressed() { public void onClick(View v) { switch (v.getId()) { case R.id.tiny_window: - jcVideoPlayerStandard.startWindowTiny(); + mJcVideoPlayerStandard.startWindowTiny(); break; case R.id.auto_tiny_window: startActivity(new Intent(MainActivity.this, AutoTinyActivity.class)); @@ -106,6 +106,9 @@ public void onClick(View v) { case R.id.about_ui: startActivity(new Intent(MainActivity.this, UIActivity.class)); break; + case R.id.about_webview: + startActivity(new Intent(MainActivity.this, WebViewActivity.class)); + break; } } diff --git a/app/src/main/java/fm/jiecao/jiecaovideoplayer/RecyclerViewVideoAdapter.java b/app/src/main/java/fm/jiecao/jiecaovideoplayer/RecyclerViewVideoAdapter.java index 31b1bb3c1..bcf70a806 100644 --- a/app/src/main/java/fm/jiecao/jiecaovideoplayer/RecyclerViewVideoAdapter.java +++ b/app/src/main/java/fm/jiecao/jiecaovideoplayer/RecyclerViewVideoAdapter.java @@ -35,15 +35,12 @@ public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { public void onBindViewHolder(MyViewHolder holder, int position) { Log.i(TAG, "onBindViewHolder [" + holder.jcVideoPlayer.hashCode() + "] position=" + position); - boolean setUp = holder.jcVideoPlayer.setUp( + holder.jcVideoPlayer.setUp( VideoConstant.videoUrls[position], JCVideoPlayer.SCREEN_LAYOUT_LIST, VideoConstant.videoTitles[position]); - if (setUp) { Picasso.with(holder.jcVideoPlayer.getContext()) .load(VideoConstant.videoThumbs[position]) .into(holder.jcVideoPlayer.thumbImageView); - } - } @Override diff --git a/app/src/main/java/fm/jiecao/jiecaovideoplayer/VideoListAdapter.java b/app/src/main/java/fm/jiecao/jiecaovideoplayer/VideoListAdapter.java index 383ba7587..858377524 100755 --- a/app/src/main/java/fm/jiecao/jiecaovideoplayer/VideoListAdapter.java +++ b/app/src/main/java/fm/jiecao/jiecaovideoplayer/VideoListAdapter.java @@ -7,7 +7,6 @@ import android.view.ViewGroup; import android.widget.BaseAdapter; -import com.nostra13.universalimageloader.core.ImageLoader; import com.squareup.picasso.Picasso; import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer; @@ -58,14 +57,13 @@ public View getView(int position, View convertView, ViewGroup parent) { viewHolder = (ViewHolder) convertView.getTag(); } - boolean setUp = viewHolder.jcVideoPlayer.setUp( + viewHolder.jcVideoPlayer.setUp( VideoConstant.videoUrls[position], JCVideoPlayer.SCREEN_LAYOUT_LIST, VideoConstant.videoTitles[position]); - if (setUp) { - Picasso.with(convertView.getContext()) - .load(VideoConstant.videoThumbs[position]) - .into(viewHolder.jcVideoPlayer.thumbImageView); - } + + Picasso.with(convertView.getContext()) + .load(VideoConstant.videoThumbs[position]) + .into(viewHolder.jcVideoPlayer.thumbImageView); return convertView; } diff --git a/app/src/main/java/fm/jiecao/jiecaovideoplayer/WebViewActivity.java b/app/src/main/java/fm/jiecao/jiecaovideoplayer/WebViewActivity.java new file mode 100644 index 000000000..88622feed --- /dev/null +++ b/app/src/main/java/fm/jiecao/jiecaovideoplayer/WebViewActivity.java @@ -0,0 +1,90 @@ +package fm.jiecao.jiecaovideoplayer; + +import android.app.ActionBar; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.view.MenuItem; +import android.view.ViewGroup; +import android.webkit.JavascriptInterface; +import android.webkit.WebView; +import android.widget.AbsoluteLayout; + +import com.squareup.picasso.Picasso; + +import fm.jiecao.jcvideoplayer_lib.JCUtils; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer; +import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; + +/** + * Created by Nathen on 16/10/13. + */ + +public class WebViewActivity extends AppCompatActivity { + WebView mWebView; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + getSupportActionBar().setDisplayShowHomeEnabled(true); + getSupportActionBar().setDisplayShowTitleEnabled(true); + getSupportActionBar().setDisplayUseLogoEnabled(false); + getSupportActionBar().setTitle("AboutWebView"); + setContentView(R.layout.activity_webview); + mWebView = (WebView) findViewById(R.id.webview); + mWebView.getSettings().setJavaScriptEnabled(true); + mWebView.addJavascriptInterface(new JCCallBack(), "jcvd"); + mWebView.loadUrl("file:///android_asset/jcvd.html"); + } + + public class JCCallBack { + + @JavascriptInterface + public void adViewJieCaoVideoPlayer(final int width, final int height, final int top, final int left) { + runOnUiThread(new Runnable() { + @Override + public void run() { + JCVideoPlayerStandard webVieo = new JCVideoPlayerStandard(WebViewActivity.this); + webVieo.setUp("http://2449.vod.myqcloud.com/2449_22ca37a6ea9011e5acaaf51d105342e3.f20.mp4", + JCVideoPlayer.SCREEN_LAYOUT_LIST, "嫂子好困"); + Picasso.with(WebViewActivity.this) + .load("http://cos.myqcloud.com/1000264/qcloud_video_attachment/842646334/vod_cover/cover1458036374.jpg") + .into(webVieo.thumbImageView); + ViewGroup.LayoutParams ll = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); + AbsoluteLayout.LayoutParams layoutParams = new AbsoluteLayout.LayoutParams(ll); + layoutParams.y = JCUtils.dip2px(WebViewActivity.this, top); + layoutParams.x = JCUtils.dip2px(WebViewActivity.this, left); + layoutParams.height = JCUtils.dip2px(WebViewActivity.this, height); + layoutParams.width = JCUtils.dip2px(WebViewActivity.this, width); + mWebView.addView(webVieo, layoutParams); + } + }); + + } + } + + @Override + public void onBackPressed() { + if (JCVideoPlayer.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + protected void onPause() { + super.onPause(); + JCVideoPlayer.releaseAllVideos(); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case android.R.id.home: + finish(); + break; + } + return super.onOptionsItemSelected(item); + } +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 072d5427a..460d69963 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -43,6 +43,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" + android:layout_marginTop="8dp" android:text="VideoPlayer above is playing click me to tiny window"/>