Android NFC基础入门

2023-05-16

        说道NFC,是Near Field Communication缩写,就是近距离无线通讯技术。NFC采用主动和被动两种通信模式,工作的模式有三种,读写标签,点对点,仿真卡模式,今天我们只是简单的介绍一下读写标签(因为我已经废了一张公交卡了。。。。 大家在学习的时候可以去某宝买几张NFC标签贴纸。。),好了下面开始开始介绍。

1.Android中处理NFC重要的两个包 android.nfc 和 android.nfc.tech。

2.Android SDK API支持下面3种NDEF数据的操作:

(1)从NFC标签读取NDEF格式的数据。

(2)向NFC标签写入NDEF格式的数据。

(3)通过Android Beam技术将NDEF数据发送到另一部NFC设备。

android.nfc下面用到的类也是我们需要使用的:

(1)NdefMessage:描述NDEF格式的信息,实际上我们写入NFC标签的就是NdefMessage对象,所以我们可以理解为数据对象这样就简单多了。

(2)NdefRecord:描述NDEF信息的一个信息段,一个NdefMessage可能包含一个或者多个NdefRecord,也就是对象中的一个个属性。

(3)Tag:表示一个被动的NFC的目标,tag对象将被创建并且封装到一个Intent里,然后NFC 发布系统将这个Intent用startActivity发送到注册了接受这种Intent的activity里。简单来说就是比如现在使用的公交卡,电梯卡,就是这个Tag,里面封装了一个tag对象,当注册了

(4)NfcAdapter : 表示本地设备的NFC adapter,可以定义Intent来请求将系统检测到tags的提醒发送到你的Activity.并提供方法去注册前台tag提醒发布和前台NDEF推送。

(5)NfcManager:NFC adapter的管理器,列出所有本地Android设备支持所有的NFC adapter.

但是大部分Android 设备只有一个NFC adapter。

对了在这里说下Android api版本的区别

1.API level 9以前不支持NFC,当然现在市面上的系统基本上都是4.0以上,低版本的就暂时不考虑了。

2.在API level 10实现对tag的广泛的读写支持。

     好了现在开始上代码以及解释。首先我们使用android studio开始一个工程,在AndroidManifest清单文件里面设置项目权限nfc,要求当前设备必须要有NFC芯片

     定义一个基础的接收nfc tag的activity,类似我们在项目中的基础baseActivity,通常来说为了让我们的设备在靠近nfc标签的时候,能够让我们的界面Activity调用起来,所以清单需要配置一下activity的 launchMode属性为singletop,子类需要在onCreate方法中做Activity初始化,子类需要在onNewIntent方法中进行NFC标签相关操作。当launchMode设置为singleTop时,第一次运行调用onCreate方法,第二次运行将不会创建新的Activity实例,将调用onNewIntent方法所以我们获取intent传递过来的tag数据操作放在onNewIntent方法中执行,如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。下面是Activity,在界面onCreate的时候获取支持的nfcadapter,同时截获NFC消息,通过PendingIntent调用窗口。

        界面onResume和onPause的时候让设备处理当前NFC数据优先于其他的NFC处理。

重写OnnewIntent方法,进行NFC标签的操作

         我在学习的过程中做了一个选择手机里的应用写入标签的应用,运行如下图:

       

  

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android NFC基础入门 的相关文章

  • mint下nginx和uwsgi部署django

    参考 xff1a http www cnblogs com fnng p 5268633 html 安装Nginx apt get install nginx 启动Nginx xff1a etc init d nginx start 启动
  • (原创)Android安装APK报错Installation failed due to: ‘INSTALL_FAILED_TEST_ONLY‘

    这个问题遇到是在vivo手机与oppo手机 xff0c 换成在华为 小米等手机中未发现该问题 其实是因为Android Studio 自3 0 开始自带一个隐藏的功能 xff0c 那就是编译打包 debug 包时 xff0c 会自动在 ap
  • strapi-api使用说明

    strapi controllers 返回项目中可用的控制器的对象 位于该 api controllers文件夹中的每个JavaScript文件都将被解析为该strapi controllers对象 由于这个对象 xff0c 您可以访问项目
  • sublime tex4配置vue开发环境

    前提 已安装package control 参考网站 https lsp sublimetext io https www prettier cn 安装包快捷键 ctrl 43 alt 43 p 输入install package 安装以下
  • win下mkcert+phpenv本地ssl环境配置

    环境win mkcert 安装过程略 使用Chocolatey安装比较方便 1 choco install mkcert 2 mkcert install 弹出窗口点安装 3 mkcert shop test 注意点 shop test 本
  • Android http post/get

    虽然在Android开发中有很多网络框架 xff0c 可是都比较臃肿 xff0c 要考虑很多请求姿势 xff0c 所以自己写了一个 感谢大家发表评论 xff01 1 网络请求一般分为post和get两种方式 xff0c 在工作中我比较常用的
  • Android相机,图库获取图片

    大家的APP中经常会有从手机相机 图库获取图片 xff0c 这里封装了方法可以方便大家 xff0c 解决了Android7 0资源uri的获取方式 xff0c 兼容SDK19以上的机子 xff0c 有权限请求整合 xff0c 欢迎大家下架使
  • 《Streaming System》流式系统-序章

    本文翻译摘抄自 Streaming System xff0c 在阅读的时候进行翻译 xff0c 同时方便广大同学 xff0c 如有错误或侵权 xff0c 烦请指出 偶尔有机会搜到了这本书籍 xff0c 还看到知乎有有问小伙伴对此书佩服的五体
  • 《Streaming System》 第二章:数据处理的四要素 What Where When and How

    本文由 Streaming System 一书第二章的提炼翻译而来 xff0c 译者才疏学浅 xff0c 如有错误 xff0c 欢迎指正 转载请注明出处 xff0c 侵权必究 本章主要介绍鲁棒的处理乱序数据的核心概念 xff0c 这些概念的
  • 《Streaming System》 第三章:Watermarks

    简介 本章主要介绍鲁棒的处理乱序数据的核心概念 xff0c 这些概念的运用使流处理系统超越批处理系统的关键所在 本章我们从流计算系统的底层机制深入来探讨一下watermark 学习这些机制有助于我们更好理解和使用watermark 我们将讨
  • Centos 7 开放查看端口 防火墙关闭打开

    Centos 7 firewall 命令 xff1a 查看已经开放的端口 xff1a firewall span class hljs attribute cmd span span class hljs subst span span c
  • linux CentOS 安装rz和sz命令 lrzsz

    lrzsz在linux里可代替ftp上传和下载 lrzsz 官网入口 xff1a http freecode com projects lrzsz lrzsz是一个unix通信套件提供的X xff0c Y xff0c 和ZModem文件传输
  • (原创)Flutter开发问题:项目启动一直卡在Running Gradle task ‘assembleDebug‘

    问题描述 按照flutter官网步骤安装Flutter SDK Android studio等 xff0c 在创建第一个flutter项目后run的过程一直是Running Gradle task assembleDebug 针对这个问题
  • Redis 分页排序查询

    Redis是一个高效的内存数据库 xff0c 它支持包括String List Set SortedSet和Hash等数据类型的存储 xff0c 在Redis中通常根据数据的key查询其value值 xff0c Redis没有条件查询 xf
  • 使用Spring实现读写分离( MySQL实现主从复制)

    1 背景 我们一般应用对数据库而言都是 读多写少 xff0c 也就说对数据库读取数据的压力比较大 xff0c 有一个思路就是说采用数据库集群的方案 xff0c 其中一个是主库 xff0c 负责写入数据 xff0c 我们称之为 xff1a 写
  • 解决 Unable to load native-hadoop library for your platform

    安装hadoop启动之后总有警告 xff1a Unable to load native hadoop library for your platform using builtin java classes where applicabl
  • [音乐] 随遇而安

    黄霑真的很适合唱这种充满了江湖气息的歌 xff0c 这首歌的经典程度不亚于 沧海一声笑 有兴趣的自己搜来听听吧 人外有人山外有山 不怕拼命怕平凡 有得有失有欠有还 老天不许人太贪 挺起胸膛咬紧牙关 生死容易低头难 就算当不成英雄 也要是一条
  • Request Body数据读取

    拦截器要读取request body数据的话需要注意一个问题 xff0c 一旦拦截器把数据流从request读取出来后 xff0c 后区的接口层就拿不到数据了 xff0c 因为流是一次性的 xff0c 那么要解决这个问题 xff0c 我们就
  • scikit-learn常用的用法及问题

    对平时用机器学习算法常遇到的问题做个总结 xff5e A 交叉验证 交叉验证是为了评估当前的模型对于整个dataset的generalization error怎么样 xff08 如果太大 xff0c 表示overfit或者underfit
  • ubuntu开启SSH服务远程登录

    ssh secure shell xff0c 提供安全的远程登录 从事嵌入式开发搭建linux开发环境中 xff0c ssh的服务的安装是其中必不可少的一步 ssh方便一个开发小组中人员登录一台服务器 xff0c 从事代码的编写 编译 运行

随机推荐