• Android NfcManager 之NFC接入


    NFC:全称是近场通信(Near Field Communication),是一种短距离无线技术

    Android Beam是一个基于近场通信所做的新功能,这个功能可以为其他手机分享你正在使用的功能。 Android升级到4.1后,Android Beam现在可以在两台支持NFC的Android设备间分享照片和视频,还可以与支持NFC的蓝牙设备相连。

    Android NFC同时支持三个主要的操作模式:

    1.设备读/写模式,允许NFC设备的读/写NFC目标设备;

    2.P2P模式,使NFC设备与其他NFC节点交换数据;这种运作模式被使用在Android Beam中;

    3/卡仿真模式,使NFC设备本身作为一个NFC卡。然后模拟NFC卡可以通过一个外部的NFC读写访问,如销售终端NFC点。

    接入流程:

    1.首选NFC依赖硬件,这个就需要权限支持

    <uses-permission android:name="android.permission.NFC"/>

    外获取NFC设备数据需要在<activity/>内添加如下内容

    1. <intent-filter>
    2. <action android:name="android.nfc.action.TECH_DISCOVERED"/>
    3. </intent-filter>
    4. <meta-data
    5. android:name="android.nfc.action.TECH_DISCOVERED"
    6. android:resource="@xml/nfc_tech_filter"/>

    nfc_tech_filter是在res/xml文件下的自定义xml文件:

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <resources>
    3. <tech-list>
    4. <tech>android.nfc.tech.IsoDep</tech>
    5. </tech-list>
    6. <tech-list>
    7. <tech>android.nfc.tech.NfcA</tech>
    8. </tech-list>
    9. </resources>

    2.三种模式的Demo运行

    NFC的数据NfcAdapter来管理的,NfcAdapter有两种途径获取

    NfcManager manager=(NfcManager)getSystemService(Context.NFC_SERVICE);
    NfcAdapter adapter=  manager.getDefaultAdapter();
    

    这是通过NFCmanager获取,

    NfcManger的构造器 也是通过NcfAdapter.getNfcAdapter(Context)获取adapter的实例。

    同理:我们也可以直接获取NfcAdapter,不通过NfcManger来获取。

    NcfAdapter adapter=NfcAdapter.getDefaultAdapter(Context context)

     这个adapter其实也是需要通过NfcManager来获取,直接调用静态方法,针对不熟悉getSystemService来说,可以直接使用封装现成的。

    adapter的内部会有一个:

    static HashMap<Context, NfcAdapter> sNfcAdapters = new HashMap(); //guard by NfcAdapter.class

    ,所以NFC是独立于Activity,因为adapter内部有一个静态变量,会把当前山下文使用的nfcadapter缓存起来。

  • 相关阅读:
    基础 | 并发编程 - [不安全集合 & 写时复制]
    P1-P5_动手学深度学习-pytorch(李沐版,粗浅的笔记)
    Node.js简介
    【SQL server速成之路】——身份验证及建立和管理用户账户
    微服务实战微服务网关Zuul入门与实战
    【利用Selenium+autoIt实现文件上传】
    Unity中Shader的矩阵加减法
    顶级人工智能会议接收率及信息
    IO流{文件和目录 File 字符如何储存在电脑上 字节输入流 字节输出流 read方法读的字节为什么返回int类型}(一)
    【无标题】
  • 原文地址:https://blog.csdn.net/qq36246172/article/details/119185812