From cff4b03e733afefd01d35ad36d0980b799024adc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=8E=E4=BF=8A?= <215613905@qq.com> Date: Thu, 13 Mar 2025 17:32:26 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=B4=E6=92=AD=E9=81=A5=E6=8E=A7=E5=B7=A6?= =?UTF-8?q?=E5=8F=B3=E9=94=AE=E5=88=87=E6=8D=A2=E7=BA=BF=E8=B7=AF;=20?= =?UTF-8?q?=E7=9B=B4=E6=92=AD=E6=94=AF=E6=8C=81=E6=95=B0=E5=AD=97=E9=94=AE?= =?UTF-8?q?=E6=8D=A2=E5=8F=B0;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/github/catvod/crawler/JarLoader.java | 1 + .../osc/ui/activity/LivePlayActivity.java | 53 ++++++++++++++++++- .../main/res/layout/activity_live_play.xml | 18 +++++++ app/src/main/res/layout/activity_search.xml | 5 +- app/src/main/res/layout/fragment_model.xml | 2 +- 5 files changed, 74 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/github/catvod/crawler/JarLoader.java b/app/src/main/java/com/github/catvod/crawler/JarLoader.java index 14518c22..eb955217 100644 --- a/app/src/main/java/com/github/catvod/crawler/JarLoader.java +++ b/app/src/main/java/com/github/catvod/crawler/JarLoader.java @@ -96,6 +96,7 @@ public class JarLoader { // return success; // } private boolean loadClassLoader(String jar, String key) { + if (classLoaders.contains(key)) return true; final String TAG = "JarLoader"; final File jarFile = new File(jar); final AtomicBoolean success = new AtomicBoolean(false); diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/LivePlayActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/LivePlayActivity.java index 80e79850..097d5234 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/activity/LivePlayActivity.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/LivePlayActivity.java @@ -194,6 +194,11 @@ public class LivePlayActivity extends BaseActivity { private boolean show = false; private static final int postTimeout = 6000; + // 遥控器数字键输入的要切换的频道号码 + private int selectedChannelNumber = 0; + private TextView tvSelectedChannel; + + @Override protected int getLayoutResID() { return R.layout.activity_live_play; @@ -269,6 +274,7 @@ public class LivePlayActivity extends BaseActivity { iv_playpause = findViewById(R.id.iv_playpause); iv_play = findViewById(R.id.iv_play); + tvSelectedChannel = findViewById(R.id.tv_selected_channel); if(show){ backcontroller.setVisibility(View.VISIBLE); @@ -619,6 +625,42 @@ public class LivePlayActivity extends BaseActivity { } } + private final Runnable mPlaySelectedChannel = new Runnable() { + @Override + public void run() { + int currentTotal = 0; + int groupIndex = 0; + int channelIndex = -1; + for (LiveChannelGroup group : liveChannelGroupList) { + int groupChannelCount = group.getLiveChannels().size(); + if (currentTotal + groupChannelCount >= selectedChannelNumber) { + channelIndex = selectedChannelNumber - currentTotal - 1; // 转换为0-based索引 + break; + } + currentTotal += groupChannelCount; + groupIndex++; + } + tvSelectedChannel.setVisibility(View.INVISIBLE); + tvSelectedChannel.setText(""); + if(channelIndex>0){ + playChannel(groupIndex, channelIndex, false); + }else { + playChannel(currentChannelGroupIndex, currentLiveChannelIndex, false); + } + selectedChannelNumber = 0; + } + }; + + @SuppressLint("SetTextI18n") + private void numericKeyDown(int digit) { + selectedChannelNumber = selectedChannelNumber * 10 + digit; + tvSelectedChannel.setText(Integer.toString(selectedChannelNumber)); + tvSelectedChannel.setVisibility(View.VISIBLE); + + mHandler.removeCallbacks(mPlaySelectedChannel); + mHandler.postDelayed(mPlaySelectedChannel, 2500); + } + @Override public boolean dispatchKeyEvent(KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN) { @@ -643,7 +685,7 @@ public class LivePlayActivity extends BaseActivity { if(isBack){ showProgressBars(true); }else{ - showSettingGroup(); + playPreSource(); } break; case KeyEvent.KEYCODE_DPAD_RIGHT: @@ -658,6 +700,15 @@ public class LivePlayActivity extends BaseActivity { case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE: showChannelList(); break; + default: + if (keyCode >= KeyEvent.KEYCODE_0 && keyCode <= KeyEvent.KEYCODE_9) { + keyCode -= KeyEvent.KEYCODE_0; + } else if ( keyCode >= KeyEvent.KEYCODE_NUMPAD_0 && keyCode <= KeyEvent.KEYCODE_NUMPAD_9) { + keyCode -= KeyEvent.KEYCODE_NUMPAD_0; + } else { + break; + } + numericKeyDown(keyCode); } } } else if (event.getAction() == KeyEvent.ACTION_UP) { diff --git a/app/src/main/res/layout/activity_live_play.xml b/app/src/main/res/layout/activity_live_play.xml index f87e4e9a..0bcda769 100644 --- a/app/src/main/res/layout/activity_live_play.xml +++ b/app/src/main/res/layout/activity_live_play.xml @@ -12,6 +12,24 @@ android:layout_width="match_parent" android:layout_height="match_parent" /> + + + android:layout_height="28mm"/>