From 47a00b87c2f33e543b6dc265ee780c91026b24d6 Mon Sep 17 00:00:00 2001 From: FongMi Date: Thu, 24 Aug 2023 21:47:52 +0800 Subject: [PATCH] Clean code --- app/src/leanback/AndroidManifest.xml | 2 ++ .../android/tv/ui/activity/HomeActivity.java | 17 ++++++++++++++++- .../com/fongmi/android/tv/api/JarLoader.java | 3 ++- app/src/mobile/AndroidManifest.xml | 2 ++ .../com/fongmi/android/tv/cast/CastVideo.java | 3 +-- .../android/tv/ui/activity/MainActivity.java | 17 ++++++++++++++++- .../android/tv/ui/custom/dialog/CastDialog.java | 3 +-- .../android/tv/ui/fragment/SettingFragment.java | 3 +-- .../main/java/com/github/catvod/utils/Path.java | 4 ++-- 9 files changed, 43 insertions(+), 11 deletions(-) diff --git a/app/src/leanback/AndroidManifest.xml b/app/src/leanback/AndroidManifest.xml index 3d3790a88..2cade798b 100644 --- a/app/src/leanback/AndroidManifest.xml +++ b/app/src/leanback/AndroidManifest.xml @@ -30,6 +30,7 @@ android:name=".ui.activity.HomeActivity" android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation" android:exported="true" + android:launchMode="singleTask" android:screenOrientation="sensorLandscape"> @@ -52,6 +53,7 @@ + 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 7923c9071..c57e0a343 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 @@ -22,6 +22,7 @@ import com.fongmi.android.tv.Updater; import com.fongmi.android.tv.api.ApiConfig; import com.fongmi.android.tv.api.LiveConfig; import com.fongmi.android.tv.api.WallConfig; +import com.fongmi.android.tv.bean.Config; import com.fongmi.android.tv.bean.Func; import com.fongmi.android.tv.bean.History; import com.fongmi.android.tv.bean.Result; @@ -46,6 +47,7 @@ import com.fongmi.android.tv.ui.presenter.HistoryPresenter; import com.fongmi.android.tv.ui.presenter.ProgressPresenter; import com.fongmi.android.tv.ui.presenter.VodPresenter; import com.fongmi.android.tv.utils.Clock; +import com.fongmi.android.tv.utils.FileChooser; import com.fongmi.android.tv.utils.Notify; import com.fongmi.android.tv.utils.ResUtil; import com.fongmi.android.tv.utils.Utils; @@ -104,7 +106,11 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen if (Intent.ACTION_SEND.equals(intent.getAction())) { DetailActivity.push(this, Uri.parse(intent.getStringExtra(Intent.EXTRA_TEXT))); } else if (Intent.ACTION_VIEW.equals(intent.getAction()) && intent.getData() != null) { - DetailActivity.push(this, intent.getData()); + if ("text/plain".equals(intent.getType()) || intent.getData().getPath().endsWith(".m3u")) { + loadLive("file:/" + FileChooser.getPathFromUri(this, intent.getData())); + } else { + DetailActivity.push(this, intent.getData()); + } } } @@ -161,6 +167,15 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen }; } + private void loadLive(String url) { + LiveConfig.load(Config.find(url, 1), new Callback() { + @Override + public void success() { + LiveActivity.start(getActivity()); + } + }); + } + private void setFocus() { mBinding.recycler.requestFocus(); App.post(() -> mBinding.title.setFocusable(true), 500); diff --git a/app/src/main/java/com/fongmi/android/tv/api/JarLoader.java b/app/src/main/java/com/fongmi/android/tv/api/JarLoader.java index 7e1a82c76..c7bdfe2af 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/JarLoader.java +++ b/app/src/main/java/com/fongmi/android/tv/api/JarLoader.java @@ -3,6 +3,7 @@ package com.fongmi.android.tv.api; import android.content.Context; import com.fongmi.android.tv.App; +import com.fongmi.android.tv.utils.Utils; import com.github.catvod.crawler.Spider; import com.github.catvod.crawler.SpiderNull; import com.github.catvod.net.OkHttp; @@ -91,7 +92,7 @@ public class JarLoader { } else if (jar.startsWith("file")) { load(key, Path.local(jar)); } else if (!jar.isEmpty()) { - parseJar(key, com.fongmi.android.tv.utils.Utils.convert(ApiConfig.getUrl(), jar)); + parseJar(key, Utils.convert(ApiConfig.getUrl(), jar)); } } diff --git a/app/src/mobile/AndroidManifest.xml b/app/src/mobile/AndroidManifest.xml index e22b0b211..7d047aed0 100644 --- a/app/src/mobile/AndroidManifest.xml +++ b/app/src/mobile/AndroidManifest.xml @@ -16,6 +16,7 @@ android:name=".ui.activity.MainActivity" android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation" android:exported="true" + android:launchMode="singleTask" android:screenOrientation="fullUser" android:windowSoftInputMode="adjustPan"> @@ -37,6 +38,7 @@ + diff --git a/app/src/mobile/java/com/fongmi/android/tv/cast/CastVideo.java b/app/src/mobile/java/com/fongmi/android/tv/cast/CastVideo.java index 9456b6480..390ebe49e 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/cast/CastVideo.java +++ b/app/src/mobile/java/com/fongmi/android/tv/cast/CastVideo.java @@ -4,7 +4,6 @@ import androidx.annotation.NonNull; import com.android.cast.dlna.core.ICast; import com.fongmi.android.tv.server.Server; -import com.github.catvod.utils.Path; import java.util.UUID; @@ -18,7 +17,7 @@ public class CastVideo implements ICast { } private CastVideo(String name, String url) { - if (url.startsWith("file")) url = Server.get().getAddress() + "/" + url.replace(Path.rootPath(), ""); + if (url.startsWith("file")) url = Server.get().getAddress() + "/" + url; if (url.contains("127.0.0.1")) url = url.replace("127.0.0.1", Server.get().getIP()); this.name = name; this.url = url; diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java index 9af32bd9c..f358ae29e 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java @@ -16,6 +16,7 @@ import com.fongmi.android.tv.Updater; import com.fongmi.android.tv.api.ApiConfig; import com.fongmi.android.tv.api.LiveConfig; import com.fongmi.android.tv.api.WallConfig; +import com.fongmi.android.tv.bean.Config; import com.fongmi.android.tv.databinding.ActivityMainBinding; import com.fongmi.android.tv.event.RefreshEvent; import com.fongmi.android.tv.event.ServerEvent; @@ -27,6 +28,7 @@ import com.fongmi.android.tv.ui.custom.FragmentStateManager; import com.fongmi.android.tv.ui.fragment.SettingFragment; import com.fongmi.android.tv.ui.fragment.SettingPlayerFragment; import com.fongmi.android.tv.ui.fragment.VodFragment; +import com.fongmi.android.tv.utils.FileChooser; import com.fongmi.android.tv.utils.Notify; import com.google.android.material.navigation.NavigationBarView; @@ -67,7 +69,11 @@ public class MainActivity extends BaseActivity implements NavigationBarView.OnIt if (Intent.ACTION_SEND.equals(intent.getAction())) { DetailActivity.push(this, Uri.parse(intent.getStringExtra(Intent.EXTRA_TEXT))); } else if (Intent.ACTION_VIEW.equals(intent.getAction()) && intent.getData() != null) { - DetailActivity.push(this, intent.getData()); + if ("text/plain".equals(intent.getType()) || intent.getData().getPath().endsWith(".m3u")) { + loadLive("file:/" + FileChooser.getPathFromUri(this, intent.getData())); + } else { + DetailActivity.push(this, intent.getData()); + } } } @@ -108,6 +114,15 @@ public class MainActivity extends BaseActivity implements NavigationBarView.OnIt }; } + private void loadLive(String url) { + LiveConfig.load(Config.find(url, 1), new Callback() { + @Override + public void success() { + openLive(); + } + }); + } + private void setNavigation() { mBinding.navigation.getMenu().findItem(R.id.vod).setVisible(true); mBinding.navigation.getMenu().findItem(R.id.setting).setVisible(true); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/CastDialog.java b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/CastDialog.java index 53ca90693..91b80ffbe 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/CastDialog.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/CastDialog.java @@ -30,7 +30,6 @@ import com.fongmi.android.tv.ui.activity.ScanActivity; import com.fongmi.android.tv.ui.adapter.DeviceAdapter; import com.fongmi.android.tv.utils.Notify; import com.github.catvod.net.OkHttp; -import com.github.catvod.utils.Path; import com.google.android.material.bottomsheet.BottomSheetDialogFragment; import org.greenrobot.eventbus.EventBus; @@ -68,7 +67,7 @@ public class CastDialog extends BaseDialog implements DeviceAdapter.OnClickListe public CastDialog history(History history) { String id = history.getVodId(); - String fd = id.startsWith("file") ? Server.get().getAddress() + "/" + id.replace(Path.rootPath(), "") : id; + String fd = id.startsWith("file") ? Server.get().getAddress() + "/" + id : id; if (fd.contains("127.0.0.1")) fd = fd.replace("127.0.0.1", Server.get().getIP()); body.add("history", history.toString().replace(id, fd)); return this; diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java index be41cbe07..418e0f547 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java @@ -40,7 +40,6 @@ import com.fongmi.android.tv.utils.ResUtil; import com.fongmi.android.tv.utils.Utils; import com.github.catvod.bean.Doh; import com.github.catvod.net.OkHttp; -import com.github.catvod.utils.Path; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.permissionx.guolindev.PermissionX; @@ -343,6 +342,6 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode != Activity.RESULT_OK || requestCode != FileChooser.REQUEST_PICK_FILE) return; - setConfig(Config.find("file:/" + FileChooser.getPathFromUri(getContext(), data.getData()).replace(Path.rootPath(), ""), type)); + setConfig(Config.find("file:/" + FileChooser.getPathFromUri(getContext(), data.getData()), type)); } } 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 715e59b82..1e953897d 100644 --- a/catvod/src/main/java/com/github/catvod/utils/Path.java +++ b/catvod/src/main/java/com/github/catvod/utils/Path.java @@ -111,8 +111,8 @@ public class Path { } public static File local(String path) { - if (path.contains(rootPath())) return new File(path); - return new File(path.replace("file:/", rootPath())); + File file = new File(path.replace("file:/", root().getAbsolutePath())); + return file.exists() ? file : new File(path.replace("file:/", "")); } public static String asset(String fileName) {