android nfc MifareUltralight读写

原创 2015年11月19日 16:02:26

MifareUltralight :是techlist中的一种类型,共16页,每页4个字节,也就是一页只能存2个汉字或者4个字母,0到3页  也就是前四页用来存卡片信息的,所以往MifareUltralight写数据,只能从第四页开始写,总共可以写入除了自带的卡片信息,可以写入4到15页数据,也就是56个字节,折算出来就是最多可写28个汉字或者56个字符。

MifareUltralight 卡片靠近手机摄像头附近  即可测试  demo地址

http://download.csdn.net/detail/u012303938/9282985


源码:

package com.example.writefnc;

import java.io.IOException;
import java.nio.charset.Charset;
import java.util.Arrays;

import android.support.v7.app.ActionBarActivity;
import android.app.PendingIntent;
import android.content.Intent;
import android.nfc.NfcAdapter;
import android.nfc.Tag;
import android.nfc.tech.MifareUltralight;
import android.nfc.tech.Ndef;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;


public class MainActivity extends ActionBarActivity {
	
	private NfcAdapter nfcAdapter;
	private PendingIntent intent;
    CheckBox checkBox1;
    TextView textView1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        checkBox1=(CheckBox) findViewById(R.id.checkBox1);
        textView1=(TextView) findViewById(R.id.textView1);
        nfcAdapter=NfcAdapter.getDefaultAdapter(this);
        intent=PendingIntent.getActivity(this, 0, new Intent(this,getClass()), 0);
    }
     @Override
    protected void onResume() {
    	// TODO Auto-generated method stub
    	super.onResume();
    	nfcAdapter.enableForegroundDispatch(this, intent, null, null);
    }
     @Override
    protected void onPause() {
    	// TODO Auto-generated method stub
    	super.onPause();
    	nfcAdapter.disableForegroundDispatch(this);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
    @Override
    protected void onNewIntent(Intent intent) {
    	// TODO Auto-generated method stub
    	super.onNewIntent(intent);
    	Tag tag=intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
    	Toast.makeText(this, "获取tag", Toast.LENGTH_SHORT).show();
    	if(checkBox1.isChecked()){
    		Toast.makeText(this, "选择读取", Toast.LENGTH_SHORT).show();
    		textView1.setText(readTag(tag));
    	}else{
    		Toast.makeText(this, "选择写入", Toast.LENGTH_SHORT).show();
    		writeTag(tag);
    	}
    	
    }
    public void writeTag(Tag tag){
    	String[] techlist=tag.getTechList();
    	if(Arrays.toString(techlist).contains("MifareUltralight")){
    		MifareUltralight mifareUltralight=MifareUltralight.get(tag);
        	try {
    			mifareUltralight.connect();
    			Toast.makeText(this, "开始写", Toast.LENGTH_SHORT).show();
    			mifareUltralight.writePage(4, "你好".getBytes(Charset.forName("GB2312")));
    			mifareUltralight.writePage(5, "中国".getBytes(Charset.forName("GB2312")));
    			mifareUltralight.writePage(6, "人们".getBytes(Charset.forName("GB2312")));
    			mifareUltralight.writePage(7, "百姓".getBytes(Charset.forName("GB2312")));			mifareUltralight.writePage(7, "百姓".getBytes(Charset.forName("GB2312")));
    		

    			Toast.makeText(this, "写入完成", Toast.LENGTH_SHORT).show();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}finally{
    			try {
    				mifareUltralight.close();
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    	}else{
    		Toast.makeText(this, "不是MifareUltralightle类型", Toast.LENGTH_SHORT).show();
    	}
    	
    }
    public String readTag(Tag tag){
    	String[] techlist=tag.getTechList();
    	if(Arrays.toString(techlist).contains("MifareUltralight")){
    	MifareUltralight mifareUltralight=MifareUltralight.get(tag);
    	Toast.makeText(this, "开始读", Toast.LENGTH_SHORT).show();
    	try {
    		mifareUltralight.connect();
    		
    		byte[] data=mifareUltralight.readPages(4);
    		return new String(data,Charset.forName("GB2312"));
    		
		} catch (Exception e) {
			// TODO: handle exception
		}finally{
			try {
				mifareUltralight.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
    	
    	}else{
    		Toast.makeText(this, "不是MifareUltralightle类型", Toast.LENGTH_SHORT).show();
    	}
    	return null;
    }
    	
}


Android NFC 使用MifareUltralight读写数据

一、概述: Mifare UltraLight又称为MF0,从UltraLight(超轻的)这个名字就可以看出来,它是一个低成本、小容量的卡片。低成本,是指它是目前市场中价格最低的遵守ISO1444...
  • lovoo
  • lovoo
  • 2016年08月29日 22:29
  • 1810

Android应用实例之----MifareUltralight格式的nfc标签读写

随着支持nfc通信智能手机
  • Luapalind
  • Luapalind
  • 2014年08月06日 18:46
  • 1958

射频识别技术漫谈(16)——Mifare UltraLight

原文地址::http://blog.sina.com.cn/s/blog_9ed067ad01010t8k.html  Mifare UltraLight又称为MF0,从UltraLigh...
  • xqhrs232
  • xqhrs232
  • 2015年11月11日 09:59
  • 1490

Mifare UltraLight 卡存储结构

原文地址::http://blog.csdn.net/rabbit100/article/details/47415391 相关文章 1、Mifare ultralight IC卡说明----...
  • xqhrs232
  • xqhrs232
  • 2017年05月27日 15:34
  • 460

android nfc MifareUltralight读写

  • 2015年11月19日 15:59
  • 1.1MB
  • 下载

android NFC读写

  • 2015年03月06日 10:14
  • 72KB
  • 下载

Mifare Ultra Light 非接触式IC卡发卡总结

Mifare Ultra Light 非接触式IC卡发卡总结 概述: 1、  容量512bit,分为16个page,每个page占4byte 2、  每个page可以通过编程的方式...
  • askeil11
  • askeil11
  • 2014年10月13日 16:25
  • 1407

mifare各种卡片种类及回应

  • 2014年09月02日 17:11
  • 342KB
  • 下载

nfc ntag21x ultralight 内存结构

ntag21x的内存结构类似于EEPROM,按页访问,一个页4个字节,容量越大的ntag,页数也越大,内存结构也有点不同. 一.下面是nta216内存结构:            ...
  • welljrj
  • welljrj
  • 2016年09月08日 13:59
  • 434

android m1卡读写

手机自带nfc功能,可用手机对m1卡进行读写,dang
  • u011277850
  • u011277850
  • 2014年11月19日 14:51
  • 1881
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android nfc MifareUltralight读写
举报原因:
原因补充:

(最多只允许输入30个字)