前言:现在工作的主要内容是关于SDK相关方面开发,而现在的公司的业务绝大多数是关于OpenMobileAPI相关。所以工作的内容就是做关于智能卡相关的SDK项目,写下这篇文章是对近一年工作的总结也是一种记录。自己认识的不足与可能存在的错误,权当是学艺不精吧!
OMA是什么?
开放移动联盟 (OMA) 是一个为移动电话行业开发开放标准的标准机构。它不是像国际电联这样正式的政府赞助的标准组织,而是行业利益相关者就产品和服务的通用规范达成一致的论坛。
维基百科关于OMA
simalliance官网
GitHub地址
涉及场景及用途
在Android客户端主要涉及手机、Sim卡,或者其他一些带有SE安全芯片的设备。其主要应用场景是城市公交、地铁、门禁、或者是需要用到身份认证的且对安全级别有一定要求的业务。
现在智能手机上手机自带的一些交通卡方案,通过NFC进行地铁、公交、门禁等使用。其中读取的安全模块有两种,一种是eSE,也就是手机内嵌安全芯片。另外一种就是通过读取卡槽中的SIM卡上内嵌的安全芯片。这些安全芯片有独立内存、计算能力等可以进行Applet安装与个人化等一些列操作。
特别说明
特别需要说明的一点是,在Android P以后,谷歌将此API的实现纳入官方API中。所以在Android P之前需要外部引入org.simalliance.openmobileapi.jar包才能使用相关功能。Android P及以后的版本可以直接从android.se.omapi位置导入相关类。
使用过程
1.获得SEService对象;
//在org.simalliance.openmobileapi.SEService里获取
SEService mSEService = new SEService(Context context, SEServ