温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android识别NFC芯片制造商的方法是什么

发布时间:2021-11-29 09:06:47 阅读:299 作者:柒染 栏目:开发技术
Android开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

本篇文章为大家展示了Android识别NFC芯片制造商的方法是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

如何识别?

通过NFC模块的Serial Number即UID,用户访问权限为R只读,每颗NFC芯片独有序列号(UID),在出厂时写入,用户不能改写。

Android如何实现?

通过Intent获取UID

/**
     * 读取nfcUID 返回String类型大写的UID
     * 
     * 这个测试顺便加上的,下面用不到,做个笔记~~
     * 
     */
    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[]数组
     * 
     */
    public static byte[] readUID(Intent intent) throws UnsupportedEncodingException {
        Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
        return tagFromIntent.getId();
    }

HexUtil工具类:

public class HexUtil {

    /**
     * 用于建立十六进制字符的输出的小写字符数组
     */
    private static final char[] DIGITS_LOWER = {'0''1''2''3''4''5''6''7''8''9',
            'a''b''c''d''e''f'};

    /**
     * 用于建立十六进制字符的输出的大写字符数组
     */
    private static final char[] DIGITS_UPPER = {'0''1''2''3''4''5''6''7''8''9',
            'A''B''C''D''E''F'};

    /**
     * 将字节数组转换为十六进制字符数组
     *
     * @param data     byte[]
     * @param toDigits 用于控制输出的char[]
     * @return 十六进制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;
    }

    /**
     * 将字节数组转换为十六进制字符串
     *
     * @param data        byte[]
     * @param toLowerCase <code>true</code> 传换成小写格式 , <code>false</code> 传换成大写格式
     * @return 十六进制String
     */
    public static String encodeHexStr(byte[] data, boolean toLowerCase) {
        return encodeHexStr(data, toLowerCase ? DIGITS_LOWER : DIGITS_UPPER);
    }

    /**
     * 将字节数组转换为十六进制字符串
     *
     * @param data     byte[]
     * @param toDigits 用于控制输出的char[]
     * @return 十六进制String
     */
    protected static String encodeHexStr(byte[] data, char[] toDigits) {
        if (data == null) {
            return "";
        }
        return new String(encodeHex(data, toDigits));
    }
}

通过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");
    }


    /**
     *  通过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, 03);
                    return Arrays.equals(arrayOfByte, new byte[] { 294-32 })
                            ? ManufacturerName.get((byte)29) : (Arrays.equals(arrayOfByte, new byte[] { -954-32 })
                            ? ManufacturerName.get((byte)29) : (Arrays.equals(arrayOfByte, new byte[] { -944-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;
    }

上述内容就是Android识别NFC芯片制造商的方法是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×