NFC高级汇总

微信小程序 NFC HCE卡模拟 需要实现带模拟一张智能卡(门禁卡或者其他业务卡),使用带NFC设备根据指定协议进行读取模拟卡数据(效果图如下): 1. 模拟卡设计 这里使用设备自带NFC模拟卡(HCE)模式,模拟出一张虚拟卡,类似华为钱包,applepay钱包等。选择添加的卡,提供读取。 1.1 数据包交互协议 类TLV数据包格式,及Tag Length Value(和银联IC卡返回数据协议类似)。...... 阅读详情

高级 NFC

本文档介绍了高级的NFC主题,如各种标签技术,NFC标签写入和前台发布,它允许即使当其他应用程序过滤器相同的时候,应用程序在前台处理Intent。

Tag技术支持工作



当使NFC Tag和Android的供电设备生效,使用Tag来读取和写入数据的主要格式是NDEF,当设备扫描NDEF数据的Tag,Android提供支持解析的消息,并在可能的情况下将它传入一个NdefMessage,但是,在有些情况下,当你扫描不包含NDEF数据的Tag或当NDEF数据时无法映射到MIME类型或URI时。在那样的情况下,你需要直接与Tag建立沟通及用自己的协议(在原始字节)读写它,Android用android.nfc.tech包对那些情况提供了通用的支持,如表1中所描述的。您可以使用getTechList()方法来确定技术支持Tag,并且用由android.nfc.tech提供的类的其中一个创建相应TagTechnology对象.

表 1. 支持的Tag技术

类 描述
TagTechnology 这个接口是下面所有tag technology类必须实现的。
NfcA 提供访问 NFC-A (ISO 14443-3A) 的属性和 I/O 操作
NfcB 提供访问 NFC-B (ISO 14443-3B) 的属性和 I/O 操作
NfcF 提供访问 NFC-F (JIS 6319-4) 的属性和 I/O 操作
NfcV 提供访问 NFC-V (ISO 15693)  的属性和 I/O 操作
IsoDep 提供访问 ISO-DEP (ISO 14443-4) 的属性和 I/O 操作
Ndef 提供对那些被格式化为NDEF的tag的数据的访问和其他操作
NdefFormatable 对那些可以被格式化成NDEF格式的tag提供一个格式化的操作

下面的Tag技术不要求被Android的供电设备支持。

表 2. 可选的支持的Tag技术

类 描述
MifareClassic 如果android设备支持MIFARE,提供对MIFARE Classic目标的属性和I/O操作。
MifareUltralight 如果android设备支持MIFARE,提供对MIFARE Ultralight目标的属性和I/O操作。

Tag技术工作和 ACTION_TECH_DISCOVERED Intent


当一个设备扫描一个有NDEF数据的Tag,但不能被映射到一个MIME或URI时,Tag发布系统试图启动一个Activity与ACTION_TECH_DISCOVERED Intent。当非NDEF被扫描到时,ACTION_TECH_DISCOVERED的Tag也可以使用.如果Tag发布系统无法为你解析它,此回退让你直接进行扫描标签上的数据,基本步骤与标签技术如下:

  1. 过滤一个你想要处理的Tag技术的 ACTION_TECH_DISCOVERED intent. 获取更多信息请参阅 过滤 NFC intents. 一般来说。 当一个NDEF消息不能被映射到MIME类型或者URI上时,Tag发布系统尝试启动一个ACTION_TECH_DISCOVERED intent, 否则如果被扫描到的Tag不包含NDEF数据. 欲了解如何确定的更多信息,请参阅Tag发布系统.
  2. 当你的应用程序接收到该Intent, 从以图中获取Tag对象:
    Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
  3. 通过调用在android.nfc.tech包的类中的一个get factory方法,获取到TagTechnology的一个实例 . 你可以在调用一个get factory方法以前,计算支持Tag技术通过调用getTechList(). 举例来说, 为了从一个Tag得到MifareUltralight的一个实例, 请执行下列操作:
    MifareUltralight.get(intent.getParcelableExtra(NfcAdapter.EXTRA_TAG));

读取和写入Tags


读取和写入NFC tag涉及到从Intent中获取到Tag并创建与tag的连接. 你必须定义你自己的协议来读写数据到Tag. 然后,记住当直接使用Tag时你仍然能够读写NDEF数据. 你想要如何构建东西,它可以实现. 如下的例子演示如何使用一个MIFARE Ultralight tag.

package com.example.android.nfc;

import android.nfc.Tag;
import android.nfc.tech.MifareUltralight;
import android.util.Log;
import java.io.IOException;
import java.nio.charset.Charset;

public class MifareUltralightTagTester {

    private static final String TAG = MifareUltralightTagTester.class.getSimpleName();

    public void writeTag(Tag tag, String tagText) {
        MifareUltralight ultralight = MifareUltralight.get(tag);
        try {
            ultralight.connect();
            ultralight.writePage(4, "abcd".getBytes(Charset.forName("US-ASCII")));
            ultralight.writePage(5, "efgh".getBytes(Charset.forName("US-ASCII")));
            ultralight.writePage(6, "ijkl".getBytes(Charset.forName("US-ASCII")));
            ultralight.writePage(7, "mnop".getBytes(Charset.forName("US-ASCII")));
        } catch (IOException e) {
            Log.e(TAG, "IOException while closing MifareUltralight...", e);
        } finally {
            try {
                ultralight.close();
            } catch (IOException e) {
                Log.e(TAG, "IOException while closing MifareUltralight...", e);
            }
        }
    }

    public String readTag(Tag tag) {
        MifareUltralight mifare = MifareUltralight.get(tag);
        try {
            mifare.connect();
            byte[] payload = mifare.readPages(4);
            return new String(payload, Charset.forName("US-ASCII"));
        } catch (IOException e) {
            Log.e(TAG, "IOException while writing MifareUltralight
            message...", e);
        } finally {
            if (mifare != null) {
               try {
                   mifare.close();
               }
               catch (IOException e) {
                   Log.e(TAG, "Error closing tag...", e);
               }
            }
        }
        return null;
    }
}

使用前端发布系统



前端发布系统允许一个activity拦截一个 intent并且要求由于其他处理同样intent的activities. 使用这个系统涉及到为了Android系统能够发送合适的intents给你的应用程序而构建几个数据结构. 为了使前端发布系统有效:

  1. 在你的activity的 onCreate()方法中添加如下代码:
    1. 创建一个 PendingIntent 对象, 以便系统可以在它被扫描到时,用tag的细节填充它
      PendingIntent pendingIntent = PendingIntent.getActivity(
          this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
    2. 在Intent filters里声明你想要处理的Intent,一个tag被检测到时先检查前台发布系统,如果前台Activity符合Intent filter的要求,那么前台的Activity的将处理此Intent。如果不符合,前台发布系统将Intent转到Intent发布系统。如果指定了null的Intent filters,当任意tag被检测到时,你将收到TAG_DISCOVERED intent。下面的代码片断处理所有NDEF_DISCOVERED的MIME类型. 因此请注意你应该只处理你想要的Intent。
      IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
          try {
              ndef.addDataType("*/*");    /* Handles all MIME based dispatches.
                                             You should specify only the ones that you need. */
          }
          catch (MalformedMimeTypeException e) {
              throw new RuntimeException("fail", e);
          }
         intentFiltersArray = new IntentFilter[] {ndef, };
    3. 设置一个你程序要处理的Tag technologies的列表,调用Object.class.getName() 方法来获得你想要支持处理的technology类。
      techListsArray = new String[][] { new String[] { NfcF.class.getName() } };
  2. 覆盖下面的方法来打开或关闭前台发布系统。比如onPause()和onResume()方法。必须在主线程里调用enableForegroundDispatch(Activity, PendingIntent, IntentFilter[], String[][]) 而且Activity在前台(可以在onResume()里调用来保证这点)。你也要覆盖onNewIntent回调来处理得到的NFC tag数据。
    public void onPause() {
        super.onPause();
        mAdapter.disableForegroundDispatch(this);
    }
    
    public void onResume() {
        super.onResume();
        mAdapter.enableForegroundDispatch(this, pendingIntent, intentFiltersArray, techListsArray);
    }
    
    public void onNewIntent(Intent intent) {
        Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
        //do something with tagFromIntent
    }
从API Demos获取完整的示例演示ForegroundDispatch例子



拜谢原创:http://blog.youkuaiyun.com/zoeice/article/details/9714963

安卓 NFC 功能使用小结 最近整理接手项目代码,其中有用到 NFC 功能,今天抽了个时间了解了一下,简单使用应该不难,高级扩展我就不知道喽,下面小结一番! 知识了解 网上看到一篇博客介绍 NFC 功能的,分了理论篇和实践篇,理论篇就是大致了解一下 NFC 这个功能,我看了觉得有了挺详细的概念,但是他那篇文章写的有点乱,后面看了下官方文档,发现官方文档也不错,而且有中文版,其实也是该先看官方文档: https://developer.android.google.cn/guide/topics/connectivity/nfc 下 阅读详情

相关推荐

Android中的NFC操作

NFC的全称是“Near Field Communication”,意思是近场通信、与邻近的区域通信。

m0_57150356的博客 8107

NFC高级

高级 NFC 本文档介绍了高级的NFC主题,如各种标签技术,NFC标签写入和前台发布,它允许即使当其他应用程序过滤器相同的时候,应用程序在前台处理Intent。 Tag技术支持工作 当使NFC Tag和Android的供电设备生效,使用Tag来读取和写入数据的主要格式是NDEF,当设备扫描NDEF数据的Tag,Android提供支持...

810364804 419

有关NFC的PN532读写命令

1、PN532对mifareA卡扇区的读写 2、NFC的P2P通讯 3、NFC的模拟ISO-14443 A 卡

NFC NCI指令

NCI消息格式: NCI 区分控制消息和数据消息 控制消息: 如下图所示, NCI控制消息分为三种,分别是Command, Response, Notification 数据消息: Packet 格式: 控制 Packet 头格式: MT: 001b :Control Packet - Command Message (命令 , 首字节通常为 20) 010b :Control Packet - Response Message (响应, 首字节通常为...

无限之生 1万+

H.264 入门篇 - 09 (帧间预测 - 参考帧列表)

短期和长期的关系和区别:在一个解码器中的 DPB(参考帧缓存)大小总是有限的,所以引入一个问题,什么样的参考帧会被保存到 DPB 中,什么样的参考帧会被移除出去,因此将分为长期和短期参考帧,所谓短期参考帧是这帧不会长期驻留在DPB中,如果参考帧缓存已满或者有其他特定的条件,那么短期参考帧就会被从DPB中移除;与之相对的长期参考帧,只要没有遇到某个指定的条件,遇到某个IDR帧, 遇到了清空整个DPB的指令等等,那么长期参考帧会长期在DPB中,不会因为有新的参考帧而被冲刷掉;(P帧是按照编码顺序)

StephenZhou 5101

别再手动调参了!用Optuna+PyTorch搞定Transformer时序预测超参数(附完整代码)

本文详细介绍了如何利用Optuna和PyTorch实现Transformer时序预测模型的自动化超参数调优。通过贝叶斯优化技术,显著提升单变量时序预测的效率和准确性,并附有完整代码实现。文章涵盖模型架构设计、数据预处理、Optuna调参实战及生产环境部署建议,为开发者提供一站式解决方案。

weixin_33704234的博客 576

Android NFC开发资料汇总

NFC (近距离无线通信)是一项允许在各种设备(包括手机和电子标签)之间进行近距离无线通信的技术。只需将一个设备放在另一个设备的指定区域,即可实现数据交换。 本文列举了自己搜集的一些好的博文,推荐给大家~,还有是为了自己慢慢消化学习提供方便。 如涉及侵权或者博主大人不喜欢,请告诉我哈,我会在第一时间删除~ 1.android NFC读写卡教程 该博主讲解了Android NFC读写卡,一...

马小橙的专栏 658

Java开发者必看:5分钟搞定PaddleOCR表格识别,导出Excel和HTML超详细教程

本文为Java开发者提供了集成PaddleOCR实现智能表格识别的详细教程,包括环境配置、核心代码实现、结果导出到Excel和HTML的步骤,以及性能优化技巧。通过PaddleOCR技术,开发者可以快速将图片表格转换为结构化数据,大幅提升工作效率。

weixin_30872499的博客 98

NFC

NFC模拟软件可模拟门禁卡https://www.xzymoe.com/android-nfc-simulate/ Android使用NFC模拟M卡实现 (一)https://blog.youkuaiyun.com/guolongpu/article/details/84999457 Android使用NFC模拟M卡实现 (二)https://blog.youkuaiyun.com/guolongpu/arti...

weixin_30305735的博客 454

用Arduino+ESP32复现TDOA定位:低成本实现厘米级精度的完整教程

本文提供了一套利用Arduino和ESP32平台,结合NRF24L01+模块与GPS/PPS时间同步方案,低成本复现高精度TDOA(到达时间差)定位系统的完整教程。教程详细阐述了从硬件选型、天线阵列设计、时间同步实现到核心算法与多径抑制的实战步骤,旨在帮助开发者和硬件爱好者以可控成本实现厘米级精度的定位演示系统。

weixin_29084111的博客 162

S32K3 MCAL配置 【MCU、PORT、DIO】

1、s32k3时钟源可由PLL, FXOSC, FIRC, SIRC, and SXOSC五种时钟源生成,可按照手册推荐配置。目标是在在S32K344板子上点亮红色LED灯,需要配置的有MCU、PORT、DIO模块。MCU最主要的是时钟配置,要翻看芯片手册,理解时钟树。1、通用配置中,没有什么特殊需求按照demo配置就好。1、配置MC_CGM mux 0 clocks时钟。1、外部晶振配置按照实际项目原理图进行配置。1、外部晶振配置,按照实际项目配置。1、PLL时钟按照手册进行配置。

weixin_43741076的博客 3243

学习的网站

物联网世界 http://www.iotworld.com.cn/ NFC 之家    http://www.nfchome.org/ NFC中国     http://nfcchina.org/portal.php Gentoo wiki https://wiki.gentoo.org/wiki/Main_Page Linux Wireless wiki https://wireless...

happygrilclh的博客 277

虚拟机VirtualBox下载与安装、安装Ubuntu超详细图文步骤,对一些配置问题也有所写。

自己使用过两款虚拟机,相较于VMware虚拟机来说,virtuabox虚拟机所占内存更小,只有几十兆,且完全开源不收费,里面的功能与VMware基本差不多(在日常开发、学习使用完全够用)。最主要的是,在博主自己使用VMware时经常出错,而virtualbox就更稳定一些,所以这篇是针对virtualbox的安装与一些细节部分。

l1015649309的博客 4万+

链接知识

1,Fragment 踩过的坑(动画,重叠,降低耦合,转场动画,状态监听) 2,android RecyclerView 使用解析 3,android博客周刊 4,Android开发:Translucent System Bar 的最佳实践 5,Android开发: 最详细的Toolbar开发实践总结 6,Android性能分析工具整理汇总 7,

三石的专栏 588

ubuntu通过qemu安装银河麒麟V10_Arm_v8 (kylin_v10_飞腾/鲲鹏版)

一、windows下安装vmware虚拟机 二、ubuntu下载地址 https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/20.04/ubuntu-20.04.3-live-server-amd64.iso 三、vmware中新建虚拟机,并使用ubuntu-20.04.3-live-server-amd64.iso作为启用盘 。。。在虚拟机中安装ubuntu(略) 四、配置ssh(如果ssh登录不上时配置) 修改openssh的配置 vi /etc/s

u010533742的博客 8704

数据权限设计

随着IT新技术不断完善成熟,企业数字化建设得到全面的发展,数据将成为一个创造财富的重要来源,并且越来越多地被视为一项值得重视的企业资产。未来,很多企业之间的竞争,其实也是资源和数据竞争。那么针对数据资产,如何保障它的安全性呢?数据的权限管理无疑是必不可少的。数据权限从数据源来控制不同的用户能够查看、使用和授权不同的数据表数据(其实就是数据表行列的管控),就如同筑起了一道道护城墙,为数据安全提供了保障。

qq_40664711的博客 1万+

探索NFC技术的宝库:NFC技术资料汇总项目推荐

探索NFC技术的宝库:NFC技术资料汇总项目推荐 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代科技的浪潮中,NFC(近场通信)技术正逐渐成为连接设备、实现便捷交互的关键技术之一。为了帮助广大技术爱好者、开发者以及研究人员深入了解和应用NFC技术,我们推出了“NFC技术资料汇总”项目。该项目提供了一个名为“NFC资料汇总.zip”的资源文件,其中包含了关于NFC...

gitblog_09770的博客 976

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

探索NFC技术的宝库:NFC技术资料汇总

探索NFC技术的宝库:NFC技术资料汇总 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代科技的浪潮中,NFC(近场通信)技术以其便捷、高效的特点,逐渐成为物联网、移动支付、身份识别等领域的核心技术之一。为了帮助广大技术爱好者、开发者以及研究人员更好地理解和应用NFC技术,我们推出了“NFC技术资料汇总”项目。该项目提供了一个名为“NFC资料汇总.zip”的资源文...

gitblog_09768的博客 827

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

探索NFC技术的宝库:NFC资料汇总项目推荐

探索NFC技术的宝库:NFC资料汇总项目推荐 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在当今的智能设备和物联网时代,NFC(近场通信)技术已经成为连接设备、实现数据交换的重要手段。为了帮助广大技术爱好者、开发者以及研究人员更好地理解和应用NFC技术,我们推出了“NFC资料汇总”项目。该项目提供了一个名为“NFC资料汇总.zip”的资源文件,包含了关于NFC技术的...

gitblog_09788的博客 629

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Android NFC详解(高级)

本文介绍了各种高级 NFC 主题,例如如何使用各种标签技术、如何写入 NFC 标签以及如何执行前台调度(借助前台调度,在前台运行的应用即使在其他应用过滤某些 Intent 时也能优先处理这些 Intent)。

三杯五岳 6203

NFC开发 —————在 Android 中如何实现基于 NFC 的高级命令功能(五)

NfcA 是 NFC 技术的一种类型,遵循 ISO 14443 - 3A 标准。它主要用于与支持 NFC - A 的标签或设备进行通信。在 NfcA 中,主要的I/O 操作是通过方法来实现的,应用程序需要在该方法之上构建自己的协议栈,以实现特定的功能。例如,发送自定义的命令数据到 NFC 标签,并接收标签返回的响应数据。通过本文的介绍,我们了解了在 Android 中基于 NfcA 实现高级命令功能的方法。

拉莫帅的博客 2722

Android NFC基础知识汇总,从理论到实践

在res下新建xml,然后新建一个xxx.xml的文件将上方内容copy即可。然后在AndroidManifest.xml中,添加NFC权限:后将要做NFC功能的界面的launchMode设置为singleTop类型,然后添加meta-data内容,如下:

m0_61549953的博客 876

终极NFC标签格式化指南:Xtreme Firmware高级NFC功能详解

Xtreme Firmware是为Flipper Zero设备设计的强大固件,提供了业界领先的NFC标签格式化工具和高级功能。这个开源项目让您的Flipper Zero设备真正释放其NFC潜力,支持多种协议和卡片类型,为用户提供前所未有的灵活性和控制能力。 ## 🚀 为什么选择Xtreme Firmware的NFC功能? Xtreme Firmware的NFC模块不仅仅是简单的读取和写入工具

gitblog_01102的博客 606

高级NFC

文章译自:Advanced NFC  本文档介绍了高级NFC,如与各种标签技术协作,NFC标签写入和前台调度,它允许应用程序在前台处理的intent,即使当其他应用程序过滤器相同的。 标签技术支持工作 当NFC标签和Android工作时,使用读取和写入数据的的主要格式是NDEF标签。当设备扫描标签NDEF数据,Android提供了解析NdefMessage消息和其他可能的支持。当扫描

Carson IT之旅 8177
上一篇: NFC基础汇总
下一篇: 一个程序告诉你continue、return、break的区别,看过你就不会忘记!
android_xiaozhou
博客等级 码龄14年 14粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值