Android NFC 标签分发系统小析

要弄清tag dispatch system,首先需要了解一下。几个关键类之间的关系。

NfcService NativeNfcManager NfcDispatcher


NfcService 实现了接口类DeviceHostListener

public class NfcService extends Application implements DeviceHostListener

并且在onCreate函数中构造NativeNfcManager对象的时候,将自己作为参数传递下去。

mDeviceHost = new NativeNfcManager(this, this);

NativeNfcManager的构造函数如下。

 public NativeNfcManager(Context context, DeviceHostListener listener) {

        mListener = listener;
        initializeNativeStructure();
        mContext = context;
    }

到这里NativeNfcManager和NfcService就被关联到一起。将来jni就可以和NfcService通信了。



当手机检测到新的tag.会通过jni接口调用NativeNfcManager.notifyNdefMessageListeners

用来通知NFCservice检测到了新的tag.

private void notifyNdefMessageListeners(NativeNfcTag tag) {

        mListener.onRemoteEndpointDiscovered(tag);

    }


这里实际上调用的就是NfcService的onRemoteEndpointDiscovered

    @Override
    public void onRemoteEndpointDiscovered(TagEndpoint tag) {
        sendMessage(NfcService.MSG_NDEF_TAG, tag);
    }


这里的Message会被NfcServiceHandler接受并处理

case MSG_NDEF_TAG:

......

dispatchTagEndpoint(tag);


在函数dispatchTagEndpoint中会调用到NfcDispatcher.dispatchTag

mNfcDispatcher.dispatchTag(tag)

在接口dispatchTag中就实现了如下图所示的分发逻辑。优先级顺序为NDEF_DISCOVERED, TECH_DISCOVERED, TAG_DISCOVERED



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值