diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java index 464d26126..36d7bf992 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java @@ -131,7 +131,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen int index = getRecommendIndex(); mViewModel.getResult().setValue(Result.empty()); if (mAdapter.size() > index) mAdapter.removeItems(index, mAdapter.size() - index); - if (ApiConfig.get().getHome().getName().isEmpty()) mBinding.title.setText(R.string.app_name); + if (ApiConfig.getHomeName().isEmpty()) mBinding.title.setText(R.string.app_name); else mBinding.title.setText(ApiConfig.getHomeName()); if (ApiConfig.get().getHome().getKey().isEmpty()) return; mViewModel.homeContent(); diff --git a/app/src/leanback/res/layout/activity_setting.xml b/app/src/leanback/res/layout/activity_setting.xml index a202ab8c1..5ed3b3f66 100644 --- a/app/src/leanback/res/layout/activity_setting.xml +++ b/app/src/leanback/res/layout/activity_setting.xml @@ -26,6 +26,7 @@ @@ -34,6 +35,7 @@ android:id="@+id/vodUrl" android:layout_width="match_parent" android:layout_height="wrap_content" + android:ellipsize="middle" android:gravity="end" android:singleLine="true" android:textColor="@color/white" @@ -88,6 +90,7 @@ @@ -96,6 +99,7 @@ android:id="@+id/liveUrl" android:layout_width="match_parent" android:layout_height="wrap_content" + android:ellipsize="middle" android:gravity="end" android:singleLine="true" android:textColor="@color/white" @@ -151,6 +155,7 @@ @@ -159,6 +164,7 @@ android:id="@+id/wallUrl" android:layout_width="match_parent" android:layout_height="wrap_content" + android:ellipsize="middle" android:gravity="end" android:singleLine="true" android:textColor="@color/white" diff --git a/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java b/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java index 7f359dd25..e5ca0c3d0 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java @@ -73,6 +73,8 @@ public class ApiConfig { } public ApiConfig init() { + this.home = null; + this.wall = null; this.config = Config.vod(); this.ads = new ArrayList<>(); this.sites = new ArrayList<>(); @@ -168,6 +170,7 @@ public class ApiConfig { if (ext.startsWith("http")) return ext; else if (ext.startsWith("file")) return FileUtil.read(ext); else if (ext.startsWith("img+")) return Decoder.getExt(ext); + else if (ext.contains("http") || ext.contains("file")) return ext; else if (ext.endsWith(".json") || ext.endsWith(".py")) return parseExt(Utils.convert(ext)); return ext; } @@ -223,7 +226,7 @@ public class ApiConfig { } public Config getConfig() { - return config; + return config == null ? Config.vod() : config; } public Parse getParse() { diff --git a/app/src/main/java/com/fongmi/android/tv/api/Decoder.java b/app/src/main/java/com/fongmi/android/tv/api/Decoder.java index e027493a8..de27a4459 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/Decoder.java +++ b/app/src/main/java/com/fongmi/android/tv/api/Decoder.java @@ -9,6 +9,8 @@ import com.google.common.io.BaseEncoding; import java.io.File; import java.nio.charset.StandardCharsets; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; @@ -40,8 +42,8 @@ public class Decoder { try { File file = FileUtil.getJar(jar); if (md5.length() > 0 && FileUtil.equals(jar, md5)) return file; - String data = getData(jar.substring(4)); - data = data.substring(data.indexOf("**") + 2); + String data = extract(getData(jar.substring(4))); + if (data.isEmpty()) return FileUtil.getJar(jar); return FileUtil.write(file, Base64.decode(data, Base64.DEFAULT)); } catch (Exception ignored) { return FileUtil.getJar(jar); @@ -79,7 +81,14 @@ public class Decoder { } private static String base64(String data) { - return new String(Base64.decode(data.substring(data.indexOf("**") + 2), Base64.DEFAULT)); + String extract = extract(data); + if (extract.isEmpty()) return data; + return new String(Base64.decode(extract, Base64.DEFAULT)); + } + + private static String extract(String data) { + Matcher matcher = Pattern.compile("[A-Za-z0-9]{8}\\*\\*").matcher(data); + return matcher.find() ? data.substring(data.indexOf(matcher.group()) + 10) : ""; } private static byte[] padEnd(String key) { diff --git a/app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java b/app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java index 4402ca0b5..010c26643 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java @@ -49,6 +49,7 @@ public class LiveConfig { } public LiveConfig init() { + this.home = null; this.config = Config.live(); this.lives = new ArrayList<>(); this.handler = new Handler(Looper.getMainLooper()); @@ -61,6 +62,7 @@ public class LiveConfig { } public LiveConfig clear() { + this.home = null; this.lives.clear(); this.lives.addAll(ApiConfig.get().getLives()); return this; @@ -174,7 +176,7 @@ public class LiveConfig { } public Config getConfig() { - return config; + return config == null ? Config.live() : config; } public Live getHome() { diff --git a/app/src/main/java/com/fongmi/android/tv/net/OKHttp.java b/app/src/main/java/com/fongmi/android/tv/net/OKHttp.java index 56c32be5a..e6caf119c 100644 --- a/app/src/main/java/com/fongmi/android/tv/net/OKHttp.java +++ b/app/src/main/java/com/fongmi/android/tv/net/OKHttp.java @@ -29,7 +29,7 @@ public class OKHttp { } private OkHttpClient.Builder getBuilder() { - return new OkHttpClient.Builder().readTimeout(15, TimeUnit.SECONDS).writeTimeout(15, TimeUnit.SECONDS).connectTimeout(5, TimeUnit.SECONDS).sslSocketFactory(new SSLSocketFactoryCompat(), SSLSocketFactoryCompat.trustAllCert); + return new OkHttpClient.Builder().callTimeout(10, TimeUnit.SECONDS).readTimeout(10, TimeUnit.SECONDS).writeTimeout(10, TimeUnit.SECONDS).connectTimeout(10, TimeUnit.SECONDS).sslSocketFactory(new SSLSocketFactoryCompat(), SSLSocketFactoryCompat.trustAllCert); } private OkHttpClient client() { 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 8d473e85a..c4bae6ef2 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 @@ -192,8 +192,8 @@ public class Players implements Player.Listener, ParseTask.Callback { @Override public void onPlayerError(@NonNull PlaybackException error) { - setErrorCode(error.errorCode); PlayerEvent.error(R.string.error_play_format, true); + setErrorCode(error.errorCode); } @Override diff --git a/app/src/main/java/com/fongmi/android/tv/ui/activity/BaseActivity.java b/app/src/main/java/com/fongmi/android/tv/ui/activity/BaseActivity.java index 981185108..76072ecac 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/activity/BaseActivity.java +++ b/app/src/main/java/com/fongmi/android/tv/ui/activity/BaseActivity.java @@ -10,6 +10,7 @@ import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.viewbinding.ViewBinding; +import com.fongmi.android.tv.R; import com.fongmi.android.tv.event.RefreshEvent; import com.fongmi.android.tv.utils.FileUtil; import com.fongmi.android.tv.utils.Prefers; @@ -52,7 +53,8 @@ public abstract class BaseActivity extends AppCompatActivity { private void setWall() { File file = FileUtil.getWall(Prefers.getWall()); if (file.exists() && file.length() > 0) getWindow().setBackgroundDrawable(Drawable.createFromPath(file.getPath())); - else getWindow().setBackgroundDrawableResource(ResUtil.getDrawable(file.getName())); + else if (Prefers.getWall() > 0) getWindow().setBackgroundDrawableResource(ResUtil.getDrawable(file.getName())); + else getWindow().setBackgroundDrawableResource(R.drawable.wallpaper_1); } private void hackResources() {