pull/589/head
FongMi 10 months ago
parent 7831feb428
commit 19d03cae86
  1. 3
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  2. 8
      app/src/main/java/com/fongmi/android/tv/bean/Danmaku.java
  3. 16
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  4. 16
      app/src/main/java/com/fongmi/android/tv/player/danmaku/Loader.java
  5. 2
      app/src/main/java/com/fongmi/android/tv/ui/dialog/DanmakuDialog.java
  6. 3
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java

@ -38,6 +38,7 @@ import com.fongmi.android.tv.Constant;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.Setting;
import com.fongmi.android.tv.api.config.VodConfig;
import com.fongmi.android.tv.bean.Danmaku;
import com.fongmi.android.tv.bean.Episode;
import com.fongmi.android.tv.bean.Flag;
import com.fongmi.android.tv.bean.History;
@ -1042,8 +1043,8 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
if (isRedirect()) return;
if (event.getType() == RefreshEvent.Type.DETAIL) getDetail();
else if (event.getType() == RefreshEvent.Type.PLAYER) onRefresh();
else if (event.getType() == RefreshEvent.Type.DANMAKU) mPlayers.setDanmaku(event.getPath());
else if (event.getType() == RefreshEvent.Type.SUBTITLE) mPlayers.setSub(Sub.from(event.getPath()));
else if (event.getType() == RefreshEvent.Type.DANMAKU) mPlayers.setDanmaku(Danmaku.from(event.getPath()));
}
@Subscribe(threadMode = ThreadMode.MAIN)

@ -22,6 +22,10 @@ public class Danmaku {
return List.of(danmaku);
}
public static Danmaku empty() {
return new Danmaku();
}
public String getName() {
return TextUtils.isEmpty(name) ? getUrl() : name;
}
@ -45,4 +49,8 @@ public class Danmaku {
public void setSelected(boolean selected) {
this.selected = selected;
}
public boolean isEmpty() {
return getUrl().isEmpty();
}
}

@ -16,7 +16,6 @@ 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;
@ -469,7 +468,7 @@ public class Players implements Player.Listener, ParseCallback, DrawHandler.Call
private void setMediaItem(Result result, int timeout) {
setMediaItem(result.getHeaders(), result.getRealUrl(), result.getFormat(), result.getDrm(), result.getSubs(), timeout);
setDanmaku(danmakus = result.getDanmaku());
setDanmaku(result.getDanmaku());
}
private void setMediaItem(Map<String, String> headers, String url, String format, Drm drm, List<Sub> subs, int timeout) {
@ -481,17 +480,18 @@ public class Players implements Player.Listener, ParseCallback, DrawHandler.Call
prepare();
}
private void setDanmaku(List<Danmaku> items) {
public void setDanmaku(List<Danmaku> items) {
danmakus = items;
danmaku.release();
danmaku.setVisibility(items.isEmpty() ? View.GONE : View.VISIBLE);
if (!items.isEmpty()) setDanmaku(items.get(0).getUrl());
if (!items.isEmpty()) App.execute(() -> danmaku.prepare(new Parser().load(new Loader(items.get(0)).getDataSource()), context));
if (!items.isEmpty()) items.get(0).setSelected(true);
else danmaku.release();
}
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);
public void setDanmaku(Danmaku item) {
danmaku.release();
danmaku.setVisibility(item.isEmpty() ? View.GONE : View.VISIBLE);
if (!item.isEmpty()) App.execute(() -> danmaku.prepare(new Parser().load(new Loader(item).getDataSource()), context));
}
public void setDanmakuSize(float size) {

@ -1,8 +1,10 @@
package com.fongmi.android.tv.player.danmaku;
import com.fongmi.android.tv.bean.Danmaku;
import com.fongmi.android.tv.utils.UrlUtil;
import com.github.catvod.net.OkHttp;
import java.io.IOException;
import java.io.InputStream;
import master.flame.danmaku.danmaku.loader.ILoader;
@ -13,10 +15,11 @@ public class Loader implements ILoader {
private AndroidFileSource dataSource;
public Loader(String url) {
public Loader(Danmaku item) {
try {
load(url);
} catch (Exception ignored) {
load(item.getUrl());
} catch (Exception e) {
e.printStackTrace();
}
}
@ -24,14 +27,15 @@ public class Loader implements ILoader {
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();
load(OkHttp.newCall(UrlUtil.convert(url), "danmaku").execute().body().byteStream());
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void load(InputStream stream) throws IllegalDataException {
dataSource = new AndroidFileSource(stream);
}
@Override

@ -59,7 +59,7 @@ public final class DanmakuDialog extends BaseDialog implements DanmakuAdapter.On
@Override
public void onItemClick(Danmaku item) {
player.setDanmaku(item.isSelected() ? item.getUrl() : "");
player.setDanmaku(item.isSelected() ? item : Danmaku.empty());
dismiss();
}
}

@ -42,6 +42,7 @@ import com.fongmi.android.tv.R;
import com.fongmi.android.tv.Setting;
import com.fongmi.android.tv.api.config.VodConfig;
import com.fongmi.android.tv.bean.CastVideo;
import com.fongmi.android.tv.bean.Danmaku;
import com.fongmi.android.tv.bean.Episode;
import com.fongmi.android.tv.bean.Flag;
import com.fongmi.android.tv.bean.History;
@ -1084,8 +1085,8 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
if (isRedirect()) return;
if (event.getType() == RefreshEvent.Type.DETAIL) getDetail();
else if (event.getType() == RefreshEvent.Type.PLAYER) onRefresh();
else if (event.getType() == RefreshEvent.Type.DANMAKU) mPlayers.setDanmaku(event.getPath());
else if (event.getType() == RefreshEvent.Type.SUBTITLE) mPlayers.setSub(Sub.from(event.getPath()));
else if (event.getType() == RefreshEvent.Type.DANMAKU) mPlayers.setDanmaku(Danmaku.from(event.getPath()));
}
@Subscribe(threadMode = ThreadMode.MAIN)

Loading…
Cancel
Save