6.NFC之非NDEF格式
先看流程图

使用步骤:
第一步:声明权限
<!-- 允许应用程序使用NFC功能 -->
<uses-permission android:name="android.permission.NFC" />
第二步:Activity设置能拦截的NFC tag,不需要拦截ACTION_NDEF_DISCOVERED类型的NDEF标签,标题说了拦截非NDEF的tag
<activity
android:name="com.example.nfcdemo.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- 能拦截TECH_DISCOVERED的tag -->
<intent-filter>
<action android:name="android.nfc.action.TECH_DISCOVERED" />
</intent-filter>
<!-- TECH_DISCOVERED中哪些部分的tag,在xml文件中找 -->
<meta-data android:name="android.nfc.action.TECH_DISCOVERED"
android:resource="@xml/nfc_tech_filter" />
<!-- 能拦截ACTION_TAG_DISCOVERED,好像拦截了,也没啥用,又处理不了-->
<intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
其中,nfc_tech_filter.xml在res的xml文件夹中(没有该文件夹则创建该文件夹)
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <tech-list>
<tech>android.nfc.tech.IsoDep</tech>
</tech-list>
<!-- 以下只是显示怎么添加多个nfc支持类 -->
<tech-list>
<tech>android.nfc.tech.NfcV</tech>
</tech-list>
<tech-list>
<tech>android.nfc.tech.NfcF</tech>
</tech-list> </resources>
第三步:在拦截的Aty中
private NfcAdapter nfcAdapter; // NFC适配器
// 获取默认的NFC控制器,并进行判断
nfcAdapter = NfcAdapter.getDefaultAdapter(this);
if (nfcAdapter == null) {
Log.d("h_bl", "设备不支持NFC!");
finish();
return;
}
if (!nfcAdapter.isEnabled()) {
Toast.makeText(getApplicationContext(), "请在系统设置中先启用NFC功能!", Toast.LENGTH_SHORT).show();
Log.d("h_bl", "请在系统设置中先启用NFC功能!");
return;
}
Intent intent = this.getIntent(); // 捕获NFC Intent
praseIntent(intent);
解析Intent
private void praseIntent(Intent intent) {
String nfcAction = intent.getAction(); // 解析该Intent的Action
if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(nfcAction)) {
Log.d("h_bl", "ACTION_TECH_DISCOVERED");
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); // 获取Tag标签,既可以处理相关信息
for (String tech : tag.getTechList()) {
Log.d("h_bl", "该tag支持的tech=" + tech);
}
IsoDep isoDep = IsoDep.get(tag);
String str = "";
try {
isoDep.connect(); // 连接
if (isoDep.isConnected()) {
Log.d("h_bl", "isoDep.isConnected"); // 判断是否连接上
// 1.首先初始化的时候你要先读根目录3F00
byte[] ROOT_DIRECTORY={
(byte)0x00,
(byte)0xA4,
(byte)0x00,
(byte)0x00,
(byte)0x02,
(byte)0x3F,
(byte)0x00,
(byte)0x00
};
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (isoDep != null) {
try {
isoDep.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
解析过程:
1.解析该Intent的Action
2.获取Tag标签,既可以处理相关信息
3.创建相关的类进行处理
4.详见IsoDep类的使用
还有一个前台调度系统,详见前台调度系统的使用。
6.NFC之非NDEF格式的更多相关文章
- 13、NFC技术:读写非NDEF格式的数据
MifareUltralight数据格式 将NFC标签的存储区域分为16个页,每一个页可以存储4个字节,一个可存储64个字节(512位).页码从0开始(0至15).前4页(0至3)存储了NFC标签相关 ...
- android nfc中Ndef格式的读写
1. 在onCreate()中获取NfcAdapter对象: NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this); 2.在onNewI ...
- NFC(3)Android上的NFC,开启NFC,3种NDEF数据
Android对NFC技术的支持 Android2.3.1(API Level = 9)开始支持NFC技术,但Android2.x和Android3.x对NFC的支持非常有限.而从Android4.0 ...
- 3.非标准的NDEF格式数据解析--IsoDep
1.使用目的:正常开发是针对NDEF格式数据进行开发,但实际情况并非如此,以厦门公交卡为例,厦门公交卡保存的是非NDEF格式数据.其类型是IsoDep类型. 2.非标准的NDEF格式数据流程:当厦门公 ...
- 9、NFC技术:NDEF文本格式解析
NDEF文本格式规范 不管什么格式的数据本质上都是由一些字节组成的.对于NDEF文本格式来说.这些数据的第1个字节描述了数据的状态,然后若干个字节描述文本的语言编码,最后剩余字节表示文本数据. ...
- volley post非json格式数据并获取json数据
在使用JsonObjectRequest时无法post非json格式的数据,因而采用StringRequest获取到相应的数据后再转为json格式的数据. //这里的上下文需要讨论 private s ...
- windows下给用非exe格式的文件安装网卡驱动
之前我只知道用驱动精灵来给新机器装网卡驱动,或者用下载好的exe格式文件给非新机器装网卡驱动. 今天下载了一个非exe格式的文件,就不知道怎么装了,百度了一下才知道,可以通过:”设备管理器“-> ...
- django中怎样生成非HTML格式的内容。
某些时候可能有这种需求.在网页中点击一个链接或者一个button希望返回一张图片.一个pdf文档.一个csv文档等而非HTML. 在diango中非常easy做到这些.django中的view用来接收 ...
- ios非UTF-8格式的网页解析
网上有很多关于ios xml解析的方法,关于非UTF-8格式的网页解析也不少,我也试着看了好几个,但都没成功.今天无意中却弄好了,所以想和大家分享下.其实很简单,下面说下怎么得到非UTF-8格式的网页 ...
随机推荐
- 平衡二叉树(AVL)
AVL就是优化二叉查找树 平衡因子不大于1 左 < 根 < 右 具体看代码 #include<bits/stdc++.h> using namespace std; typed ...
- Beta
目录 过去存在的问题 任务分工 规范 后端总结 卉卉 家灿 前端总结 绪佩 青元 恺琳 宇恒 丹丹 算法&API接口 家伟 鸿杰 一好 文档&博客撰写 政演 产品功能 我们已经坐了哪些 ...
- jQuery选择器示例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【bzoj2770】YY的Treap 权值线段树
题目描述 志向远大的YY小朋友在学完快速排序之后决定学习平衡树,左思右想再加上SY的教唆,YY决定学习Treap.友爱教教父SY如砍瓜切菜般教会了YY小朋友Treap(一种平衡树,通过对每个节点随机分 ...
- HDU 4585 Shaolin(Treap找前驱和后继)
Shaolin Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Su ...
- [poj] 2749 building roads
原题 2-SAT+二分答案! 最小的最大值,这肯定是二分答案.而我们要2-SATcheck是否在该情况下有可行解. 对于目前的答案limit,首先把爱和恨连边,然后我们n^2枚举每两个点通过判断距离来 ...
- 朗格拉日计数(counter)
朗格拉日计数(counter) 题目描述 在平面上以圆周等分排列着n个带标号(标号为1-n)的点,你需要计算有多少个三元组(a,b,c),满足a<b<c而且标号为a,b,c的点在圆上分布的 ...
- 用CSS模拟魔兽世界技能冷却的效果
效果演示 上面的效果看起来还不错吧.在网页里,除了用Flash,我们还是有不少方法可以实现它. 显然这种效果不复杂,一张背景图片,加上前面带有透明度的多边形图层,在脚本控制下就可以转起来了.但问题 ...
- Codeforces 932.A Palindromic Supersequence
A. Palindromic Supersequence time limit per test 2 seconds memory limit per test 256 megabytes input ...
- Audio Unit 介绍
关于 Audio Unit iOS 提供了音频处理插件,支持混音,声音均衡,格式转化,以及用于录音,回放,离线渲染,实时对话的输入输出.可以动态载入和使用这些强大而灵活的插件,在 iOS 应用中这些插 ...