diff --git a/app/build.gradle b/app/build.gradle index 81ca0aa8f..1cf4d918d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId "com.fongmi.android.tv" minSdk 21 targetSdk 28 - versionCode 225 - versionName "0217" + versionCode 227 + versionName "2.2.7" javaCompileOptions { annotationProcessorOptions { arguments = ["room.schemaLocation": "$projectDir/schemas".toString()] diff --git a/app/src/leanback/java/com/fongmi/android/tv/bean/Func.java b/app/src/leanback/java/com/fongmi/android/tv/bean/Func.java index bc7fa88fc..bf05616c6 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/bean/Func.java +++ b/app/src/leanback/java/com/fongmi/android/tv/bean/Func.java @@ -1,10 +1,10 @@ package com.fongmi.android.tv.bean; import android.annotation.SuppressLint; -import android.view.View; import com.fongmi.android.tv.R; import com.fongmi.android.tv.utils.ResUtil; +import com.fongmi.android.tv.utils.ViewUtil; public class Func { @@ -20,7 +20,7 @@ public class Func { public Func(int resId) { this.resId = resId; - this.id = View.generateViewId(); + this.id = ViewUtil.generateViewId(); this.setDrawable(); } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/ConfigDialog.java b/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/ConfigDialog.java index 7d68bb9a0..4c815c06b 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/ConfigDialog.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/ConfigDialog.java @@ -139,10 +139,12 @@ public class ConfigDialog implements DialogInterface.OnDismissListener { } private void onPositive(View view) { + String name = binding.name.getText().toString().trim(); String text = binding.text.getText().toString().trim(); if (edit) Config.find(url, type).url(text).update(); if (text.isEmpty()) Config.delete(url, type); - callback.setConfig(Config.find(text, type)); + if (name.isEmpty()) callback.setConfig(Config.find(text, type)); + else callback.setConfig(Config.find(text, name, type)); dialog.dismiss(); } @@ -153,6 +155,7 @@ public class ConfigDialog implements DialogInterface.OnDismissListener { @Subscribe(threadMode = ThreadMode.MAIN) public void onServerEvent(ServerEvent event) { if (event.getType() != ServerEvent.Type.SETTING) return; + binding.name.setText(event.getName()); binding.text.setText(event.getText()); binding.text.setSelection(binding.text.getText().length()); } diff --git a/app/src/leanback/res/layout/dialog_config.xml b/app/src/leanback/res/layout/dialog_config.xml index 24b89132d..343a9f426 100644 --- a/app/src/leanback/res/layout/dialog_config.xml +++ b/app/src/leanback/res/layout/dialog_config.xml @@ -27,6 +27,12 @@ android:textSize="18sp" tools:text="@string/push_info" /> + + - 確定 + + 確定 + @@ -47,10 +49,12 @@ - 確定 + + 確定 + @@ -60,16 +64,19 @@ 接口/Proxy/User-Agent - + - - 確定 + + + + 確定 + @@ -80,8 +87,8 @@ 本地 - - + + 上傳檔案 新增資料夾 刪除資料夾 @@ -94,25 +101,37 @@ - + + + + 搜尋 - + + + + 推送 - + + + + 設定 - + + + + 本地 diff --git a/app/src/main/assets/js/script.js b/app/src/main/assets/js/script.js index 08a7e7761..ef1588471 100644 --- a/app/src/main/assets/js/script.js +++ b/app/src/main/assets/js/script.js @@ -13,7 +13,7 @@ function push() { } function setting() { - doAction('setting', { text: $('#setting_text').val() }); + doAction('setting', { text: $('#setting_text').val(), name: $('#setting_name').val() }); } function file(path) { @@ -29,7 +29,7 @@ function doAction(action, kv) { } function tpl_top(path) { - return ` + return ` .. @@ -40,7 +40,7 @@ function tpl_top(path) { } function tpl_dir(name, time, path) { - return ` + return ` ` + name + ` @@ -52,7 +52,7 @@ function tpl_dir(name, time, path) { } function tpl_file(name, time, path, canDel) { - return ` + return ` ` + name + ` diff --git a/app/src/main/java/com/fongmi/android/tv/event/ServerEvent.java b/app/src/main/java/com/fongmi/android/tv/event/ServerEvent.java index 28c889398..3eed9722e 100644 --- a/app/src/main/java/com/fongmi/android/tv/event/ServerEvent.java +++ b/app/src/main/java/com/fongmi/android/tv/event/ServerEvent.java @@ -6,6 +6,7 @@ public class ServerEvent { private final Type type; private final String text; + private final String name; public static void search(String text) { EventBus.getDefault().post(new ServerEvent(Type.SEARCH, text)); @@ -19,9 +20,18 @@ public class ServerEvent { EventBus.getDefault().post(new ServerEvent(Type.SETTING, text)); } + public static void setting(String text, String name) { + EventBus.getDefault().post(new ServerEvent(Type.SETTING, text, name)); + } + private ServerEvent(Type type, String text) { + this(type, text, ""); + } + + private ServerEvent(Type type, String text, String name) { this.type = type; this.text = text; + this.name = name; } public Type getType() { @@ -32,6 +42,10 @@ public class ServerEvent { return text; } + public String getName() { + return name; + } + public enum Type { SEARCH, PUSH, SETTING } diff --git a/app/src/main/java/com/fongmi/android/tv/player/extractor/JianPian.java b/app/src/main/java/com/fongmi/android/tv/player/extractor/JianPian.java index 92bbf09f2..2437b0712 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/extractor/JianPian.java +++ b/app/src/main/java/com/fongmi/android/tv/player/extractor/JianPian.java @@ -3,7 +3,6 @@ package com.fongmi.android.tv.player.extractor; import android.net.Uri; import com.fongmi.android.tv.player.Source; -import com.github.catvod.utils.Path; import com.p2p.P2PClass; import java.net.URLDecoder; @@ -33,11 +32,12 @@ public class JianPian implements Source.Extractor { private void start(String url) { try { - if (path != null) p2p.P2Pdoxdel(path.getBytes("GBK")); + String lastPath = path; path = URLDecoder.decode(url).split("\\|")[0]; path = path.replace("jianpian://pathtype=url&path=", ""); path = path.replace("tvbox-xg://", "").replace("tvbox-xg:", ""); path = path.replace("xg://", "ftp://").replace("xgplay://", "ftp://"); + if (lastPath != null && !lastPath.equals(path)) p2p.P2Pdoxdel(lastPath.getBytes("GBK")); p2p.P2Pdoxstart(path.getBytes("GBK")); p2p.P2Pdoxadd(path.getBytes("GBK")); } catch (Exception e) { @@ -58,11 +58,8 @@ public class JianPian implements Source.Extractor { public void exit() { try { if (p2p != null && path != null) p2p.P2Pdoxpause(path.getBytes("GBK")); - if (p2p != null && path != null) p2p.P2Pdoxdel(path.getBytes("GBK")); - if (p2p != null) p2p.P2Pdoxendhttpd(); } catch (Exception e) { e.printStackTrace(); } - Path.clear(Path.jpa()); } } diff --git a/app/src/main/java/com/fongmi/android/tv/server/process/Action.java b/app/src/main/java/com/fongmi/android/tv/server/process/Action.java index 11de23b23..2c0a52923 100644 --- a/app/src/main/java/com/fongmi/android/tv/server/process/Action.java +++ b/app/src/main/java/com/fongmi/android/tv/server/process/Action.java @@ -77,8 +77,9 @@ public class Action implements Process { private void onSetting(Map params) { String text = params.get("text"); + String name = params.get("name"); if (TextUtils.isEmpty(text)) return; - ServerEvent.setting(text); + ServerEvent.setting(text, name); } private void onFile(Map params) { diff --git a/app/src/main/java/com/fongmi/android/tv/utils/ViewUtil.java b/app/src/main/java/com/fongmi/android/tv/utils/ViewUtil.java new file mode 100644 index 000000000..e79afea81 --- /dev/null +++ b/app/src/main/java/com/fongmi/android/tv/utils/ViewUtil.java @@ -0,0 +1,29 @@ +package com.fongmi.android.tv.utils; + +import android.os.Build; +import android.view.View; + +import java.util.concurrent.atomic.AtomicInteger; + +public class ViewUtil { + + private static final AtomicInteger viewIdGenerator = new AtomicInteger(1); + + public static int generateViewId() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) return View.generateViewId(); + else return generateUniqueViewId(); + } + + private static int generateUniqueViewId() { + while (true) { + final int result = viewIdGenerator.get(); + // aapt-generated IDs have the high byte nonzero; clamp to the range under that. + int newValue = result + 1; + if (newValue > 0x00FFFFFF) newValue = 1; // Roll over to 1, not 0. + if (viewIdGenerator.compareAndSet(result, newValue)) { + return result; + } + } + } + +}
搜尋
推送
設定
本地