Support live epg - part 1

pull/123/head
FongMi 4 years ago
parent d31ebc4827
commit 440275996d
  1. 45
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  2. 1
      app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java
  3. 9
      app/src/main/java/com/fongmi/android/tv/bean/Channel.java
  4. 79
      app/src/main/java/com/fongmi/android/tv/bean/Epg.java
  5. 9
      app/src/main/java/com/fongmi/android/tv/utils/Utils.java

@ -18,12 +18,15 @@ import com.fongmi.android.tv.App;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.api.LiveConfig;
import com.fongmi.android.tv.bean.Channel;
import com.fongmi.android.tv.bean.Epg;
import com.fongmi.android.tv.bean.Group;
import com.fongmi.android.tv.bean.Keep;
import com.fongmi.android.tv.databinding.ActivityLiveBinding;
import com.fongmi.android.tv.event.PlayerEvent;
import com.fongmi.android.tv.impl.PassCallback;
import com.fongmi.android.tv.model.LiveViewModel;
import com.fongmi.android.tv.net.Callback;
import com.fongmi.android.tv.net.OKHttp;
import com.fongmi.android.tv.player.Players;
import com.fongmi.android.tv.player.source.Force;
import com.fongmi.android.tv.ui.custom.CustomKeyDownLive;
@ -41,18 +44,24 @@ import com.google.android.exoplayer2.ui.StyledPlayerView;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import okhttp3.Call;
import okhttp3.Response;
public class LiveActivity extends BaseActivity implements GroupPresenter.OnClickListener, ChannelPresenter.OnClickListener, CustomKeyDownLive.Listener, CustomLiveListView.Callback, PassCallback {
private ActivityLiveBinding mBinding;
private ArrayObjectAdapter mChannelAdapter;
private ArrayObjectAdapter mGroupAdapter;
private SimpleDateFormat mFormatDate;
private SimpleDateFormat mFormatTime;
private CustomKeyDownLive mKeyDown;
private SimpleDateFormat mFormat;
private LiveViewModel mViewModel;
private List<Group> mHides;
private Players mPlayers;
@ -96,7 +105,8 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
mR2 = this::setChannelActivated;
mPlayers = new Players().init();
mKeyDown = CustomKeyDownLive.create(this);
mFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
mFormatDate = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
mFormatTime = new SimpleDateFormat("yyyy-MM-ddHH:mm", Locale.getDefault());
mHides = new ArrayList<>();
setRecyclerView();
setViewModel();
@ -207,21 +217,40 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
mBinding.info.line.setText(mChannel.getLineText());
mBinding.info.number.setText(mChannel.getNumber());
mBinding.info.getRoot().setVisibility(View.VISIBLE);
getEpg();
checkEpg();
}
private void resetPass() {
this.count = 0;
}
private void getEpg() {
/*String epg = mChannel.getEpg().replace("{date}", mFormat.format(new Date()));
OKHttp.newCall(epg).enqueue(new Callback(){
private void checkEpg() {
if (mChannel.getEpg().isEmpty()) return;
String date = mFormatDate.format(new Date());
String epg = mChannel.getEpg().replace("{date}", date);
if (mChannel.getData().equal(date)) showEpg();
else getEpg(epg, mChannel);
}
private void getEpg(String epg, Channel channel) {
OKHttp.newCall(epg).enqueue(new Callback() {
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
Log.e("DDD", response.body().string());
channel.setData(Epg.objectFrom(response.body().string()));
channel.getData().initTime(mFormatTime);
if (mChannel.equals(channel)) App.post(() -> showEpg());
}
});*/
});
}
private void showEpg() {
Date now = new Date();
for (Epg epg : mChannel.getData().getList()) {
if (epg.getStartTime() <= now.getTime() && now.getTime() <= epg.getEndTime()) {
mBinding.info.play.setText(epg.getTitle());
break;
}
}
}
@Override

@ -184,5 +184,6 @@ public class LiveConfig {
this.home.setActivated(true);
config.home(home.getName()).update();
for (Live item : lives) item.setActivated(home);
App.execute(() -> LiveParser.start(home, getText(home.getUrl())));
}
}

@ -38,6 +38,7 @@ public class Channel {
private boolean selected;
private Group group;
private String url;
private Epg data;
private int line;
public static Channel objectFrom(JsonElement element) {
@ -127,6 +128,14 @@ public class Channel {
this.url = url;
}
public Epg getData() {
return data == null ? new Epg() : data;
}
public void setData(Epg data) {
this.data = data;
}
public int getLine() {
return line;
}

@ -1,4 +1,83 @@
package com.fongmi.android.tv.bean;
import android.text.TextUtils;
import com.fongmi.android.tv.utils.Utils;
import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;
import java.text.SimpleDateFormat;
import java.util.Collections;
import java.util.List;
public class Epg {
@SerializedName("date")
private String date;
@SerializedName("epg_data")
private List<Epg> list;
@SerializedName("title")
private String title;
@SerializedName("start")
private String start;
@SerializedName("end")
private String end;
private long startTime;
private long endTime;
public static Epg objectFrom(String str) {
try {
return new Gson().fromJson(str, Epg.class);
} catch (Exception e) {
return new Epg();
}
}
public String getDate() {
return TextUtils.isEmpty(date) ? "" : date;
}
public List<Epg> getList() {
return list == null ? Collections.emptyList() : list;
}
public String getTitle() {
return TextUtils.isEmpty(title) ? "" : title;
}
public String getStart() {
return TextUtils.isEmpty(start) ? "" : start;
}
public String getEnd() {
return TextUtils.isEmpty(end) ? "" : end;
}
public long getStartTime() {
return startTime;
}
public void setStartTime(long startTime) {
this.startTime = startTime;
}
public long getEndTime() {
return endTime;
}
public void setEndTime(long endTime) {
this.endTime = endTime;
}
public boolean equal(String date) {
return getDate().equals(date);
}
public void initTime(SimpleDateFormat format) {
for (Epg epg : getList()) {
epg.setStartTime(Utils.format(format, getDate().concat(epg.getStart())));
epg.setEndTime(Utils.format(format, getDate().concat(epg.getEnd())));
}
}
}

@ -17,6 +17,7 @@ import com.google.android.exoplayer2.util.Util;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
@ -132,6 +133,14 @@ public class Utils {
return text;
}
public static long format(SimpleDateFormat format, String src) {
try {
return format.parse(src).getTime();
} catch (Exception e) {
return 0;
}
}
public static int getDigit(String text) {
try {
if (text.startsWith("上") || text.startsWith("下")) return -1;

Loading…
Cancel
Save