设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

Android4.4中的近场通讯(NFC)

2014-6-17 11:42| 发布者: joejoe0332| 查看: 8008| 评论: 0|原作者: chris|来自: 伯乐在线

摘要:   在 Android4.4之前,NFC支付过程需要通过借助设备上一个专有的安全部件(Secure Element,可以存在SIM卡中),使用本地存储的方式,关联设备本身的某种支付方式。这样的话其它的APP就很难通过NFC进行支付操作, ...

  在 Android4.4之前,NFC支付过程需要通过借助设备上一个专有的安全部件(Secure Element,可以存在SIM卡中),使用本地存储的方式,关联设备本身的某种支付方式。这样的话其它的APP就很难通过NFC进行支付操作,因为这个 过程是依靠部分硬件的,也就是Secure Element,现在的问题就是像Sprint通信公司或者Verizon通信公司的这个载体部件,应该让APP可以使用这个硬件功能。


  基于主机的卡仿真技术


  基于主机的卡仿真(HCE)是Android4.4的一项新技术,可以让app绕过Secure Element,然后使用云端支付信息或者其它方式存储的支付信息来模拟一个NFC卡。有了HCE,任何APP都可以模拟一个NFC卡,而且任意一台 Android设备可以当做NFC读写器。


  检测HCE功能就需要看看 FEATURE_NFC_HOST_CARD_EMULATION


1
2
PackageManager pm = context.getPackageManager();
boolean hasNfcHce = pm.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION);


  需要在AndroidManifest.xml中声明应用程序需要使用HCE功能:


1
2
<uses-permission android:name="android.permission.NFC" />
<uses-feature android:name="android.hardware.nfc.hce" ... />


  HCE需要实现为一个服务(service),Android中的服务可以运行在后台,启动后不用和用户进行交互。此服务可以让NFC在使用时不需要用户首先打开APP。在Android4.4中新增了HostApduService,继承它然后创建一个服务来处理近场通讯:


1
2
3
4
5
6
7
public class NfcHceService extends HostApduService {
    @Override
    public byte[] processCommandApdu(byte[] apdu, Bundle extras) { … }
  
    @Override
    public void onDeactivated(int reason) { … }
}


  这个NfcHceService需要覆盖两个方法:processCommandApdu()和onDeactivated()。 APDU(Application Protocol Data Unit)是NFC读写器发送给NfcHceService的数据单元,然后processCommandApdu()方法回送一个响应APDU。在 NFC读写器和另外一个HCE服务通信或者设备不在NFC读写器的范围内时,onDeactivated()方法会被调用。


  注意还要在AndroidManifest.xml中声明服务:


1
2
3
4
5
6
7
8
9
<service android:name=".NfcHceService"
    android:exported="true"
    android:permission="android.permission.BIND_NFC_SERVICE">
    <intent-filter>
        <action android:name="android.nfc.cardemulation.HOST_APDU_SERVICE" />
    </intent-filter>
    <meta-data android:name="android.nfc.cardemulation.host_apdu_service"
        android:resource="@xml/hceService" />
</service>


  这个hceService.xml资源文件在meta-data标签里声明,告诉Android系统到哪里去寻找Application的ID组。



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部