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信息了,


    希望能帮到大家!

  • 相关阅读:
    day5 -常用模块
    day4装饰器-迭代器&&生成器
    h5 canvas 图片上传操作
    Tomcat上传文件报错:returned a response status of 403 Forbidden
    $.each遍历json对象
    Java求字符串中出现次数最多的字符
    线程池原理
    谈谈你对Hibernate的理解
    为什么要用 ORM? 和 JDBC 有何不一样?
    多线程有几种实现方法?同步有几种实现方法?(被问到)
  • 原文地址:https://www.cnblogs.com/riasky/p/3458828.html
Copyright © 2011-2022 走看看