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