|
@@ -3,6 +3,10 @@ package xn.hxp.ui;
|
|
|
import android.text.Editable;
|
|
import android.text.Editable;
|
|
|
import android.text.TextUtils;
|
|
import android.text.TextUtils;
|
|
|
import android.util.Log;
|
|
import android.util.Log;
|
|
|
|
|
+import android.view.KeyEvent;
|
|
|
|
|
+import android.view.View;
|
|
|
|
|
+import android.widget.CheckBox;
|
|
|
|
|
+import android.widget.CompoundButton;
|
|
|
|
|
|
|
|
import androidx.viewbinding.ViewBinding;
|
|
import androidx.viewbinding.ViewBinding;
|
|
|
|
|
|
|
@@ -15,7 +19,11 @@ import com.kongzue.dialogx.dialogs.PopTip;
|
|
|
import com.kongzue.dialogx.dialogs.WaitDialog;
|
|
import com.kongzue.dialogx.dialogs.WaitDialog;
|
|
|
import com.rc.core.ui.activity.BaseActivity;
|
|
import com.rc.core.ui.activity.BaseActivity;
|
|
|
|
|
|
|
|
|
|
+import java.util.HashSet;
|
|
|
|
|
+import java.util.Set;
|
|
|
|
|
+
|
|
|
import xn.hxp.databinding.ActivitySettingBinding;
|
|
import xn.hxp.databinding.ActivitySettingBinding;
|
|
|
|
|
+import xn.hxp.receiver.UhfRfidManager;
|
|
|
import xn.hxp.utils.SharedPreferencesHelper;
|
|
import xn.hxp.utils.SharedPreferencesHelper;
|
|
|
import xn.hxp.utils.Tool;
|
|
import xn.hxp.utils.Tool;
|
|
|
import xn.hxp.utils.bluetooth.SppTool;
|
|
import xn.hxp.utils.bluetooth.SppTool;
|
|
@@ -88,6 +96,86 @@ public class SettingActivity extends BaseActivity {
|
|
|
// 保存
|
|
// 保存
|
|
|
binding.save.setOnClickListener(v -> save());
|
|
binding.save.setOnClickListener(v -> save());
|
|
|
|
|
|
|
|
|
|
+ // 外置超高频RFID读卡器配置
|
|
|
|
|
+ initUhfRfidConfig();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // ========== 外置超高频RFID读卡器配置 ==========
|
|
|
|
|
+ private void initUhfRfidConfig() {
|
|
|
|
|
+ boolean uhfEnabled = UhfRfidManager.INSTANCE.isEnabled(this);
|
|
|
|
|
+ binding.uhfRfidSwitch.setChecked(uhfEnabled);
|
|
|
|
|
+ binding.uhfRfidDetailLayout.setVisibility(uhfEnabled ? View.VISIBLE : View.GONE);
|
|
|
|
|
+
|
|
|
|
|
+ // 开关监听
|
|
|
|
|
+ binding.uhfRfidSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
|
|
|
|
|
+ UhfRfidManager.INSTANCE.setEnabled(SettingActivity.this, isChecked);
|
|
|
|
|
+ binding.uhfRfidDetailLayout.setVisibility(isChecked ? View.VISIBLE : View.GONE);
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ // 已学习设备信息
|
|
|
|
|
+ updateUhfDeviceInfo();
|
|
|
|
|
+
|
|
|
|
|
+ // 重新学习按钮
|
|
|
|
|
+ binding.uhfLearnBT.setOnClickListener(v -> {
|
|
|
|
|
+ UhfRfidManager.INSTANCE.startLearning(deviceName -> {
|
|
|
|
|
+ runOnUiThread(() -> {
|
|
|
|
|
+ updateUhfDeviceInfo();
|
|
|
|
|
+ showToast("设备学习成功: " + deviceName);
|
|
|
|
|
+ });
|
|
|
|
|
+ return null;
|
|
|
|
|
+ });
|
|
|
|
|
+ showToast("请在外置读卡器上刷一次卡...");
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ // 清除配置按钮
|
|
|
|
|
+ binding.uhfClearBT.setOnClickListener(v -> {
|
|
|
|
|
+ UhfRfidManager.INSTANCE.saveDeviceInfo(SettingActivity.this, -1, -1, "");
|
|
|
|
|
+ UhfRfidManager.INSTANCE.setEnabled(SettingActivity.this, false);
|
|
|
|
|
+ binding.uhfRfidSwitch.setChecked(false);
|
|
|
|
|
+ updateUhfDeviceInfo();
|
|
|
|
|
+ showToast("已清除外置读卡器配置");
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ // 白名单复选框
|
|
|
|
|
+ Set<String> whitelist = UhfRfidManager.INSTANCE.getWhitelist(this);
|
|
|
|
|
+ binding.uhfWlStorageCB.setChecked(whitelist.contains(UhfRfidManager.PAGE_STORAGE_RFID));
|
|
|
|
|
+ binding.uhfWlLabelCB.setChecked(whitelist.contains(UhfRfidManager.PAGE_LABEL_RFID));
|
|
|
|
|
+ binding.uhfWlInquiryCB.setChecked(whitelist.contains(UhfRfidManager.PAGE_INQUIRY));
|
|
|
|
|
+
|
|
|
|
|
+ CompoundButton.OnCheckedChangeListener wlListener = (buttonView, isChecked) -> saveUhfWhitelist();
|
|
|
|
|
+ binding.uhfWlStorageCB.setOnCheckedChangeListener(wlListener);
|
|
|
|
|
+ binding.uhfWlLabelCB.setOnCheckedChangeListener(wlListener);
|
|
|
|
|
+ binding.uhfWlInquiryCB.setOnCheckedChangeListener(wlListener);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void updateUhfDeviceInfo() {
|
|
|
|
|
+ if (UhfRfidManager.INSTANCE.hasLearnedDevice(this)) {
|
|
|
|
|
+ String name = UhfRfidManager.INSTANCE.getDeviceName(this);
|
|
|
|
|
+ int vid = UhfRfidManager.INSTANCE.getDeviceVendorId(this);
|
|
|
|
|
+ int pid = UhfRfidManager.INSTANCE.getDeviceProductId(this);
|
|
|
|
|
+ binding.uhfDeviceNameTV.setText((name != null ? name : "未知") + " (VID:" + vid + " PID:" + pid + ")");
|
|
|
|
|
+ } else {
|
|
|
|
|
+ binding.uhfDeviceNameTV.setText("未学习");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void saveUhfWhitelist() {
|
|
|
|
|
+ Set<String> wl = new HashSet<>();
|
|
|
|
|
+ if (binding.uhfWlStorageCB.isChecked()) wl.add(UhfRfidManager.PAGE_STORAGE_RFID);
|
|
|
|
|
+ if (binding.uhfWlLabelCB.isChecked()) wl.add(UhfRfidManager.PAGE_LABEL_RFID);
|
|
|
|
|
+ if (binding.uhfWlInquiryCB.isChecked()) wl.add(UhfRfidManager.PAGE_INQUIRY);
|
|
|
|
|
+ UhfRfidManager.INSTANCE.saveWhitelist(this, wl);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public boolean dispatchKeyEvent(KeyEvent event) {
|
|
|
|
|
+ // 学习模式下拦截外部设备的KeyEvent
|
|
|
|
|
+ if (UhfRfidManager.INSTANCE.isLearning()) {
|
|
|
|
|
+ if (UhfRfidManager.INSTANCE.handleLearningEvent(this, event)) {
|
|
|
|
|
+ return true;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return super.dispatchKeyEvent(event);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|