转 : Squareup刷卡器,音频读卡识别android/iOS源码API

转  :   Squareup刷卡器,音频读卡识别android/iOS源码API



相信很多人已经见过squareup的读卡器了,银行磁卡在该读卡器上一刷,则能从手机中获取银行卡磁道的信息。

SquareUp读卡器在iphone上的应用

SquareUp读卡器在iPhone上的应用

我最近开发了一个适应手机非常广阔的读卡器API,刷卡时,能读取出二磁道信息(利用squareup读卡器,中国大陆大部分模仿者采用的读卡器原理与此相同,就像一个磁带机的磁头,成本低廉),并且能给出所有反馈细节。

该API源码包括了许多滤波器与数字信号处理知识,如果单独从头写,对于程序员来说,不免还是有点太耽误时间了,对于一个人来说,要做到这些,少说也得半个月。我开发这个API,其实从第一版本到大量测试结束后,差不多也用了两个多月,主要的工作量都来自于优化算法以及磁卡识别率。

再来说说API的功能,主要是反馈信息,例如,刷卡过快,刷卡过慢,刷卡不正,读卡器插入,读卡器拔出等等。该API适应手机范围基本囊括了支持以下标准的所有山寨机和品牌手机。

标准:

手机支持耳机音频麦克风输入,带宽大于50Hz-15kHz。

手机系统Android版本大于2.2,api支持2.2~4.0所有版本

下面是一段使用api的代码实例:

01 /**
02  * CardReaderBaseActivity 是一个api提供的activity简单封装
03  * 我们可以从这个类派生一个Acitivity,也可以模拟CardReaderBaseActivity写一个属于自己的功能更强大的类
04  * API的所有精华来自另一个被封装到这个类里面的类,@see CardReader
05  */
06 public class CardAPIActivity extends CardReaderBaseActivity {
07  
08     private ImageView img;
09     private TextView txt;
10     /** Called when the activity is first created. */
11     @Override
12     public void onCreate(Bundle savedInstanceState) {
13         super.onCreate(savedInstanceState);
14         setContentView(R.layout.main);
15         img = (ImageView)findViewById(R.id.indicator);
16         txt = (TextView)findViewById(R.id.feedback);
17     }
18  
19     @Override
20     protected void handlePlugIn() {
21         // 读卡器插入
22         img.setImageResource(R.drawable.indicator);
23         txt.setText("");
24     }
25  
26     @Override
27     protected void handlePlugOut() {
28         // 读卡器拔出
29         img.setImageResource(R.drawable.indicator_off);
30         txt.setText("");
31     }
32  
33     @Override
34     protected void handleCardNumber(String CardNumber) {
35         // 当解析完一张磁卡后,返回该卡号
36         super.handleCardNumber(CardNumber); // this will call vibrate
37         // ci is a protected cardinfo variable of CardReaderBaseActivity,包含了第二磁道所有信息
38         txt.setText("卡号:"+CardNumber+"\n第二磁道原始数据:\n"+ci.toString());
39     }
40  
41     @Override
42     protected void handleSwipeFeedBack(String s, ERROR err) {
43         // 错误返回信息,以及错误类型
44         super.handleSwipeFeedBack(s, err); // this will toast a prompt
45         // you can define your own swipe feedback here
46     }
47



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NFCard使用手机NFC读取非接触式IC卡中的信息。 支持ISO7816-4、Felica智能卡,用来读取电子钱包(主要是公交卡)、电子现金(如闪付卡)账户中没有设置读取限制的有效期、脱机余额、交易记录。 已经确认可以读出的卡片有:深圳通(新版)、上海公交卡、香港八达通、北京市政一卡通(新版)、长安通、武汉城市一卡通、银联闪付卡、交通联合卡(含电子现金)、城市一卡通互联互通卡。 NFCard使用手機NFC讀取非接觸式IC卡中的資訊。 支援ISO7816-4、Felica智能卡,用於讀取電子錢包(主要是電子收費卡)、電子現金(如銀聯閃付卡)賬戶中沒有設定讀取限制的有效期、離線餘額、交易記錄。 已經確認可以讀出的卡片有:深圳通(新版)、上海公交卡、香港八達通、北京市政一卡通(新版)、長安通、武漢城市一卡通、銀聯閃付卡、交通聯合卡(包括電子現金)、城市一卡通互聯互通卡。 NFCard can read contactless IC card use NFC hadware. Support ISO7816-4, Felica compliant e-purse/e-cash, It can read account validity, offline balance and transaction logs from these cards if no read restriction. So far we\'ve confirmed the following can be read: Shenzhen Tong (newer version) of Shenzhen, Shanghai Card, Octopus Card of Hongkong, Beijing Municipal Card (newer version), Changan Card of Shaanxi,Xi\'an, Wuhan City Smart Card, Quickpass (China, e-cash), T-Union (China, e-purse & e-cash), City Union (China).
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值