android beam 第三方 aar,NFC通讯之Beam方式

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

任务通讯基本都有三个部分组成:基础条件设置、发送、接收。

基础条件设置

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

发送信息:

触发发送

当安装有应用的手机靠近另外一台NFC设备时,发送数据的回调函数将会被调用,应用则会发送出自己的数据:

具体方法为实现CreateNdefMessageCallback接口的createNdefMessage,在此方法内返回一个自定义的NdefMessage对象.

发送结果通知

当数据发送完成后,发送数据完成的回调函数将会被调用,应用在此回调函数内完成一些提示进度方面的操作:

具体方法为实现OnNdefPushCompleteCallback接口的onNdefPushComplete函数.在此函数内写业务操作

接收信息

首先声明

//指定可以接收NFC消息

android:name="android.nfc.action.NDEF_DISCOVERED"/>

///指定对应程序包

然后定义消息接收函数

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等

消息类型:和 里面配置的

相同

占位符:空字节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()));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值