pull/589/head
FongMi 10 months ago
parent 991cb864e0
commit 7831feb428
  1. 22
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  2. 39
      app/src/main/java/com/fongmi/android/tv/player/danmaku/Loader.java
  3. 2
      catvod/src/main/java/com/github/catvod/utils/Path.java

@ -16,6 +16,7 @@ import android.support.v4.media.session.MediaControllerCompat;
import android.support.v4.media.session.MediaSessionCompat;
import android.support.v4.media.session.PlaybackStateCompat;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
@ -43,7 +44,6 @@ import com.fongmi.android.tv.bean.Track;
import com.fongmi.android.tv.event.ActionEvent;
import com.fongmi.android.tv.event.ErrorEvent;
import com.fongmi.android.tv.event.PlayerEvent;
import com.fongmi.android.tv.impl.Callback;
import com.fongmi.android.tv.impl.ParseCallback;
import com.fongmi.android.tv.impl.SessionCallback;
import com.fongmi.android.tv.player.danmaku.Loader;
@ -56,7 +56,6 @@ import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.UrlUtil;
import com.fongmi.android.tv.utils.Util;
import com.github.catvod.net.OkHttp;
import com.github.catvod.utils.Path;
import com.google.common.net.HttpHeaders;
import com.orhanobut.logger.Logger;
@ -70,14 +69,11 @@ import java.util.Locale;
import java.util.Map;
import master.flame.danmaku.controller.DrawHandler;
import master.flame.danmaku.danmaku.loader.ILoader;
import master.flame.danmaku.danmaku.model.BaseDanmaku;
import master.flame.danmaku.danmaku.model.DanmakuTimer;
import master.flame.danmaku.danmaku.model.IDisplayer;
import master.flame.danmaku.danmaku.model.android.DanmakuContext;
import master.flame.danmaku.ui.widget.DanmakuView;
import okhttp3.Call;
import okhttp3.Response;
public class Players implements Player.Listener, ParseCallback, DrawHandler.Callback {
@ -493,21 +489,9 @@ public class Players implements Player.Listener, ParseCallback, DrawHandler.Call
}
public void setDanmaku(String path) {
App.execute(() -> danmaku.prepare(new Parser().load(new Loader(path).getDataSource()), context));
danmaku.setVisibility(path.isEmpty() ? View.GONE : View.VISIBLE);
danmaku.release();
OkHttp.cancel("danmaku");
if (TextUtils.isEmpty(path)) return;
OkHttp.newCall(path, "danmaku").enqueue(new Callback() {
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) {
try {
ILoader loader = Loader.create();
loader.load(response.body().byteStream());
danmaku.prepare(new Parser().load(loader.getDataSource()), context);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public void setDanmakuSize(float size) {

@ -1,12 +1,41 @@
package com.fongmi.android.tv.player.danmaku;
import com.fongmi.android.tv.utils.UrlUtil;
import com.github.catvod.net.OkHttp;
import java.io.InputStream;
import master.flame.danmaku.danmaku.loader.ILoader;
import master.flame.danmaku.danmaku.loader.android.BiliDanmakuLoader;
import master.flame.danmaku.danmaku.loader.android.DanmakuLoaderFactory;
import master.flame.danmaku.danmaku.loader.IllegalDataException;
import master.flame.danmaku.danmaku.parser.android.AndroidFileSource;
public class Loader implements ILoader {
public class Loader extends DanmakuLoaderFactory {
private AndroidFileSource dataSource;
public Loader(String url) {
try {
load(url);
} catch (Exception ignored) {
}
}
@Override
public void load(String url) throws IllegalDataException {
try {
OkHttp.cancel("danmaku");
dataSource = new AndroidFileSource(OkHttp.newCall(UrlUtil.convert(url), "danmaku").execute().body().byteStream());
} catch (Exception e) {
throw new IllegalDataException();
}
}
@Override
public void load(InputStream stream) throws IllegalDataException {
}
public static ILoader create() {
return BiliDanmakuLoader.instance();
@Override
public AndroidFileSource getDataSource() {
return dataSource;
}
}

@ -200,7 +200,7 @@ public class Path {
Arrays.sort(files, (o1, o2) -> {
if (o1.isDirectory() && o2.isFile()) return -1;
if (o1.isFile() && o2.isDirectory()) return 1;
return o1.getName().compareTo(o2.getName());
return o1.getName().toLowerCase().compareTo(o2.getName().toLowerCase());
});
}

Loading…
Cancel
Save