diff --git a/app/src/main/java/com/fongmi/android/tv/player/Players.java b/app/src/main/java/com/fongmi/android/tv/player/Players.java index f53a4af09..1d7974ce9 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/Players.java +++ b/app/src/main/java/com/fongmi/android/tv/player/Players.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) { diff --git a/app/src/main/java/com/fongmi/android/tv/player/danmaku/Loader.java b/app/src/main/java/com/fongmi/android/tv/player/danmaku/Loader.java index f93af080a..75adc9651 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/danmaku/Loader.java +++ b/app/src/main/java/com/fongmi/android/tv/player/danmaku/Loader.java @@ -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; } } \ No newline at end of file diff --git a/catvod/src/main/java/com/github/catvod/utils/Path.java b/catvod/src/main/java/com/github/catvod/utils/Path.java index 3e473485a..a4010df93 100644 --- a/catvod/src/main/java/com/github/catvod/utils/Path.java +++ b/catvod/src/main/java/com/github/catvod/utils/Path.java @@ -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()); }); }