美文网首页
NFC通讯之Beam方式

NFC通讯之Beam方式

作者: yaotion | 来源:发表于2020-08-06 15:52 被阅读0次

临时接到要求,开发一个基于Android智能手表的NFC应用。立刻在网上狂搜索了一番。了解到NFC通讯有 三种方式:读标签、当做标签、互相通讯。根据已有的要求和条件确认为第三种通讯方式。
任务通讯基本都有三个部分组成:基础条件设置、发送、接收。

基础条件设置

无外乎一些权限的申请、一些参数的指定

发送信息:

触发发送

当安装有应用的手机靠近另外一台NFC设备时,发送数据的回调函数将会被调用,应用则会发送出自己的数据:
具体方法为实现CreateNdefMessageCallback接口的createNdefMessage,在此方法内返回一个自定义的NdefMessage对象.

发送结果通知

当数据发送完成后,发送数据完成的回调函数将会被调用,应用在此回调函数内完成一些提示进度方面的操作:
具体方法为实现OnNdefPushCompleteCallback接口的onNdefPushComplete函数.在此函数内写业务操作

接收信息

首先声明

<intent-filter>
//指定可以接收NFC消息
      <action 
android:name="android.nfc.action.NDEF_DISCOVERED"/>
      <category android:name="android.intent.category.DEFAULT"/>
///指定对应程序包
      <data android:mimeType="application/vnd.com.example.android.beam"/>
    </intent-filter>

然后定义消息接收函数

override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        ...
        if (NfcAdapter.ACTION_NDEF_DISCOVERED == intent.action) {           
                // Process the messages array.
                //从消息里获取tag
               val tag: Tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG)                
                ...
            }
        }
    }

信息结构

发送数据组装

new NdefMessage(new NdefRecord[]{})
一次发送一个消息(NdefMessage),
一个消息包含若干个记录(NdefRecord),
一个记录包含四部分:类型枚举,消息类型,占位,消息内容
类型枚举:NF_MIME_MEDIA等
消息类型:和 <intent-filter></intent-filter>里面配置的
<data android:mimeType="application/vnd.com.example.android.beam"/>
相同

占位符:空字节byte[0]
消息内容:二进制数据

接收数据拆解

Parcelable[] rawMsgs = intent
                .getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
        // only one message sent during the beam
        NdefMessage msg = (NdefMessage) rawMsgs[0];
        // record 0 contains the MIME type, record 1 is the AAR, if present
        mInfoText.setText(new String(msg.getRecords()[0].getPayload()));

参考文章
https://developer.android.google.cn/guide/topics/connectivity/nfc?hl=zh-cn
https://developer.android.google.cn/reference/android/nfc/package-summary?hl=zh-cn

相关文章

网友评论

      本文标题:NFC通讯之Beam方式

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