溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Android識(shí)別NFC芯片制造商的方法是什么

發(fā)布時(shí)間:2021-11-29 09:06:47 來(lái)源:億速云 閱讀:206 作者:柒染 欄目:開發(fā)技術(shù)

本篇文章為大家展示了Android識(shí)別NFC芯片制造商的方法是什么,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

如何識(shí)別?

通過(guò)NFC模塊的Serial Number即UID,用戶訪問(wèn)權(quán)限為R只讀,每顆NFC芯片獨(dú)有序列號(hào)(UID),在出廠時(shí)寫入,用戶不能改寫。

Android如何實(shí)現(xiàn)?

通過(guò)Intent獲取UID

/**
     * 讀取nfcUID 返回String類型大寫的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工具類:

public class HexUtil {

    /**
     * 用于建立十六進(jìn)制字符的輸出的小寫字符數(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)制字符的輸出的大寫字符數(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> 傳換成小寫格式 , <code>false</code> 傳換成大寫格式
     * @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去查詢廠商

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;
    }

上述內(nèi)容就是Android識(shí)別NFC芯片制造商的方法是什么,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI