搜题
问题   更新时间2023/10/31 15:31:00

2

其余还有一些技术细节方面:NFC相较于RFID技术,具有距离近、带宽高、能耗低等一些特点。详细内容:1.NFC只是限于13.56MHz的频段!而RFID的频段有低频(125KHz到135KHz),高频(13.56MHz)和超高频(860MHz到960MHz之间。2.工作有效距离:NFC(小于10cm,所以具有很高的安全性),RFID距离从几米到几十米都有!持NFC,而RFID标准较多,统一较为复杂,只能在特殊行业有特殊需求下,采用相应的技术标准!3.因为同样工作于13.56MHz,NFC与现有非接触智能卡技术兼容,所以很多的厂商和相关团体都支领域内发挥着巨大的作用。4.应用:RFID更多的被应用在生产、物流、跟踪、资产管理上,而NFC则在门禁、公交、手机支付等转自:http://www.cnblogs.com/zouhao/archive/2013/04/17/3025542.html基于NFC的识别和通信可分为三个步骤:1、Android通过设备上NFC的相关硬件和驱动,发现周边的NFC设备或标志,并读取出其中包含的消息和数据;2、Android会发出请求事件,调用适合的界面组件来处理NFC消息。3、在寻找到合适的界面组件后,Android会构造并调用该界面组件,但它与NFC标志进行通信。声明Android Manifest.xml 的元素:在你能访问一个设备的NFC 硬件和正确的处理 NFC 的 Intent 之前,需要在AndroidManifest.xml 中先声明下面的项1、允许元素来访问 NFC 硬件:2、最小SDK 版本需要设置正确,API level 9 只包含有限的 tag 支持 , 包括:. 通过ACTION_TAG_DISCOVERED来发布Tag 信息. 只有通过EXTRA_NDEF_MESSAGES扩展来访问 NDEF 消息. 其他的 tag 属性和 I/O 操作都不支持所以你可能想要用 API level 10 来实现对 tag 的广泛的读写支持。 3、 uses-feature 元素定义:你的程序可以再android 市场里显示有 NFC 硬件。4、NFC intent-filter 告诉android 系统你的 activity 能处理 NFC 数据,可以定义1 个或多个 intent filter :上边 3 个 intent filters 有优先级,NDEF_DISCOVERED的优先级最高,TAG_DISCOVERED的优先级最低。Tag 发布系统:当android 设备扫描到一个 NFC tag ,通用的行为是自动找最合适的 Activity 会处理这个 tag Intent 而不需要用户来选择哪个Activity 来处理。因为设备扫描NFC tags 是在很短的范围和时间,如果让用户选择的话,那就有可能需要移动设备,这样将会打断这个扫描过程。你应该开发你只处理需要处理的tags 的 Activity ,以防止让用户选择使用哪个 Activity来处理的情况。Android 提供两个系统来帮助你正确的识别一个NFC tag 是否是你的 Activity 想要处理的:Intent 发布系统和前台Activity 发布系统。Intent 发布系统检查所有 Activities 的 intent filters ,找出那些定义了可以处理此tag 的 Activity ,如果有多个 Activity 都配置了处理同一个tag Intent ,那么将使用 Activity 选择器来让用户选择使用哪个 Activity 。用户选择之后,将使用选择的 Activity 来处理此Intent 。前台发布系统允许一个 Activity 覆盖掉Intent 发布系统而首先处理此tag Intent ,这要求你将要处理 Tag Intent 的 Activity 运行在前台,这样当一个 NFC tag 被扫描到,系统先检测前台的 Activity 是否支持处理此Intent ,如果支持,即将此Intent 传给此Activity,如果不支持,则转到 Intent 发布系统。NFC数据交换格式:NdefMessage 是交换NFC数据最常用的方式,当然,你仍然可以定义你自己的non-NDEF 数据。NfcAdapter 用来监测设备对NFC的支持。前台调度系统允许一个活动拦截一个意图并允许这个活动比其他处理相同意图的活动拥有更高的优先级。因此,在实际开发中,开发者需要尽可能精确地配置Intent-Filter,避免捕获无法处理的NFC事件而影响用户体验;或者采取热拔插Intent-Filter的策略,将用户选择处理组件的流程放在识别之前,从而实现精准选择NFC处理组件。相关示例如下: // 构造待触发的IntentPendingIntent pendingIntent = PendingIntent.getActivity(this,0,new Intent(this,getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP),0);//构造Intent-Filter 来处理NFC消息IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);ndef.addDataType("text/plain");intentFilterArray = new IntentFilter[]{ndef};techListsArray = new String[][]{ new String[] { NfcF.class.getNane()}};......// 当界面组件位于前台时,监听相关NFC事件@Overridepublic void onResume() {super.onResume(); //NfcAdapter.getDefaultAdapter(this).enableForegroundDispatch(this,pendingIntent,intentFiltersArray,techListsArray);NfcAdapter.getDefaultAdapter(this).enableForegroundDispatch(this, mNdefMessage);}// 当界面组件位于后台状态时,停止监听@Overridepublic void onPause() {super.onPause();NfcAdapter.getDefaultAdapter(this).disableForegroundDispatch(this);}最后,在寻找到合适的界面组件后,Android会构造并调用该界面组件,但它与NFC标志进行通信。组件与NFC标志交换的数据是通过android.nfc.NdefMessage对象来封装的。每一个NdefMessage中,包含了1个或多个android.nfc.NdefRecord对象。NdefRecord是表示NDEF格式数据的基本单元,它包含类型信息、唯一的标志信息以及需要传输的数据。界面组件可以从NFC标志中读取或写入NdefMessage对象
王老师:19139051760(拨打)