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"/>