美文网首页
Android-NFC基础

Android-NFC基础

作者: aiyoLZH | 来源:发表于2016-10-08 17:20 被阅读0次

弄懂一个东西,必须知根知底,需知其然,知其所以然。

字面理解

       NFC全称:Near Field Communication(近距离无线通讯技术)。因此它的使用条件仅限于近场感应,终端与标签感应距离超出限制将会导致无法使用。

应用场所

       现在的公交卡信息读取、充值,SmartTag等都是对NFC的应用。目前在Android开发都是用手机去感应NFCTag,显示NFCTag承载的信息或者写入新的内容,当然有的只是获取NFCTag中的ID。

前提条件

              硬件支持:Android手机硬件支持(一般NFC开关在设置里面)

               权限申请:<uses-permissionandroid:name="android.permission.NFC"/>

                                  <uses-feature android:name="android.hardware.nfc"

                                                          android:required="true"/>

开始

Android手机感应后,系统会发出标签调度系统,一般有三种Intent对象,由高到低为:

ACTION_NDEF_DISCOVERED(启动包含NDEF负载和已知类型的标签的Action类)

ACTION_TECH_DISCOVERED(已知类型的标签的Action类,没有包含NDEF)

ACTION_TAB_DISCOVERED

截图1

过程处理

       在APP配置文件中对应的Activity筛选对应的Aciton。比如笔者的应用

截图2

      其中非常关键的一个文件:android:resource="@xml/nfc_tech_filter"。这里面配置了NFCTagActivity响应的Tech-List。此配置错误的话Activity将不做任何响应。

截图3:/res/xml/nfc_tech_fiter.xml

       再不知道的自己的NFCTag标签类型情况下,开发者可以用这个全类型弊端是你的APP会响应其他NFCTag,怎么避免这个问题呢?我们可以在开发中测试出自己的NFCTag具体是什么标签类型,先把全类型标签应用到你的APP中,然后Intent获取,打印自己的TechList,最后修改自己的xml,只响应自己的标签类型。代码如下:

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

String[ ] techList=tag.getTechList();

for(String tech:techList) {

Log.d("Tech",tech);

}

NFCTagActivity部分代码;

截图4

问题总结

1.为什么选择用ACTION_TECH_DISCOVERED?

       应用更广泛,感应的NFC功能齐全,足以适应当前市场上的NFCTag,且NDEF只能用于NDEF文本格式标签。反编译支付宝,微信能发现用的都是ACTION_TECH_DISCOVERED。

2.如何做到只能让自己应用感应识别自己的标签?

        因为很多应用用的都是全类型标签文配置,在Android手机感应NFCTag后,Android系统会弹出选择框让用户选择哪个应用来响应此标签,所以在后台运行时我们无法做到这点,只有应用运行在前台时,我们才能做到只让本应用感应,代码如下:

截图5

3.如何在代码中提示用户,手机不支持NFC功能或者NFC未打开?

截图5

相关文章

  • Android-NFC基础

    弄懂一个东西,必须知根知底,需知其然,知其所以然。 字面理解 NFC全称:Near Field Commun...

  • Android-NFC

    本篇博客是为了解决以下的问题: NFC是什么 NFC的原理 NFC工作模式和实用场景 NFC相比于蓝牙的优势 An...

  • 机械设备安装技术

    设备基础种类及应用 垫层基础允许产生沉降:大型储罐 浅基础扩展基础联合基础:轧机独立基础 深基础桩基础:适用于需要...

  • 基础,基础,基础

    如果有人现在问我,JAVA该怎么学,我会告诉他不要急于求成,少看视频,多练,多思考。但说到这里有人可能会反...

  • 【Android】知识点汇总,坚持原创ing

    Android基础 Java基础 Java基础——Java内存模型和垃圾回收机制 语法基础 语法基础——C语法基础...

  • Java 基础

    Java 基础01Java开发入门 Java 基础02Java编程基础 Java 基础03面向对象 Java 基础...

  • 零基础学画画从入门到放弃

    零基础应该怎么学画画?零基础那就从基础开始学啊!基础是什么?造型基础和色彩基础。 造型基础就是用点线面组成起码能让...

  • 面试题汇总

    1.Java基础面试问题 Java基础之基础问题 Java基础之面向对象 Java基础之数据结构 Java基础之I...

  • 基础基础还是基础

    这次去面试,还是被基础给打趴下了。 对于PHP7的新特性没有了解。 对于TP的新特性没有了解。 再一个就是独立完成...

  • 零基础学UI设计需要美术基础吗?

    零基础学UI设计需要美术基础吗?零基础学UI设计需要美术基础吗?零基础学UI设计需要美术基础吗?零基础学UI设计需...

网友评论

      本文标题:Android-NFC基础

      本文链接:https://www.haomeiwen.com/subject/flguyttx.html