使用安卓手机的NFC功能进行数据读取操作

记录一下使用安卓手机的NFC功能来识别各类高频RFID标签或卡片的基本操作思路。因为我的项目中还存在有大量的业务逻辑代码,所以只能整理出当中的一些重要步骤,并贴上代码片段。

1、第一步:在AndroidManifest.xml配置文件里增加以下权限

 

<uses-permission android:name="android.permission.NFC"/>
<uses-feature android:name="android.hardware.nfc" android:required="true"/>
<uses-sdk android:minSdkVersion="10"/>


需要注意的是,在sdk的版本是9的时候,仅仅只支持对ACTION_TAG_DISCOVERED操作。为了能够支持其它的数据类型操作,请把sdk版本保持在10以上。

 

2、第二步:在AndroidManifest.xml配置文件中增加对intent-filter的支持

 

<intent-filter>
    <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <data android:mimeType="text/plain"/>
</intent-filter>


配置了intent-filter支持的activity,当用户使用手机感应到NFC卡片的话,就会自动呼出该activit。

 

如果你的NFC卡片中的数据是纯文本,那么在mimeType属性中使用“text/plain”即可。另一种常见的使用场景是卡片中写有网址,在这种情况下,mimeType可以使用“http”或"https",这样配置的mimeType支持手机直接唤起默认浏览器,如下代码片段:

 

<intent-filter>
    <action android:name="android.nfc.action.NDEF_DISCOVERED" />

    <category android:name="android.intent.category.DEFAULT" />

    <!-- 以下是常规的识别NFC芯片的配置 -->
    <!-- <data android:mimeType="text/plain"/> -->

    <!-- 以下是用来识别写入了网址的NFC芯片的配置,这两项是Android 4.X原生系统自带浏览器的配置 -->
    <data android:scheme="http" />
    <data android:scheme="https" />
</intent-filter>

 

除了这些基本配置之外,还可以增加对各种不同的协议标准的支持。以下是一个相对完整的intent-filter配置:

 

<activity
    android:name=".NfcScannerActivity"
    android:label=""
    android:screenOrientation="portrait"
    android:theme="@style/AppTheme">

    <!-- 定义NDEF类型的NFC -->
    <intent-filter>
        <action android:name="android.nfc.action.NDEF_DISCOVERED" />

        <category android:name="android.intent.category.DEFAULT" />

        <!-- 以下是常规的识别NFC芯片的配置 -->
        <!-- <data android:mimeType="text/plain"/> -->

        <!-- 以下是用来识别写入了网址的NFC芯片的配置,这两项是Android 4.X原生系统自带浏览器的配置 -->
        <data android:scheme="http" />
        <data android:scheme="https" />
    </intent-filter>

    <!-- 定义TECH类型的NFC -->
    <intent-filter>
        <action android:name="android.nfc.action.TECH_DISCOVERED" />
    </intent-filter>

    <!-- TECH类型的NFC的扩展定义,位于xml/nfc_tech_filter.xml中 -->
    <meta-data
        android:name="android.nfc.action.TECH_DISCOVERED"
        android:resource="@xml/nfc_tech_filter" />

    <!-- 定义tag类型的NFC -->
    <intent-filter>
        <action android:name="android.nfc.action.TAG_DISCOVERED" />
    </intent-filter>
</activity>

注意在这段配置中,有一段配置引用了xml/nfc_tech_filter.xml文件:

 

 

<!-- TECH类型的NFC的扩展定义,位于xml/nfc_tech_filter.xml中 -->
<meta-data
    android:name="android.nfc.action.TECH_DISCOVERED"
    android:resource="@xml/nfc
  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值