From 76407ef42394ff1046c508a106c0b51812df2a0f Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期三, 10 十二月 2025 18:12:53 +0800
Subject: [PATCH] 钥匙柜开门添加 指纹方式

---
 keyCabinet-android/app/src/main/java/android_serialport_api/SerialPortFinder.java |  122 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 122 insertions(+), 0 deletions(-)

diff --git a/keyCabinet-android/app/src/main/java/android_serialport_api/SerialPortFinder.java b/keyCabinet-android/app/src/main/java/android_serialport_api/SerialPortFinder.java
new file mode 100644
index 0000000..292aca3
--- /dev/null
+++ b/keyCabinet-android/app/src/main/java/android_serialport_api/SerialPortFinder.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright 2009 Cedric Priscal
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License. 
+ */
+
+package android_serialport_api;
+
+import android.util.Log;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.LineNumberReader;
+import java.util.Iterator;
+import java.util.Vector;
+
+public class SerialPortFinder {
+
+	public class Driver {
+		public Driver(String name, String root) {
+			mDriverName = name;
+			mDeviceRoot = root;
+		}
+		private String mDriverName;
+		private String mDeviceRoot;
+		Vector<File> mDevices = null;
+		public Vector<File> getDevices() {
+			if (mDevices == null) {
+				mDevices = new Vector<File>();
+				File dev = new File("/dev");
+				File[] files = dev.listFiles();
+				int i;
+				for (i=0; i<files.length; i++) {
+					if (files[i].getAbsolutePath().startsWith(mDeviceRoot)) {
+						Log.d(TAG, "Found new device: " + files[i]);
+						mDevices.add(files[i]);
+					}
+				}
+			}
+			return mDevices;
+		}
+		public String getName() {
+			return mDriverName;
+		}
+	}
+
+	private static final String TAG = "SerialPort";
+
+	private Vector<Driver> mDrivers = null;
+
+	Vector<Driver> getDrivers() throws IOException {
+		if (mDrivers == null) {
+			mDrivers = new Vector<Driver>();
+			LineNumberReader r = new LineNumberReader(new FileReader("/proc/tty/drivers"));
+			String l;
+			while((l = r.readLine()) != null) {
+				// Issue 3:
+				// Since driver name may contain spaces, we do not extract driver name with split()
+				String drivername = l.substring(0, 0x15).trim();
+				String[] w = l.split(" +");
+				if ((w.length >= 5) && (w[w.length-1].equals("serial"))) {
+					Log.d(TAG, "Found new driver " + drivername + " on " + w[w.length-4]);
+					mDrivers.add(new Driver(drivername, w[w.length-4]));
+				}
+			}
+			r.close();
+		}
+		return mDrivers;
+	}
+
+	public String[] getAllDevices() {
+		Vector<String> devices = new Vector<String>();
+		// Parse each driver
+		Iterator<Driver> itdriv;
+		try {
+			itdriv = getDrivers().iterator();
+			while(itdriv.hasNext()) {
+				Driver driver = itdriv.next();
+				Iterator<File> itdev = driver.getDevices().iterator();
+				while(itdev.hasNext()) {
+					String device = itdev.next().getName();
+					String value = String.format("%s (%s)", device, driver.getName());
+					devices.add(value);
+				}
+			}
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		return devices.toArray(new String[devices.size()]);
+	}
+
+	public String[] getAllDevicesPath() {
+		Vector<String> devices = new Vector<String>();
+		// Parse each driver
+		Iterator<Driver> itdriv;
+		try {
+			itdriv = getDrivers().iterator();
+			while(itdriv.hasNext()) {
+				Driver driver = itdriv.next();
+				Iterator<File> itdev = driver.getDevices().iterator();
+				while(itdev.hasNext()) {
+					String device = itdev.next().getAbsolutePath();
+					devices.add(device);
+				}
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return devices.toArray(new String[devices.size()]);
+	}
+}

--
Gitblit v1.9.3