diff --git a/app/build.gradle b/app/build.gradle
index ce3bb535d5bf0bfa8ff755a98c5090b7d8e23c7b..d26da2220d9827c0bedcb8fd6fc1ec0cffb3a503 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -65,6 +65,10 @@ dependencies {
implementation androidDependencies.design
implementation project(':gsyVideoPlayer')
+
+ implementation 'com.squareup.okhttp3:okhttp:3.2.0'
+ implementation 'com.zhy:okhttputils:2.6.2'
+
//jcenter
//implementation "com.shuyu:GSYVideoPlayer:$gsyVideoVersion"
diff --git a/app/src/main/java/com/example/gsyvideoplayer/DanmkuVideoActivity.java b/app/src/main/java/com/example/gsyvideoplayer/DanmkuVideoActivity.java
index 971551bee2e6827d0d72cf68c8f621391d31ce23..c235ef37707d9e04be60c1962a722e5d954a6856 100644
--- a/app/src/main/java/com/example/gsyvideoplayer/DanmkuVideoActivity.java
+++ b/app/src/main/java/com/example/gsyvideoplayer/DanmkuVideoActivity.java
@@ -3,8 +3,11 @@ package com.example.gsyvideoplayer;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.os.Bundle;
+import android.os.Environment;
import android.support.v4.widget.NestedScrollView;
import android.support.v7.app.AppCompatActivity;
+import android.text.TextUtils;
+import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;
@@ -16,9 +19,20 @@ import com.shuyu.gsyvideoplayer.video.base.GSYVideoPlayer;
import com.shuyu.gsyvideoplayer.listener.LockClickListener;
import com.shuyu.gsyvideoplayer.utils.OrientationUtils;
import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer;
+import com.zhy.http.okhttp.OkHttpUtils;
+import com.zhy.http.okhttp.callback.FileCallBack;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
import butterknife.BindView;
import butterknife.ButterKnife;
+import okhttp3.Call;
/**
* Created by guoshuyu on 2017/2/19.
@@ -39,6 +53,7 @@ public class DanmkuVideoActivity extends AppCompatActivity {
private boolean isPlay;
private boolean isPause;
+ private boolean isDestory;
private OrientationUtils orientationUtils;
@@ -98,6 +113,7 @@ public class DanmkuVideoActivity extends AppCompatActivity {
//开始播放了才能旋转和全屏
orientationUtils.setEnable(true);
isPlay = true;
+ getDanmu();
}
@Override
@@ -168,6 +184,8 @@ public class DanmkuVideoActivity extends AppCompatActivity {
//GSYPreViewManager.instance().releaseMediaPlayer();
if (orientationUtils != null)
orientationUtils.releaseListener();
+
+ isDestory = true;
}
@@ -181,6 +199,45 @@ public class DanmkuVideoActivity extends AppCompatActivity {
}
+ private void getDanmu() {
+ OkHttpUtils.get().url(TextUtils.concat("http://xingyuyou.com/Public/app/barragefile/","608","barrage.txt").toString())
+ .build()
+ .execute(new FileCallBack(getApplication().getCacheDir().getAbsolutePath(), "barrage.txt")//
+ {
+ @Override
+ public void onError(Call call, Exception e, int id) {
+ }
+
+ @Override
+ public void onResponse(File response, int id) {
+ try {
+ InputStream instream = new FileInputStream(response);
+ InputStreamReader inputreader = new InputStreamReader(instream);
+ BufferedReader buffreader = new BufferedReader(inputreader);
+ String line;
+ StringBuilder sb1=new StringBuilder();
+ sb1.append("");
+ //分行读取
+ while (( line = buffreader.readLine()) != null) {
+ sb1.append(line);
+ }
+ sb1.append("");
+ Log.e("3333333",sb1.toString());
+ instream.close();
+ if(!isDestory) {
+ ((DanmakuVideoPlayer)danmakuVideoPlayer.getCurrentPlayer()).setDanmaKuStream(response);
+ }
+ } catch (java.io.FileNotFoundException e) {
+ Log.d("TestFile", "The File doesn't not exist.");
+ } catch (IOException e) {
+ Log.d("TestFile", e.getMessage());
+ }
+
+ }
+
+ });
+ }
+
private void resolveNormalVideoUI() {
//增加title
danmakuVideoPlayer.getTitleTextView().setVisibility(View.GONE);
diff --git a/app/src/main/java/com/example/gsyvideoplayer/video/DanmakuVideoPlayer.java b/app/src/main/java/com/example/gsyvideoplayer/video/DanmakuVideoPlayer.java
index 6edcb3c53e67adf9f353c4b96db81f4f63be4cd4..781b956e814035b0deac4455abfabdbca3e0f7d7 100644
--- a/app/src/main/java/com/example/gsyvideoplayer/video/DanmakuVideoPlayer.java
+++ b/app/src/main/java/com/example/gsyvideoplayer/video/DanmakuVideoPlayer.java
@@ -3,6 +3,7 @@ package com.example.gsyvideoplayer.video;
import android.content.Context;
import android.graphics.Color;
import android.util.AttributeSet;
+import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
@@ -15,7 +16,13 @@ import com.shuyu.gsyvideoplayer.utils.Debuger;
import com.shuyu.gsyvideoplayer.video.base.GSYBaseVideoPlayer;
import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer;
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
import java.util.HashMap;
import master.flame.danmaku.controller.IDanmakuView;
@@ -55,6 +62,8 @@ public class DanmakuVideoPlayer extends StandardGSYVideoPlayer {
private boolean mDanmaKuShow = true;
+ private File mIs;
+
public DanmakuVideoPlayer(Context context, Boolean fullFlag) {
super(context, fullFlag);
}
@@ -145,6 +154,12 @@ public class DanmakuVideoPlayer extends StandardGSYVideoPlayer {
}
}
+ @Override
+ protected void cloneParams(GSYBaseVideoPlayer from, GSYBaseVideoPlayer to) {
+ ((DanmakuVideoPlayer)to).mIs = ((DanmakuVideoPlayer)from).mIs;
+ super.cloneParams(from, to);
+ }
+
/**
* 处理播放器在全屏切换时,弹幕显示的逻辑
* 需要格外注意的是,因为全屏和小屏,是切换了播放器,所以需要同步之间的弹幕状态
@@ -181,6 +196,13 @@ public class DanmakuVideoPlayer extends StandardGSYVideoPlayer {
}
}
+ public void setDanmaKuStream(File is) {
+ mIs = is;
+ if(!getDanmakuView().isPrepared()) {
+ onPrepareDanmaku((DanmakuVideoPlayer)getCurrentPlayer());
+ }
+ }
+
private void initDanmaku() {
// 设置最大显示行数
@@ -199,7 +221,9 @@ public class DanmakuVideoPlayer extends StandardGSYVideoPlayer {
.preventOverlapping(overlappingEnablePair);
if (mDanmakuView != null) {
//todo 替换成你的数据流
- mParser = createParser(this.getResources().openRawResource(R.raw.comments));
+ if(mIs != null) {
+ mParser = createParser(getIsStream(mIs));
+ }
mDanmakuView.setCallback(new master.flame.danmaku.controller.DrawHandler.Callback() {
@Override
public void updateTimer(DanmakuTimer timer) {
@@ -230,6 +254,30 @@ public class DanmakuVideoPlayer extends StandardGSYVideoPlayer {
}
}
+ private InputStream getIsStream(File file) {
+ try {
+ InputStream instream = new FileInputStream(file);
+ InputStreamReader inputreader = new InputStreamReader(instream);
+ BufferedReader buffreader = new BufferedReader(inputreader);
+ String line;
+ StringBuilder sb1=new StringBuilder();
+ sb1.append("");
+ //分行读取
+ while (( line = buffreader.readLine()) != null) {
+ sb1.append(line);
+ }
+ sb1.append("");
+ Log.e("3333333",sb1.toString());
+ instream.close();
+ return new ByteArrayInputStream(sb1.toString().getBytes());
+ } catch (java.io.FileNotFoundException e) {
+ Log.d("TestFile", "The File doesn't not exist.");
+ } catch (IOException e) {
+ Log.d("TestFile", e.getMessage());
+ }
+ return null;
+ }
+
/**
* 弹幕的显示与关闭
*/
@@ -255,7 +303,7 @@ public class DanmakuVideoPlayer extends StandardGSYVideoPlayer {
* 开始播放弹幕
*/
private void onPrepareDanmaku(DanmakuVideoPlayer gsyVideoPlayer) {
- if (gsyVideoPlayer.getDanmakuView() != null && !gsyVideoPlayer.getDanmakuView().isPrepared()) {
+ if (gsyVideoPlayer.getDanmakuView() != null && !gsyVideoPlayer.getDanmakuView().isPrepared() && gsyVideoPlayer.getParser() != null) {
gsyVideoPlayer.getDanmakuView().prepare(gsyVideoPlayer.getParser(),
gsyVideoPlayer.getDanmakuContext());
}
@@ -314,6 +362,11 @@ public class DanmakuVideoPlayer extends StandardGSYVideoPlayer {
}
public BaseDanmakuParser getParser() {
+ if(mParser == null) {
+ if (mIs != null) {
+ mParser = createParser(getIsStream(mIs));
+ }
+ }
return mParser;
}