網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
如何識(shí)別?
通過(guò)NFC模塊的Serial Number即UID,用戶(hù)訪(fǎng)問(wèn)權(quán)限為R只讀,每顆NFC芯片獨(dú)有序列號(hào)(UID),在出廠(chǎng)時(shí)寫(xiě)入,用戶(hù)不能改寫(xiě)。
Android如何實(shí)現(xiàn)?
通過(guò)Intent獲取UID
/** * 讀取nfcUID 返回String類(lèi)型大寫(xiě)的UID * * 這個(gè)測(cè)試順便加上的,下面用不到,做個(gè)筆記~~ * */ public static String readUID(Intent intent) throws UnsupportedEncodingException { Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); byte[] uid = tagFromIntent != null ? tagFromIntent.getId() : null; return HexUtil.encodeHexStr(uid, false); } /** * 讀取nfcUID 返回byte[]數(shù)組 * */ public static byte[] readUID(Intent intent) throws UnsupportedEncodingException { Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); return tagFromIntent.getId(); }
HexUtil工具類(lèi):
public class HexUtil {
/**
* 用于建立十六進(jìn)制字符的輸出的小寫(xiě)字符數(shù)組
*/
private static final char[] DIGITS_LOWER = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f'};
/**
* 用于建立十六進(jìn)制字符的輸出的大寫(xiě)字符數(shù)組
*/
private static final char[] DIGITS_UPPER = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F'};
/**
* 將字節(jié)數(shù)組轉(zhuǎn)換為十六進(jìn)制字符數(shù)組
*
* @param data byte[]
* @param toDigits 用于控制輸出的char[]
* @return 十六進(jìn)制char[]
*/
protected static char[] encodeHex(byte[] data, char[] toDigits) {
int l = data.length;
char[] out = new char[l << 1];
// two characters form the hex value.
for (int i = 0, j = 0; i < l; i++) {
out[j++] = toDigits[(0xF0 & data[i]) >>> 4];
out[j++] = toDigits[0x0F & data[i]];
}
return out;
}
/**
* 將字節(jié)數(shù)組轉(zhuǎn)換為十六進(jìn)制字符串
*
* @param data byte[]
* @param toLowerCase <code>true</code> 傳換成小寫(xiě)格式 , <code>false</code> 傳換成大寫(xiě)格式
* @return 十六進(jìn)制String
*/
public static String encodeHexStr(byte[] data, boolean toLowerCase) {
return encodeHexStr(data, toLowerCase ? DIGITS_LOWER : DIGITS_UPPER);
}
/**
* 將字節(jié)數(shù)組轉(zhuǎn)換為十六進(jìn)制字符串
*
* @param data byte[]
* @param toDigits 用于控制輸出的char[]
* @return 十六進(jìn)制String
*/
protected static String encodeHexStr(byte[] data, char[] toDigits) {
if (data == null) {
return "";
}
return new String(encodeHex(data, toDigits));
}
}
通過(guò)UID去查詢(xún)廠(chǎng)商
public class Manufacturer { private static final String MNF_UNKNOWN = "Unknown Manufacture"; public static final Map<Byte, String> ManufacturerName; static { ManufacturerName = new HashMap<>(); ManufacturerName.put((byte)1, "Motorola"); ManufacturerName.put((byte)2, "STMicroelectronics SA "); ManufacturerName.put((byte)3, "Hitachi, Ltd"); ManufacturerName.put((byte)4, "NXP Semiconductors"); ManufacturerName.put((byte)5, "Infineon Technologies AG "); ManufacturerName.put((byte)6, "Cylink"); ManufacturerName.put((byte)7, "Texas Instrument"); ManufacturerName.put((byte)8, "Fujitsu Limited"); ManufacturerName.put((byte)9, "Matsushita Electronics Corporation, Semiconductor Company"); ManufacturerName.put((byte)10, "NEC"); ManufacturerName.put((byte)11, "Oki Electric Industry Co. Ltd"); ManufacturerName.put((byte)12, "Toshiba Corp"); ManufacturerName.put((byte)13, "Mitsubishi Electric Corp"); ManufacturerName.put((byte)14, "Samsung Electronics Co. Ltd"); ManufacturerName.put((byte)15, "Hynix"); ManufacturerName.put((byte)16, "LG-Semiconductors Co. Ltd"); ManufacturerName.put((byte)17, "Emosyn-EM Microelectronics"); ManufacturerName.put((byte)18, "INSIDE Technology"); ManufacturerName.put((byte)19, "ORGA Kartensysteme GmbH"); ManufacturerName.put((byte)20, "SHARP Corporation"); ManufacturerName.put((byte)21, "ATMEL"); ManufacturerName.put((byte)22, "EM Microelectronic-Marin SA"); ManufacturerName.put((byte)23, "SMARTRAC TECHNOLOGY GmbH "); ManufacturerName.put((byte)24, "ZMD AG"); ManufacturerName.put((byte)25, "XICOR, Inc"); ManufacturerName.put((byte)26, "Sony Corporation"); ManufacturerName.put((byte)27, "Malaysia Microelectronic Solutions Sdn. Bhd"); ManufacturerName.put((byte)28, "Emosyn"); ManufacturerName.put((byte)29, "Shanghai Fudan Microelectronics Co. Ltd"); ManufacturerName.put((byte)30, "Magellan Technology Pty Limited"); ManufacturerName.put((byte)31, "Melexis NV BO"); ManufacturerName.put((byte)32, "Renesas Technology Corp"); ManufacturerName.put((byte)33, "TAGSYS"); ManufacturerName.put((byte)34, "Transcore"); ManufacturerName.put((byte)35, "Shanghai belling corp., ltd"); ManufacturerName.put((byte)36, "Masktech Germany Gmbh"); ManufacturerName.put((byte)37, "Innovision Research and Technology Plc"); ManufacturerName.put((byte)38, "Hitachi ULSI Systems Co., Ltd"); ManufacturerName.put((byte)39, "Yubico AB "); ManufacturerName.put((byte)40, "Ricoh"); ManufacturerName.put((byte)41, "ASK"); ManufacturerName.put((byte)42, "Unicore Microsystems, LLC"); ManufacturerName.put((byte)43, "Dallas Semiconductor/Maxim"); ManufacturerName.put((byte)44, "Impinj, Inc"); ManufacturerName.put((byte)45, "RightPlug Alliance"); ManufacturerName.put((byte)46, "Broadcom Corporation"); ManufacturerName.put((byte)47, "MStar Semiconductor, Inc"); ManufacturerName.put((byte)48, "BeeDar Technology Inc"); ManufacturerName.put((byte)49, "RFIDsec"); ManufacturerName.put((byte)50, "Schweizer Electronic AG "); ManufacturerName.put((byte)51, "AMIC Technology Corp"); ManufacturerName.put((byte)52, "Mikron JSC"); ManufacturerName.put((byte)53, "Fraunhofer Institute for Photonic Microsystems"); ManufacturerName.put((byte)54, "IDS Microchip AG"); ManufacturerName.put((byte)55, "Kovio"); ManufacturerName.put((byte)56, "HMT Microelectronic Ltd"); ManufacturerName.put((byte)57, "Silicon Craft Technology"); ManufacturerName.put((byte)58, "Advanced Film Device Inc"); ManufacturerName.put((byte)59, "Nitecrest Ltd"); ManufacturerName.put((byte)60, "Verayo Inc"); ManufacturerName.put((byte)61, "HID Global"); ManufacturerName.put((byte)62, "Productivity Engineering Gmbh"); ManufacturerName.put((byte)63, "Austriamicrosystems AG (reserved)"); ManufacturerName.put((byte)64, "Gemalto SA"); ManufacturerName.put((byte)65, "Renesas Electronics Corporation"); ManufacturerName.put((byte)66, "3Alogics Inc"); ManufacturerName.put((byte)67, "Top TroniQ Asia Limited"); ManufacturerName.put((byte)68, "Gentag Inc (USA)"); ManufacturerName.put((byte)69, "Invengo Information Technology Co.Ltd "); ManufacturerName.put((byte)70, "Guangzhou Sysur Microelectronics, Inc"); ManufacturerName.put((byte)71, "CEITEC S.A"); ManufacturerName.put((byte)72, "Shanghai Quanray Electronics Co. Ltd"); ManufacturerName.put((byte)73, "MediaTek Inc"); ManufacturerName.put((byte)74, "Angstrem PJSC"); ManufacturerName.put((byte)75, "Celisic Semiconductor (Hong Kong) Limited"); ManufacturerName.put((byte)76, "LEGIC Identsystems AG"); ManufacturerName.put((byte)77, "Balluff GmbH"); ManufacturerName.put((byte)78, "Oberthur Technologies "); ManufacturerName.put((byte)79, "Silterra Malaysia Sdn. Bhd"); ManufacturerName.put((byte)80, "DELTA Danish Electronics, Light & Acoustics "); ManufacturerName.put((byte)81, "Giesecke & Devrient GmbH"); ManufacturerName.put((byte)82, "Shenzhen China Vision Microelectronics Co., Ltd"); ManufacturerName.put((byte)83, "Shanghai Feiju Microelectronics Co. Ltd"); ManufacturerName.put((byte)84, "Intel Corporation"); ManufacturerName.put((byte)85, "Microsensys GmbH"); ManufacturerName.put((byte)86, "Sonix Technology Co., Ltd"); ManufacturerName.put((byte)87, "Qualcomm Technologies Inc"); ManufacturerName.put((byte)88, "Realtek Semiconductor Corp"); ManufacturerName.put((byte)89, "Freevision Technologies Co. Ltd"); ManufacturerName.put((byte)90, "Giantec Semiconductor Inc"); ManufacturerName.put((byte)91, "JSC Angstrem-T"); ManufacturerName.put((byte)92, "STARCHIP"); ManufacturerName.put((byte)93, "SPIRTECH"); ManufacturerName.put((byte)94, "GANTNER Electronic GmbH"); ManufacturerName.put((byte)95, "Nordic Semiconductor"); ManufacturerName.put((byte)96, "Verisiti Inc"); ManufacturerName.put((byte)97, "Wearlinks Technology Inc"); ManufacturerName.put((byte)98, "Userstar Information Systems Co., Ltd"); ManufacturerName.put((byte)99, "Pragmatic Printing Ltd"); ManufacturerName.put((byte)100, "Associado Laboratde Sistemas IntegrTecnolLSI-TEC"); ManufacturerName.put((byte)101, "Tendyron Corporation"); ManufacturerName.put((byte)102, "MUTO Smart Co., Ltd"); ManufacturerName.put((byte)103, "ON Semiconductor"); ManufacturerName.put((byte)104, "TüB?TAK B?LGEM"); ManufacturerName.put((byte)105, "Huada Semiconductor Co., Ltd"); ManufacturerName.put((byte)106, "SEVENEY"); ManufacturerName.put((byte)107, "ISSM"); ManufacturerName.put((byte)108, "Wisesec Ltd"); ManufacturerName.put((byte)126, "Holtek"); ManufacturerName.put((byte)-112, "Shanghai Fudan Microelectronics Co. Ltd"); } /** * 通過(guò)UID/Serial Number獲取芯片制造商名字 * @param paramArrayOfByte UID/Serial Number * @return 制造商名字 */ public static String getManufacturerByUid(byte[] paramArrayOfByte) { if (paramArrayOfByte != null) try { if (paramArrayOfByte.length == 8) { byte[] arrayOfByte = new byte[3]; System.arraycopy(paramArrayOfByte, paramArrayOfByte.length - 3, arrayOfByte, 0, 3); return Arrays.equals(arrayOfByte, new byte[] { 29, 4, -32 }) ? ManufacturerName.get((byte)29) : (Arrays.equals(arrayOfByte, new byte[] { -95, 4, -32 }) ? ManufacturerName.get((byte)29) : (Arrays.equals(arrayOfByte, new byte[] { -94, 4, -32 }) ? ManufacturerName.get((byte)29) : ManufacturerName.get(paramArrayOfByte[6]))); } if (paramArrayOfByte.length == 7) return ManufacturerName.get(paramArrayOfByte[0]); } catch (Exception exception) { exception.printStackTrace(); } return MNF_UNKNOWN; }
原文鏈接:https://blog.csdn.net/qq_36270361/article/details/121575953
相關(guān)推薦
- 2022-04-17 Specified key was too long; max key length is 767
- 2022-07-28 C++超詳細(xì)講解函數(shù)參數(shù)的默認(rèn)值_C 語(yǔ)言
- 2022-04-11 C++中為什么要使用動(dòng)態(tài)內(nèi)存_C 語(yǔ)言
- 2022-05-02 Python的os包與os.path模塊的用法詳情_(kāi)python
- 2023-04-06 C#中的那些警告該如何去除(完全去除C#警告)_C#教程
- 2023-04-06 C++中的memset用法詳解_C 語(yǔ)言
- 2021-12-12 Docker?Consul概述以及集群環(huán)境搭建步驟(圖文詳解)_docker
- 2023-04-06 關(guān)于yolov8訓(xùn)練的一些改動(dòng)及注意事項(xiàng)_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支