zoukankan      html  css  js  c++  java
  • 关于android的nfc问题

    最近在研究android的nfc问题


    首先再网上有很多关于android nfc 读写的问题,但是大多数都是关于Mifare Classic类型卡的读写,我百试不得骑解,于是自己写了一些程序供大家参考,

    我的手机android 4.4,google Nexus4


    nfc 卡的类型是:ultralight c


     读取ndef关键代码:

    public String readNdef(Tag tag) {
        	String result = null;
        	
            Ndef ndef = Ndef.get(tag);
            try {
    			ndef.connect();
    			NdefMessage msg = ndef.getNdefMessage();
    			result = new String(msg.toByteArray());
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (FormatException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} finally {
    			try {
    				if(ndef != null && ndef.isConnected()) {
    					ndef.close();
    					ndef = null;
    				}
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
            return result;
            
        }


    对nfc有意写了解的人就会知道传入的tag是靠   tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);

    这么来的,具体的就不多说了,相信大家网上已经搜到了好多


    还有写入ndef数据的关键代码


    public void writeNdef(Tag tag,String Text) {
            Ndef ndef = Ndef.get(tag);
            try {
    			ndef.connect();
    			byte[] data = Text.getBytes();
    			  NdefMessage msg = new NdefMessage(
    		                new NdefRecord[] { createMimeRecord(
    		                        "application/com.bjypc.han.googlejuesai", data)
    		        });
    			ndef.writeNdefMessage(msg);
    		} catch (IOException e) {
    			e.printStackTrace();
    		} catch (FormatException e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				if(ndef != null && ndef.isConnected()) {
    					ndef.close();
    					ndef = null;
    				}
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
        }
    public NdefRecord createMimeRecord(String mimeType, byte[] payload) {
            byte[] mimeBytes = mimeType.getBytes(Charset.forName("US-ASCII"));
            NdefRecord mimeRecord = new NdefRecord(
                    NdefRecord.TNF_MIME_MEDIA, mimeBytes, new byte[0], payload);
            return mimeRecord;
        }


    好了,到此为止我们就成功的读取或写入了ndef卡的ndef信息了,


    希望能帮到大家!

  • 相关阅读:
    不同操作系统的宏定义区分
    WINDOWS下VS编译opencv并加载自定义模块
    基于模板匹配的马赛克检验
    [转]C++模板详解
    [Linux命令]Unix/Linux信号量的使用
    [C/C++基础]读写文件
    [Linux命令]查看Linux系统相关命令
    【Linux命令】查找命令
    【QT相关】文件、目录基础操作
    【MFC相关】图片显示
  • 原文地址:https://www.cnblogs.com/riasky/p/3458828.html
Copyright © 2011-2022 走看看