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"/>
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_webview.xml b/app/src/main/res/layout/activity_webview.xml
new file mode 100644
index 000000000..ee47151e1
--- /dev/null
+++ b/app/src/main/res/layout/activity_webview.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/layout_standard_fresco.xml b/app/src/main/res/layout/layout_standard_fresco.xml
index 3fd615314..0b8b3cfd4 100755
--- a/app/src/main/res/layout/layout_standard_fresco.xml
+++ b/app/src/main/res/layout/layout_standard_fresco.xml
@@ -131,8 +131,8 @@
2000
- && isCurrentMediaListener()
+ public void autoFullscreen(float x) {
+ if (isCurrentMediaListener()
&& currentState == CURRENT_STATE_PLAYING
&& currentScreen != SCREEN_WINDOW_FULLSCREEN
&& currentScreen != SCREEN_WINDOW_TINY) {
- lastAutoFullscreenTime = System.currentTimeMillis();
+ if (x > 0) {
+ JCUtils.getAppCompActivity(getContext()).setRequestedOrientation(
+ ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
+ } else {
+ JCUtils.getAppCompActivity(getContext()).setRequestedOrientation(
+ ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
+ }
startWindowFullscreen();
}
}
@@ -634,7 +646,10 @@ public static boolean backPress() {
public void startWindowFullscreen() {
Log.i(TAG, "startWindowFullscreen " + " [" + this.hashCode() + "] ");
+ CLICK_QUIT_FULLSCREEN_TIME = System.currentTimeMillis();
hideSupportActionBar(getContext());
+ JCUtils.switchFullOrientation(getContext());
+
ViewGroup vp = (ViewGroup) (JCUtils.scanForActivity(getContext())).getWindow().getDecorView();
// .findViewById(Window.ID_ANDROID_CONTENT);
View old = vp.findViewById(FULLSCREEN_ID);
@@ -648,16 +663,18 @@ public void startWindowFullscreen() {
Constructor constructor = (Constructor) JCVideoPlayer.this.getClass().getConstructor(Context.class);
JCVideoPlayer jcVideoPlayer = constructor.newInstance(getContext());
jcVideoPlayer.setId(FULLSCREEN_ID);
- WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
- int w = wm.getDefaultDisplay().getWidth();
- int h = wm.getDefaultDisplay().getHeight();
- FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(h, w);
- lp.setMargins((w - h) / 2, -(w - h) / 2, 0, 0);
+// WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
+// int w = wm.getDefaultDisplay().getWidth();
+// int h = wm.getDefaultDisplay().getHeight();
+// FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(h, w);
+// lp.setMargins((w - h) / 2, -(w - h) / 2, 0, 0);
+ FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(
+ ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
vp.addView(jcVideoPlayer, lp);
jcVideoPlayer.setUp(url, JCVideoPlayerStandard.SCREEN_WINDOW_FULLSCREEN, objects);
jcVideoPlayer.setUiWitStateAndScreen(currentState);
jcVideoPlayer.addTextureView();
- jcVideoPlayer.setRotation(90);
+// jcVideoPlayer.setRotation(90);
// final Animation ra = AnimationUtils.loadAnimation(getContext(), R.anim.start_fullscreen);
// jcVideoPlayer.setAnimation(ra);
@@ -793,11 +810,15 @@ public void onAudioFocusChange(int focusChange) {
};
public void release() {
-// if (isCurrentMediaListener() &&
-// (System.currentTimeMillis() - CLICK_QUIT_FULLSCREEN_TIME) > FULL_SCREEN_NORMAL_DELAY) {
- Log.d(TAG, "release [" + this.hashCode() + "]");
- releaseAllVideos();
-// }
+ if (url.equals(JCMediaManager.instance().mediaPlayer.getDataSource()) &&
+ (System.currentTimeMillis() - CLICK_QUIT_FULLSCREEN_TIME) > FULL_SCREEN_NORMAL_DELAY) {
+ //如果正在全屏播放就不能手动调用release
+ if (JCVideoPlayerManager.getFirst() != null &&
+ JCVideoPlayerManager.getFirst().getScreenType() != SCREEN_WINDOW_FULLSCREEN) {
+ Log.d(TAG, "release [" + this.hashCode() + "]");
+ releaseAllVideos();
+ }
+ }
}
public boolean isCurrentMediaListener() {
@@ -867,11 +888,14 @@ public static void startFullscreen(Context context, Class _class, String url, Ob
Constructor constructor = _class.getConstructor(Context.class);
JCVideoPlayer jcVideoPlayer = constructor.newInstance(context);
jcVideoPlayer.setId(JCVideoPlayerStandard.FULLSCREEN_ID);
- WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
- int w = wm.getDefaultDisplay().getWidth();
- int h = wm.getDefaultDisplay().getHeight();
- FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(h, w);
- lp.setMargins((w - h) / 2, -(w - h) / 2, 0, 0);
+// WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
+// int w = wm.getDefaultDisplay().getWidth();
+// int h = wm.getDefaultDisplay().getHeight();
+// FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(h, w);
+// lp.setMargins((w - h) / 2, -(w - h) / 2, 0, 0);
+ FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(
+ ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
+
vp.addView(jcVideoPlayer, lp);
// final Animation ra = AnimationUtils.loadAnimation(context, R.anim.start_fullscreen);
@@ -879,7 +903,7 @@ public static void startFullscreen(Context context, Class _class, String url, Ob
jcVideoPlayer.setUp(url, JCVideoPlayerStandard.SCREEN_WINDOW_FULLSCREEN, objects);
jcVideoPlayer.addTextureView();
- jcVideoPlayer.setRotation(90);
+// jcVideoPlayer.setRotation(90);
jcVideoPlayer.startButton.performClick();
@@ -920,22 +944,18 @@ public static void showSupportActionBar(Context context) {
public static class JCAutoFullscreenListener implements SensorEventListener {
@Override
public void onSensorChanged(SensorEvent event) {//可以得到传感器实时测量出来的变化值
- float x = event.values[SensorManager.DATA_X];
+ final float x = event.values[SensorManager.DATA_X];
float y = event.values[SensorManager.DATA_Y];
float z = event.values[SensorManager.DATA_Z];
- if (x < -10) {
- //direction right
- } else if (x > 10) {
- //direction left
- if (JCVideoPlayerManager.getFirst() != null) {
- JCVideoPlayerManager.getFirst().autoFullscreenLeft();
- }
- } else if (y > 9.5) {
- if (JCVideoPlayerManager.getFirst() != null) {
- JCVideoPlayerManager.getFirst().autoQuitFullscreen();
+ //过滤掉用力过猛会有一个反向的大数值
+ if (((x > -15 && x < -10) || (x < 15 && x > 10)) && Math.abs(y) < 1.5) {
+ if ((System.currentTimeMillis() - lastAutoFullscreenTime) > 2000) {
+ if (JCVideoPlayerManager.getFirst() != null) {
+ JCVideoPlayerManager.getFirst().autoFullscreen(x);
+ }
+ lastAutoFullscreenTime = System.currentTimeMillis();
}
}
-
}
@Override
diff --git a/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCVideoPlayerStandard.java b/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCVideoPlayerStandard.java
index 91dbb9d97..86db0981c 100644
--- a/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCVideoPlayerStandard.java
+++ b/jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCVideoPlayerStandard.java
@@ -207,8 +207,8 @@ public void onClick(View v) {
if (JCVideoPlayerManager.CURRENT_SCROLL_LISTENER.get() != null) {
if (JCVideoPlayerManager.CURRENT_SCROLL_LISTENER.get().getUrl() != JCMediaManager.instance().mediaPlayer.getDataSource()) {
// if (!((JCVideoPlayer) JCVideoPlayerManager.CURRENT_SCROLL_LISTENER.get(0).get()).isShown()) {
- releaseAllVideos();
- return;
+ releaseAllVideos();
+ return;
// }
}
}
@@ -343,7 +343,6 @@ public void onStopTrackingTouch(SeekBar seekBar) {
public void startPlayLogic() {
prepareVideo();
- startDismissControlViewTimer();
onEvent(JCBuriedPointStandard.ON_CLICK_START_THUMB);
}
@@ -402,13 +401,13 @@ public void changeUiToNormal() {
case SCREEN_LAYOUT_LIST:
setAllControlsVisible(View.VISIBLE, View.INVISIBLE, View.VISIBLE,
View.INVISIBLE, View.VISIBLE, View.VISIBLE, View.INVISIBLE,
- View.VISIBLE);
+ View.INVISIBLE);
updateStartImage();
break;
case SCREEN_WINDOW_FULLSCREEN:
setAllControlsVisible(View.VISIBLE, View.INVISIBLE, View.VISIBLE,
View.INVISIBLE, View.VISIBLE, View.VISIBLE, View.INVISIBLE,
- View.VISIBLE);
+ View.INVISIBLE);
updateStartImage();
break;
case SCREEN_WINDOW_TINY:
@@ -420,14 +419,14 @@ public void changeUiToPreparingShow() {
switch (currentScreen) {
case SCREEN_LAYOUT_NORMAL:
case SCREEN_LAYOUT_LIST:
- setAllControlsVisible(View.VISIBLE, View.VISIBLE, View.INVISIBLE,
- View.VISIBLE, View.INVISIBLE, View.VISIBLE, View.INVISIBLE,
- View.VISIBLE);
+ setAllControlsVisible(View.VISIBLE, View.INVISIBLE, View.INVISIBLE,
+ View.VISIBLE, View.VISIBLE, View.VISIBLE, View.INVISIBLE,
+ View.INVISIBLE);
break;
case SCREEN_WINDOW_FULLSCREEN:
- setAllControlsVisible(View.VISIBLE, View.VISIBLE, View.INVISIBLE,
- View.VISIBLE, View.INVISIBLE, View.VISIBLE, View.INVISIBLE,
- View.VISIBLE);
+ setAllControlsVisible(View.VISIBLE, View.INVISIBLE, View.INVISIBLE,
+ View.VISIBLE, View.VISIBLE, View.VISIBLE, View.INVISIBLE,
+ View.INVISIBLE);
break;
case SCREEN_WINDOW_TINY:
break;
@@ -439,14 +438,14 @@ public void changeUiToPreparingClear() {
switch (currentScreen) {
case SCREEN_LAYOUT_NORMAL:
case SCREEN_LAYOUT_LIST:
- setAllControlsVisible(View.INVISIBLE, View.INVISIBLE, View.INVISIBLE,
- View.VISIBLE, View.INVISIBLE, View.VISIBLE, View.INVISIBLE,
- View.VISIBLE);
+ setAllControlsVisible(View.VISIBLE, View.INVISIBLE, View.INVISIBLE,
+ View.VISIBLE, View.VISIBLE, View.VISIBLE, View.INVISIBLE,
+ View.INVISIBLE);
break;
case SCREEN_WINDOW_FULLSCREEN:
- setAllControlsVisible(View.INVISIBLE, View.INVISIBLE, View.INVISIBLE,
- View.VISIBLE, View.INVISIBLE, View.VISIBLE, View.INVISIBLE,
- View.VISIBLE);
+ setAllControlsVisible(View.VISIBLE, View.INVISIBLE, View.INVISIBLE,
+ View.VISIBLE, View.VISIBLE, View.VISIBLE, View.INVISIBLE,
+ View.INVISIBLE);
break;
case SCREEN_WINDOW_TINY:
break;
@@ -454,19 +453,29 @@ public void changeUiToPreparingClear() {
}
+ //JustPreparedUi
+ @Override
+ public void onPrepared() {
+ super.onPrepared();
+ setAllControlsVisible(View.VISIBLE, View.INVISIBLE, View.INVISIBLE,
+ View.INVISIBLE, View.INVISIBLE, View.INVISIBLE, View.VISIBLE,
+ View.INVISIBLE);
+ startDismissControlViewTimer();
+ }
+
public void changeUiToPlayingShow() {
switch (currentScreen) {
case SCREEN_LAYOUT_NORMAL:
case SCREEN_LAYOUT_LIST:
setAllControlsVisible(View.VISIBLE, View.VISIBLE, View.VISIBLE,
View.INVISIBLE, View.INVISIBLE, View.INVISIBLE, View.INVISIBLE,
- cacheImageView.getVisibility());
+ View.INVISIBLE);
updateStartImage();
break;
case SCREEN_WINDOW_FULLSCREEN:
setAllControlsVisible(View.VISIBLE, View.VISIBLE, View.VISIBLE,
View.INVISIBLE, View.INVISIBLE, View.INVISIBLE, View.INVISIBLE,
- cacheImageView.getVisibility());
+ View.INVISIBLE);
updateStartImage();
break;
case SCREEN_WINDOW_TINY:
@@ -680,8 +689,6 @@ public void showProgressDialog(float deltaX, String seekTime, int seekTimePositi
super.showProgressDialog(deltaX, seekTime, seekTimePosition, totalTime, totalTimeDuration);
if (mProgressDialog == null) {
View localView = LayoutInflater.from(getContext()).inflate(R.layout.jc_progress_dialog, null);
- View content = localView.findViewById(R.id.content);
- content.setRotation(90);
mDialogProgressBar = ((ProgressBar) localView.findViewById(R.id.duration_progressbar));
mDialogSeekTime = ((TextView) localView.findViewById(R.id.tv_current));
mDialogTotalTime = ((TextView) localView.findViewById(R.id.tv_duration));
@@ -693,8 +700,8 @@ public void showProgressDialog(float deltaX, String seekTime, int seekTimePositi
mProgressDialog.getWindow().addFlags(16);
mProgressDialog.getWindow().setLayout(-2, -2);
WindowManager.LayoutParams localLayoutParams = mProgressDialog.getWindow().getAttributes();
- localLayoutParams.gravity = Gravity.CENTER_VERTICAL | Gravity.RIGHT;
- localLayoutParams.x = getResources().getDimensionPixelOffset(R.dimen.jc_progress_dialog_margin_top) / 2;
+ localLayoutParams.gravity = 49;
+ localLayoutParams.y = getResources().getDimensionPixelOffset(fm.jiecao.jcvideoplayer_lib.R.dimen.jc_progress_dialog_margin_top);
mProgressDialog.getWindow().setAttributes(localLayoutParams);
}
if (!mProgressDialog.isShowing()) {
@@ -729,8 +736,6 @@ public void showVolumeDialog(float deltaY, int volumePercent) {
super.showVolumeDialog(deltaY, volumePercent);
if (mVolumeDialog == null) {
View localView = LayoutInflater.from(getContext()).inflate(R.layout.jc_volume_dialog, null);
- View content = localView.findViewById(R.id.content);
- content.setRotation(90);
mDialogVolumeProgressBar = ((ProgressBar) localView.findViewById(R.id.volume_progressbar));
mVolumeDialog = new Dialog(getContext(), R.style.jc_style_dialog_progress);
mVolumeDialog.setContentView(localView);
@@ -739,8 +744,8 @@ public void showVolumeDialog(float deltaY, int volumePercent) {
mVolumeDialog.getWindow().addFlags(16);
mVolumeDialog.getWindow().setLayout(-2, -2);
WindowManager.LayoutParams localLayoutParams = mVolumeDialog.getWindow().getAttributes();
- localLayoutParams.gravity = Gravity.CENTER_HORIZONTAL | Gravity.TOP;
-// localLayoutParams.y = getContext().getResources().getDimensionPixelOffset(R.dimen.jc_volume_dialog_margin_left);
+ localLayoutParams.gravity = 19;
+ localLayoutParams.x = getContext().getResources().getDimensionPixelOffset(R.dimen.jc_volume_dialog_margin_left);
mVolumeDialog.getWindow().setAttributes(localLayoutParams);
}
if (!mVolumeDialog.isShowing()) {
diff --git a/jcvideoplayer-lib/src/main/res/drawable-xhdpi/jc_loading_bg.png b/jcvideoplayer-lib/src/main/res/drawable-xhdpi/jc_loading_bg.png
index cd1f03428..bc811b160 100644
Binary files a/jcvideoplayer-lib/src/main/res/drawable-xhdpi/jc_loading_bg.png and b/jcvideoplayer-lib/src/main/res/drawable-xhdpi/jc_loading_bg.png differ
diff --git a/jcvideoplayer-lib/src/main/res/layout/jc_layout_base.xml b/jcvideoplayer-lib/src/main/res/layout/jc_layout_base.xml
index c863e3b07..1bb268cb4 100644
--- a/jcvideoplayer-lib/src/main/res/layout/jc_layout_base.xml
+++ b/jcvideoplayer-lib/src/main/res/layout/jc_layout_base.xml
@@ -72,8 +72,8 @@
-
+ android:layout_height="wrap_content"
+ android:orientation="vertical">
+
+
-
-
+ android:layout_gravity="center_horizontal"
+ android:layout_marginTop="20dp"
+ android:gravity="center_horizontal"
+ android:orientation="horizontal">
-
-
-
-
-
-
+ android:textColor="#fff85959"
+ android:textSize="14.0sp" />
-
+
-
-
-
+
+
diff --git a/jcvideoplayer-lib/src/main/res/layout/jc_volume_dialog.xml b/jcvideoplayer-lib/src/main/res/layout/jc_volume_dialog.xml
index fb981884b..843feb6f1 100644
--- a/jcvideoplayer-lib/src/main/res/layout/jc_volume_dialog.xml
+++ b/jcvideoplayer-lib/src/main/res/layout/jc_volume_dialog.xml
@@ -1,39 +1,31 @@
-
+
-
-
-
-
-
-
-
-
-
+
+
+
+
diff --git a/jcvideoplayer-lib/src/main/res/values-pt/strings.xml b/jcvideoplayer-lib/src/main/res/values-pt/strings.xml
new file mode 100644
index 000000000..de281bc76
--- /dev/null
+++ b/jcvideoplayer-lib/src/main/res/values-pt/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Você está usando a rede móvel, você deseja mesmo ver o video?
+ Continuar
+ Parar
+ Sem Vídeo
+