这里写自定义目录标题

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. 20165301第十周课下补做
  2. oracle导出脚本文件怎么打开,Windows下的Oracle导出脚本 -电脑资料
  3. 【Java语法】抽象类、接口、内部类
  4. 内部导线拉力测试_端子拉脱力的正确测试方法及标准
  5. Spring Cloud Feign注意点
  6. [机器学习笔记]Note10--支持向量机(SVM)
  7. 贪心思维 专题记录 2017-7-21
  8. oracle rac openstack,利用 Chef 实现 OpenStack 块存储多节点的自动化部署
  9. 如何防止远程程序与RDS PG连接中断
  10. 反向代理实现同域名下PHP和Java共存
  11. 读xml文件时字体串类型的判断
  12. Hbase------刘飞
  13. 分盘后磁盘空间不够,用分区助手增加某个磁盘空间
  14. Java实战之管家婆记账系统(1)——项目简述
  15. Unity3D 太空射击游戏学习笔记
  16. cesium实现报警波纹
  17. python jupyter notebook怎么调字体大小_配置Jupyter的代码主题 字体以及字体大小 代码自动补全...
  18. 详解阿里云数据中台,一篇文章全面了解大数据“网红”
  19. 阿里云ECS安装MySql数据库
  20. 山西省2021年高考试成绩查询,山西省2021年普通高等学校招生体育专业考试成绩查询入口...

热门文章

  1. 软件技术毕业论文编程方向
  2. 网页切图的CSS和布局经验与要点
  3. 学习【新版的】韦东山嵌入式_day01
  4. 计算机的基础硬件知识,计算机硬件基础知识学习_电脑硬件知识_手机硬件知识...
  5. GNSS最终、快速、超快速星历下载地址汇总
  6. VMware-分配 vSphere 5.0 许可证密钥
  7. 一张图助你了解传统项目管理与敏捷项目管理的区别!
  8. 一款二进制文件查看器
  9. 推荐几个好用的插件(Edge)
  10. 用PASS软件完成多组率的样本量计算