这里写自定义目录标题

Android的NFC读写(一)

NFC简介

代码解析

源码(Demo)

Android的NFC读写(一)

近来,因需求需要开发nfc读写功能,网上查阅了许多资料,发现相关方面资料鱼龙混杂,许多demo甚至无法跑起来,于是无奈只能硬啃官方文档,终于颇有感悟,demo见末尾

nfc相关资料,大家可以参考以下几个网站,里面讲的非常透彻。

https://developer.android.com/guide/topics/connectivity/nfc

https://developer.android.com/guide/topics/connectivity/nfc/nfc.html

https://developer.android.com/guide/topics/connectivity/nfc/advanced-nfc.html

NFC简介

这里简单的介绍一下nfc,近场通信(NFC)是一组短距离无线技术,通常需要4cm或更短的距离才能启动连接。NFC允许您在NFC标签和Android设备之间或两个Android设备之间共享小的数据有效负载。在Android中,我们通常会遇到三种操作模式:

读/写模式,允许NFC设备读取和/或写入被动NFC标签和贴纸。

P2P模式,允许NFC设备与其他NFC对等体交换数据; Android Beam使用此操作模式。

卡仿真模式,允许NFC设备本身充当NFC卡。然后,可以通过外部NFC读取器(例如NFC销售点终端)访问模拟的NFC卡。

本文实现了nfc标签NDEF和ultralight两种格式的读取效果

代码解析

首先先配置android权限,文件内容如下:

标签调度系统的基本工作方式如下:

1.尝试以解析NFC标记(ACTION_NDEF_DISCOVERED或其中一个ACTION_TECH_DISCOVERED)时标记调度系统创建的意图启动一个Activity 。

2.如果没有活动过滤该意图,请尝试启动具有下一个最低优先级意图的活动(ACTION_TECH_DISCOVERED或者ACTION_TAG_DISCOVERED),直到应用程序筛选意图或标记分派系统尝试所有可能的意图。

3.如果没有应用程序筛选任何意图,请不执行任何操作。

大家可以参考这张图

然后将Activity启动模式设置为singleTop,在这种模式下,如果Activity已经在任务栈的栈顶了,当再次启动同一个Activity的时候,这个Activity不会被重新创建,而且它的onNewIntent()方法会被调用,但是它的onCreate()、onStart()方法不会被调用。

#####新建xml文件夹,新建nfc_tech文件(自定义):

该文件指定您的活动在tech-list集合中支持的技术,如下所示:

android.nfc.tech.IsoDep

android.nfc.tech.NfcA

android.nfc.tech.NfcB

android.nfc.tech.NfcF

android.nfc.tech.NfcV

android.nfc.tech.Ndef

android.nfc.tech.NdefFormatable

android.nfc.tech.MifareClassic

android.nfc.tech.MifareUltralight

在主界面方法里判断手机是否具有nfc功能,如下所示:

if (mNfcAdapter == null) {

Toast.makeText(this, "该设备不支持nfc", Toast.LENGTH_SHORT).show();

finish();

return;

}

if (!mNfcAdapter.isEnabled()) {

Toast.makeText(this, "请打开nfc开关", Toast.LENGTH_SHORT).show();

Intent intent=new Intent(Settings.ACTION_NFC_SETTINGS);

startActivity(intent);

}

//创建PendingIntent对象,当检查到一个tag标签就会执行此Intent

mPendingIntent=PendingIntent.getActivity(this,0,new Intent(this,getClass()),0);

在onNewIntent方法中取出获取到的标签,并进入读取标签的方法:

Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);

String techList[] = tag.getTechList();

for (String tech : techList) {

System.out.print(tech);

}

readNdeftag(tag);

自定义读取标签的方法:这里目前只做了NDEF格式的读取:

Ndef ndef = Ndef.get(tag);

try {

ndef.connect();

NdefMessage ndefMessage = ndef.getNdefMessage();

if (ndefMessage != null) {

mReadText.setText(parseTextRecord(ndefMessage.getRecords()[0]));

Toast.makeText(this, "成功", Toast.LENGTH_SHORT).show();

}else {

mReadText.setText("该标签为空标签");

}

源码(Demo)

最后Demo已经上传,欢迎大家交流下载,不足之处,还望请教。

链接: https://github.com/zcyyouminghuo/Android_NfcDemo.

基于NFC的Android读写软件,Android基于nfc的读写(一)相关推荐

  1. android社交软件页面,基于android社交软件的开发.pdf

    盐城师范学院毕业设计 基于android社交软件的开发 摘 要 当下移动智能手机已经成为人们生活必需品,越来越多的年轻人紧跟时代潮流,对 自己的智能手机进行更新换代,这极大的推动着智能手机的飞跃发展. ...

  2. android 社交软件开发,基于Android的移动端社交软件的设计与实现

    摘要: 随着移动互联技术以及移动社交的快速发展,市场对移动互联社交软件的需求越来越强烈.为了满足日益增长的移动社交软件的需求的要求,提高软件的服务质量,设计开发一套移动社交软件很有必要.在这样的背景下 ...

  3. android更新软件,Android软件的自动更新

    今天重新写了一篇自动更新的文章,参考:http://aokunsang.iteye.com/blog/1750440.本篇文章的源码整理了下,上传到了附件,需要的去下载. 看了几个博客,讲自动升级的程 ...

  4. android 评测软件,Android平台五款主流在线视频软件横向评测

    Android软件中的在线流媒体视频已经出了不少了,本篇评测就是针对目前主流的5款Android在线视频播放软件进行一个横向评测,让您全面了解其个特性. 参评游戏: 评测项目 多款Android视频播 ...

  5. 苹果电脑硬盘读写软件有哪些?Tuxera NTFS2023mac读写硬盘软件

    格式化是将硬盘重置到初始状态或者是转换硬盘格式所需的一项重要步骤,格式化可以解决大部分用户遇到的硬盘问题,不过在进行格式化之前,大家需要提前了解格式化的具体注意事项,以避免不必要的损失.下面本文就来着 ...

  6. Android遥控车软件设计,基于Android系统和蓝牙通信的手机遥控车设计

    1 设计背景 现有每个普通家庭中的遥控器包括空调遥控器.电视遥控器.DVD遥控器.汽车遥控器.门窗遥控器等,门类繁多且不通用,而另一方面,手机已成为人人必备的工具,如果可以用我们必备的手机去遥控所有这 ...

  7. android外卖软件开发,基于Android平台的外卖配送软件的设计与实现

    摘要: 随着外卖产业的不断发展,订购外卖已经成为了人们每日的需求.相比于传统的快递服务业,外卖配送有着极高的时效性要求,食物必须保证在极短的时间内送达到客户手中,不然会影响食物的口感和客户的订餐体验. ...

  8. android mac软件,Android 开发中我 Mac的软件

    欢迎关注MAndroid 公众号 1.首先是 这两个肯定不用说了.开发软件必备的,那么有了模拟器和开发软件还有那些对我们的帮助很大呢 2.代码编辑器(我用来看代码) 还有好多.看个人喜好吧.editp ...

  9. android 清理软件,Android 5.0下哪个清理软件最好用?

    Android5.0在发布之初凭借其全新的界面设计,优秀的体验赢得了不少用户和厂商的青睐.而现在Android5.0发布了都有一段时间,除了谷歌的Nexus系列手机能用上最新的系统之外,最近又有很多机 ...

  10. android 统计图软件,Android统计图的绘制( MPChartLib 的使用)

    最近一直在研究Android 图形块的内容,绘制统计图肯定是要去学的:在自己写之前,首先要借鉴下别人写的:先学学别人的:我把对MPChartLib 的使用总结一下: 先上效果图 统计图我们大可以从2点 ...

最新文章

  1. 对应到对象 数据库驼峰_【GI的自主空间数据库】一种竞争力,叫技术引领;一种竞争力,叫时间沉淀...
  2. 【机器学习】基于人工鱼群算法的非线性函数寻优
  3. 用Greasemonkey脚本收藏网站会员信息到本地
  4. 判断字符串_python判断字符串以什么开始
  5. ACM入门之【图论习题】
  6. QT的QCategoryAxis类的使用
  7. CentOS 7.X 升级 Python 3.8.X
  8. 支持向量机SVM算法原理
  9. 单继承模式下的JAVA和C++
  10. 信息学奥赛C++语言:被3整除
  11. 内部类及静态内部类的实例化
  12. 内容管理系统(CMS)的设计和选型
  13. 关于跳转 + 传递消息,
  14. 凸优化第二章凸集 2.2重要例子
  15. LoRa全链路打通教程01 - LoRa网关配置查看和修改方法详解(以ST P-NUCLEO-LRWAN3 套件为例)
  16. blos硬盘启动台式计算机,最新戴尔台式机bios设置硬盘启动图解
  17. 为什么计算机桌面图标不见了,为什么电脑桌面上的图标全不见了?
  18. XCOM2.0接收数据为0
  19. Gala concert held to commemorate Andersen
  20. Typora + PicGo + 七牛云图床

热门文章

  1. 诺顿误杀真相之“为什么诺顿会误杀中文windows”
  2. 电脑右下角弹出广告和桌面自动生成游戏图标
  3. easyMule如何导入未完成任务
  4. 省级面板数据(1990-2019):能源生产等(原油、石油、焦炭、原煤、天然气等)stata或excel版本
  5. iOS媒体视频播放器应用源码
  6. Vue导出office模板文件(xdoc在Vue中的使用)
  7. hadoop保姆级安装教程
  8. 大学生职业发展与就业指导 中国大学mooc 福州大学 测验题目和答案
  9. html表白树代码程序怎么调,抖音表白弹窗vbs代码怎么制作 表白树特效程序代码教程详细介绍...
  10. nero 刻录一张4g的服务器系统盘大概需要多长时间,刻录系统盘(如何刻录系统盘) 狸窝用户有福了:nero刻录系统盘...