NFC在Android中的应用

什么是NFC?Google一大坨,百度一大坨,我就不讲了,这里我只讨论技术细节。

首先我们先讨论一下这样的一个问题,当我们把NFC标签靠近手机,并且手机感应后,我们通过什么方式能得到NFC标签信息呢?答案就是通过Intent的方式来获取。现在的需求是我想在启动一个Activity后通过读NFC的方式得到里面的信息。下面我来介绍具体做法。

通过分析需求得知,我们需要前台调度系统机制,这种机制允许Activity拦截Intent对象。

1.获取NfcAdapter
nfcAdapter= NfcAdapter.getDefaultAdapter(this);

2.构造PendingInent对象封装NFC标签信息
mPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);

3.声明Intent对象的过滤器
IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED); try { ndef.addDataType("*/*"); } catch (IntentFilter.MalformedMimeTypeException e) { throw new RuntimeException("fail", e); }
4建立一个处理NFC标签技术的数组

    mTechLists = new String[][]{new String[]{NfcF.class.getName()}};

5.这是最核心最重要的一步了,我们需要在Activity的onResume方法中调用nfcadapter的enableForegroundDispatch方法把上面的变量作为参数传递进来,
nfcAdapter.enableForegroundDispatch(this, mPendingIntent, mFilters,mTechLists);
一旦NFC标签接触到手机,这个方法就会被激活。

6.最后我们需要在onNewIntent方法中处理Intent回调给我们的信息。
Parcelable[] rawArray = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); NdefMessage mNdefMsg = (NdefMessage) rawArray[0];//得到NdefMessage NdefRecord mNdefRecord = mNdefMsg.getRecords()[0];//得到NdefRecord

以上我只是讨论了基本步骤,第二篇我会详细介绍技术细节

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容