Sync history position

pull/137/head
FongMi 3 years ago
parent 6b659fafac
commit dca2f5ea95
  1. 5
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
  2. 19
      app/src/main/java/com/fongmi/android/tv/bean/History.java
  3. 35
      app/src/main/java/com/fongmi/android/tv/bean/Vod.java
  4. 9
      app/src/main/java/com/fongmi/android/tv/utils/Utils.java

@ -481,8 +481,8 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen
mControl.ending.setText(mPlayers.getStringForTime(mHistory.getEnding()));
} else {
mHistory = createHistory();
setFlagActivated((Vod.Flag) mFlagAdapter.get(0));
setEpisodeActivated((Vod.Flag.Episode) mEpisodeAdapter.get(0));
setFlagActivated(mHistory.getFlag());
setEpisodeActivated(mHistory.getEpisode());
mControl.opening.setText(mPlayers.getStringForTime(0));
mControl.ending.setText(mPlayers.getStringForTime(0));
}
@ -494,6 +494,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen
history.setCid(ApiConfig.getCid());
history.setVodPic(mBinding.video.getTag().toString());
history.setVodName(mBinding.name.getText().toString());
history.findEpisode(mFlagAdapter);
return history;
}

@ -1,6 +1,7 @@
package com.fongmi.android.tv.bean;
import androidx.annotation.NonNull;
import androidx.leanback.widget.ArrayObjectAdapter;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
@ -203,4 +204,22 @@ public class History {
AppDatabase.get().getHistoryDao().delete(ApiConfig.getCid(), getKey());
return this;
}
public void findEpisode(ArrayObjectAdapter adapter) {
Vod.Flag flag = (Vod.Flag) adapter.get(0);
setVodFlag(flag.getFlag());
setVodRemarks(flag.getEpisodes().get(0).getName());
for (History item : AppDatabase.get().getHistoryDao().findByName(ApiConfig.getCid(), getVodName())) {
if (getPosition() > 0) break;
for (int i = 0; i < adapter.size(); i++) {
flag = (Vod.Flag) adapter.get(i);
String episode = flag.find(item.getVodRemarks());
if (episode.isEmpty()) continue;
setPosition(item.getPosition());
setVodFlag(flag.getFlag());
setVodRemarks(episode);
break;
}
}
}
}

@ -7,6 +7,7 @@ import androidx.annotation.NonNull;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.Utils;
import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;
import com.google.gson.reflect.TypeToken;
@ -200,10 +201,6 @@ public class Vod {
private boolean activated;
public static Flag objectFrom(String str) {
return new Gson().fromJson(str, Flag.class);
}
public Flag() {
this.episodes = new ArrayList<>();
}
@ -225,6 +222,14 @@ public class Vod {
return episodes;
}
public boolean isActivated() {
return activated;
}
public void setActivated(boolean activated) {
this.activated = activated;
}
public void createEpisode(String data) {
String[] urls = data.contains("#") ? data.split("#") : new String[]{data};
String play = ResUtil.getString(R.string.play);
@ -235,19 +240,18 @@ public class Vod {
}
}
public boolean isActivated() {
return activated;
}
public void setActivated(boolean activated) {
this.activated = activated;
}
public void toggle(boolean activated, Episode episode) {
if (activated) for (Episode item : getEpisodes()) item.setActivated(episode);
else for (Episode item : getEpisodes()) item.deactivated();
}
public String find(String remarks) {
int number = Utils.getDigit(remarks);
for (Vod.Flag.Episode item : getEpisodes()) if (number == item.getNumber()) return item.getName();
if (getEpisodes().size() == 1) return getEpisodes().get(0).getName();
return "";
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
@ -269,11 +273,14 @@ public class Vod {
@SerializedName("url")
private final String url;
private final int number;
private boolean activated;
public Episode(String name, String url) {
this.name = name;
this.url = url;
this.number = Utils.getDigit(name);
}
public String getName() {
@ -284,6 +291,10 @@ public class Vod {
return url;
}
public int getNumber() {
return number;
}
public boolean isActivated() {
return activated;
}

@ -55,7 +55,6 @@ public class Utils {
public static boolean isVideoFormat(String url, Map<String, String> headers) {
if (headers.containsKey("Range")) return true;
if (headers.containsKey("Accept") && Objects.requireNonNull(headers.get("Accept")).contains("image")) return false;
if (url.contains("=http") || url.contains("=https") || url.contains("=https%3a%2f") || url.contains("=http%3a%2f") || url.contains(".js") || url.contains(".css")) return false;
return SNIFFER.matcher(url).find();
}
@ -63,6 +62,14 @@ public class Utils {
return Base64.encodeToString(ext.getBytes(), Base64.DEFAULT | Base64.NO_WRAP);
}
public static int getDigit(String text) {
try {
return Integer.parseInt(text.replaceAll("\\D+", ""));
} catch (Exception e) {
return 0;
}
}
public static void hideKeyboard(View view) {
InputMethodManager imm = (InputMethodManager) App.get().getSystemService(Context.INPUT_METHOD_SERVICE);
IBinder windowToken = view.getWindowToken();

Loading…
Cancel
Save