|
@@ -75,6 +75,7 @@ public class RfidService extends Service {
|
|
|
public static int ErrorCount;
|
|
public static int ErrorCount;
|
|
|
public static int ErrorCRC;
|
|
public static int ErrorCRC;
|
|
|
public boolean isMultipleTag = false;
|
|
public boolean isMultipleTag = false;
|
|
|
|
|
+ public boolean isScanIdleTimeout = false;
|
|
|
|
|
|
|
|
// 读卡器空闲超时处理器
|
|
// 读卡器空闲超时处理器
|
|
|
private Handler idleHandler;
|
|
private Handler idleHandler;
|
|
@@ -138,13 +139,13 @@ public class RfidService extends Service {
|
|
|
idleDisconnectRunnable = () -> {
|
|
idleDisconnectRunnable = () -> {
|
|
|
if (isConnected && !isScanning) {
|
|
if (isConnected && !isScanning) {
|
|
|
Log.d(RfidConstants.TAG, "读卡器空闲超时(" + scanIdleTimeoutMs / 1000 + "秒),自动关闭连接");
|
|
Log.d(RfidConstants.TAG, "读卡器空闲超时(" + scanIdleTimeoutMs / 1000 + "秒),自动关闭连接");
|
|
|
|
|
+ isScanIdleTimeout = true;
|
|
|
disconnect(); // 自动断开连接
|
|
disconnect(); // 自动断开连接
|
|
|
if (listener != null) {
|
|
if (listener != null) {
|
|
|
listener.onScanInfo("读卡器空闲超时,已自动断开连接");
|
|
listener.onScanInfo("读卡器空闲超时,已自动断开连接");
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
-
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -155,8 +156,8 @@ public class RfidService extends Service {
|
|
|
// 移除之前的任务,重新计时
|
|
// 移除之前的任务,重新计时
|
|
|
idleHandler.removeCallbacks(idleDisconnectRunnable);
|
|
idleHandler.removeCallbacks(idleDisconnectRunnable);
|
|
|
idleHandler.postDelayed(idleDisconnectRunnable, scanIdleTimeoutMs);
|
|
idleHandler.postDelayed(idleDisconnectRunnable, scanIdleTimeoutMs);
|
|
|
- // Log.d(RfidConstants.TAG, "读卡器空闲计时器已重置,超时时间:" + scanIdleTimeoutMs / 1000 +
|
|
|
|
|
- // "秒");
|
|
|
|
|
|
|
+ Log.d(RfidConstants.TAG, "读卡器空闲计时器已重置,超时时间:" + scanIdleTimeoutMs / 1000 +
|
|
|
|
|
+ "秒");
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -279,39 +280,31 @@ public class RfidService extends Service {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 亮屏后恢复读卡(延迟重连避免硬件卡顿)
|
|
|
|
|
|
|
+ * 亮屏后恢复连接
|
|
|
*/
|
|
*/
|
|
|
private void resumeScanAfterScreenOn() {
|
|
private void resumeScanAfterScreenOn() {
|
|
|
- if (isConnected && !isScanning) {
|
|
|
|
|
- executorService.execute(() -> {
|
|
|
|
|
- try {
|
|
|
|
|
- Thread.sleep(scanReconnectDelayMs); // 延迟恢复
|
|
|
|
|
- // rrlib.StartRead();
|
|
|
|
|
- // isScanning = true;
|
|
|
|
|
- acquireWakeLock();
|
|
|
|
|
- if (!isConnected) {
|
|
|
|
|
- connect();
|
|
|
|
|
- } else {
|
|
|
|
|
- if (listener != null) {
|
|
|
|
|
- listener.onConnectSuccess(curPort, curBaud);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- // stopIdleTimeout(); // 恢复读卡后停止空闲计时
|
|
|
|
|
- // Log.d(RfidConstants.TAG, "亮屏恢复RFID读卡成功");
|
|
|
|
|
- // if (listener != null) {
|
|
|
|
|
- // listener.onTagScanned(rrlib.getInventoryTagMapList()); // 触发一次读卡回调
|
|
|
|
|
- // }
|
|
|
|
|
- } catch (InterruptedException e) {
|
|
|
|
|
- Thread.currentThread().interrupt();
|
|
|
|
|
- Log.e(RfidConstants.TAG, "恢复读卡线程被中断", e);
|
|
|
|
|
- } catch (Exception e) {
|
|
|
|
|
- Log.e(RfidConstants.TAG, "亮屏恢复读卡失败", e);
|
|
|
|
|
- if (listener != null) {
|
|
|
|
|
- listener.onScanError("亮屏恢复读卡失败:" + e.getMessage());
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ try {
|
|
|
|
|
+ Thread.sleep(scanReconnectDelayMs); // 延迟恢复
|
|
|
|
|
+ // rrlib.StartRead();
|
|
|
|
|
+ // isScanning = true;
|
|
|
|
|
+ acquireWakeLock();
|
|
|
|
|
+ if (!isConnected) {
|
|
|
|
|
+ connect();
|
|
|
|
|
+ } else if (isScanIdleTimeout) {
|
|
|
|
|
+ if (listener != null) {
|
|
|
|
|
+ listener.onConnectSuccess(curPort, curBaud);
|
|
|
}
|
|
}
|
|
|
- });
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (InterruptedException e) {
|
|
|
|
|
+ Thread.currentThread().interrupt();
|
|
|
|
|
+ Log.e(RfidConstants.TAG, "恢复读卡线程被中断", e);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ Log.e(RfidConstants.TAG, "亮屏恢复读卡失败", e);
|
|
|
|
|
+ if (listener != null) {
|
|
|
|
|
+ listener.onScanError("亮屏恢复读卡失败:" + e.getMessage());
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -515,6 +508,7 @@ public class RfidService extends Service {
|
|
|
Log.d(RfidConstants.TAG, "Reader Interval: " + readerParameter.Interval);
|
|
Log.d(RfidConstants.TAG, "Reader Interval: " + readerParameter.Interval);
|
|
|
Log.d(RfidConstants.TAG, "Reader TidLen: " + readerParameter.TidLen);
|
|
Log.d(RfidConstants.TAG, "Reader TidLen: " + readerParameter.TidLen);
|
|
|
Log.d(RfidConstants.TAG, "Reader TidPtr: " + readerParameter.TidPtr);
|
|
Log.d(RfidConstants.TAG, "Reader TidPtr: " + readerParameter.TidPtr);
|
|
|
|
|
+ resetIdleTimeout();
|
|
|
break; // 跳出所有循环
|
|
break; // 跳出所有循环
|
|
|
} else {
|
|
} else {
|
|
|
Log.e(RfidConstants.TAG, "连接[" + i + "]: " + result);
|
|
Log.e(RfidConstants.TAG, "连接[" + i + "]: " + result);
|
|
@@ -595,6 +589,7 @@ public class RfidService extends Service {
|
|
|
setPower();
|
|
setPower();
|
|
|
}
|
|
}
|
|
|
Log.d(RfidConstants.TAG, "RFID设备读卡,功率:" + getPower() + "W");
|
|
Log.d(RfidConstants.TAG, "RFID设备读卡,功率:" + getPower() + "W");
|
|
|
|
|
+ isScanIdleTimeout = false;
|
|
|
return _startScan();
|
|
return _startScan();
|
|
|
}
|
|
}
|
|
|
|
|
|