From d31f2155237aa65cee1cb6ce1d39c48191663226 Mon Sep 17 00:00:00 2001
From: panlili2024 <14743743+panlili2024@user.noreply.gitee.com>
Date: 星期五, 21 二月 2025 18:02:41 +0800
Subject: [PATCH] 新增source屏接口及房间及绑定关系接口

---
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/sourceos/knob/IKnobListenerAdapter.java |  169 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 169 insertions(+), 0 deletions(-)

diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/sourceos/knob/IKnobListenerAdapter.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/sourceos/knob/IKnobListenerAdapter.java
new file mode 100644
index 0000000..671f515
--- /dev/null
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/sourceos/knob/IKnobListenerAdapter.java
@@ -0,0 +1,169 @@
+package com.hdl.sdk.sourceos.knob;
+
+
+import android.os.Handler;
+import android.os.Looper;
+import android.util.Log;
+
+
+import java.util.concurrent.atomic.AtomicLong;
+
+/**
+ * 鏃嬮挳澶т簬200姣
+ * 宸﹀彸浜掓枼锛岀伒鍔ㄥ乏鍙虫棆閽崐鏍兼湁闂
+ */
+public abstract class IKnobListenerAdapter extends OsEventListener {
+
+
+
+    //宸︽棆
+    public static final int LEFT_KEY_CODE = 132;
+    //鍙虫棆
+    public static final int RIGHT_KEY_CODE = 131;
+
+    private static final long MAX_LONG_CLICK_TIME = 500L;
+    private static final long MAX_ROTATE_TIME = 500L;
+
+    private static final Handler mHandler = new Handler(Looper.getMainLooper());
+
+    //涓婁竴娆$偣鍑绘椂闂�
+    private final AtomicLong lastClickTime = new AtomicLong(0);
+
+    //涓婁竴娆℃棆杞椂闂�
+    private final AtomicLong lastRotateTime = new AtomicLong(0);
+    private final AtomicLong rotateCount = new AtomicLong(0);
+
+
+    //涓婁竴娆�
+    public IKnobListenerAdapter() {
+    }
+
+    public void clear() {
+        mHandler.removeCallbacksAndMessages(null);
+    }
+
+    /**
+     * 闀挎寜
+     */
+    public void onKnobLongClickListener() {
+        Log.i("knob", "IKnobListenerAdapter:onKnobLongClick");
+    }
+
+    /**
+     * 鐐瑰嚮
+     */
+    public void onKnobClickListener() {
+        Log.i("knob", "IKnobListenerAdapter:onKnobClick");
+    }
+
+    /**
+     * 鍚戝乏鏃嬭浆
+     */
+    public void onKnobLongLeftListener() {
+        Log.i("knob", "IKnobListenerAdapter:onKnobLongLeft");
+    }
+
+    public void onKnobLeftListener() {
+        Log.i("knob", "IKnobListenerAdapter:onKnobLeft");
+    }
+
+
+    /**
+     * 鍚戝彸鏃嬭浆
+     */
+    public void onKnobRightListener() {
+        Log.i("knob", "IKnobListenerAdapter:onKnobLongRight");
+    }
+
+    public void onKnobLongRightListener() {
+        Log.i("knob", "IKnobListenerAdapter:onKnobRight");
+    }
+
+
+    @Override
+    public void onKeyEvent(int keyCode, int action) {
+        long time = System.currentTimeMillis();
+        if (keyCode == LEFT_KEY_CODE) {
+            //鍚戝乏鏃嬭浆
+            if (action == 1) {//1鏄ǔ瀹氱姸鎬�
+                mHandler.removeCallbacks(mKnobRightRunnable);
+                mHandler.postDelayed(mKnobLeftRunnable, 150);
+                if (time - lastRotateTime.get() < MAX_ROTATE_TIME) {
+                    if (rotateCount.get() > 4) {
+                        rotateCount.set(0);
+                        lastRotateTime.set(0);
+                        //蹇�熸棆杞�
+                        mHandler.post(mKnobLongLeftRunnable);
+                    }
+                    rotateCount.set(rotateCount.get() + 1);
+                } else {
+                    lastRotateTime.set(time);
+                }
+
+            }
+        } else if (keyCode == RIGHT_KEY_CODE) {
+            //鍚戝彸鏃嬭浆
+            if (action == 1) {//1鏄ǔ瀹氱姸鎬�
+                mHandler.removeCallbacks(mKnobLeftRunnable);
+                mHandler.postDelayed(mKnobRightRunnable, 150);
+                if (time - lastRotateTime.get() < MAX_ROTATE_TIME) {
+                    if (rotateCount.get() > 4) {
+                        rotateCount.set(0);
+                        lastRotateTime.set(0);
+                        //蹇�熸棆杞�
+                        mHandler.post(mKnobLongRightRunnable);
+                    }
+                    rotateCount.set(rotateCount.get() + 1);
+                } else {
+                    lastRotateTime.set(time);
+                }
+            }
+        }
+
+    }
+
+
+    private final Runnable mKnobLeftRunnable = new Runnable() {
+        @Override
+        public void run() {
+            onKnobLeftListener();
+        }
+    };
+
+    private final Runnable mKnobLongLeftRunnable = new Runnable() {
+        @Override
+        public void run() {
+            onKnobLongLeftListener();
+        }
+    };
+
+    private final Runnable mKnobRightRunnable = new Runnable() {
+        @Override
+        public void run() {
+            onKnobRightListener();
+        }
+    };
+
+    private final Runnable mKnobLongRightRunnable = new Runnable() {
+        @Override
+        public void run() {
+            onKnobLongRightListener();
+        }
+    };
+
+    private final Runnable mKnobLongClickRunnable = new Runnable() {
+        @Override
+        public void run() {
+            onKnobLongClickListener();
+        }
+    };
+
+    private final Runnable mKnobClickRunnable = new Runnable() {
+        @Override
+        public void run() {
+            onKnobClickListener();
+        }
+    };
+
+
+}

--
Gitblit v1.8.0