NFC读取卡号学习
来源:互联网 发布:淘宝女装店推荐高品质 编辑:程序博客网 时间:2024/05/21 22:35
马克.
1.权限,读卡权限
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.NFC"/>
<uses-feature android:name="android.hardware.nfc" />
懒得找大概这些把,网络上大把大把的.
和类申明
<activity
android:name="com.cpu.charge.MainActivity"
android:configChanges="keyboardHidden|orientation"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:windowBackground="@null"
android:windowSoftInputMode="adjustUnspecified|stateAlwaysHidden" >
<intent-filter>
<action android:name="android.nfc.action.TECH_DISCOVERED" />
<action android:name="android.nfc.action.TAG_DISCOVERED" />
</intent-filter>
<meta-data
android:name="android.nfc.action.TECH_DISCOVERED"
android:resource="@xml/nfc_tech_filter" />
</activity>
2.卡类型,需要在res文件目录下创建xml文件夹,并创建一个xml文件,定义你想要响应的卡片类型.
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<tech-list>
<tech>android.nfc.tech.IsoDep</tech>
<tech>android.nfc.tech.NfcA</tech>
<tech>android.nfc.tech.NfcB</tech>
<tech>android.nfc.tech.NfcF</tech>
<tech>android.nfc.tech.NfcV</tech>
<tech>android.nfc.tech.Ndef</tech>
<tech>android.nfc.tech.NdefFormatable</tech>
<tech>android.nfc.tech.MifareClassic</tech>
<tech>android.nfc.tech.MifareUltralight</tech>
</tech-list>
</resources>
3.写你的读卡的类:其中,重写protected void onNewIntent(Intent intent) 方法.
然后使用Parcelable parcelable = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
Tag tag = (Tag) parcelable;
IsoDep isodep = IsoDep.get(tag);
iso_tag = new Iso7816.Tag(isodep);
iso_tag.connect();
获取响应的tag
再然后写好查询的语句....不同的卡规格不一样,你要得到卡的结构类型然后再去写语句
byte[] SELECT_FILE2 = { (byte) 0x00, (byte) 0xA4,
(byte) 0x00, (byte) 0x00, (byte) 0x02, (byte) 0x3F, (byte) 0x00 };// select
// 根目录MF
byte[] SELECT_FILE_DR2 = { (byte) 0x00, (byte) 0xA4,
(byte) 0x00, (byte) 0x00, (byte) 0x02, (byte) 0xDF, (byte) 0x04 };// select
// DF
byte[] SELECT_FILE3 = { (byte) 0x00, (byte) 0xA4,
(byte) 0x00, (byte) 0x00, (byte) 0x02, (byte) 0x15, (byte) 0x1E};// select
//公共基本数据文件
byte[] SELECT_FILE_INFO2 = { (byte) 0x00, (byte) 0xB0,
(byte) 0x95, (byte) 0x0A, (byte) 0x00};// select
// info
byte[] SELECT_FILE_INFO3 = { (byte) 0x00, (byte) 0xB0,
(byte) 0x96, (byte) 0x16, (byte) 0x00};// select
然后了就用你的到的tag去获取你想要的东西
Response result_info2 = tag.executeCmd(SELECT_FILE_INFO3);// 查询info
if (result_info.isOkey()) {//判断一下获得是否正确
然后解析就好了 返回的东西和你想要的肯定有差别后面就是截取数据了
final String cardInfo2 = result_info2.toString();
String cardNumber = cardInfo2.substring(30, 64);
String cardNum = "";
for (int i = 0; i < cardNumber.length()/2; i++) {
String str = cardNumber.substring(2*i,2*(i+1));
cardNum = cardNum+str.substring(1,2);
}
好了卡号获取到了
暂时还没有写入的需求....也就懒得看了....读取的差不多就这些步骤,马克一下.
- NFC读取卡号学习
- NFC 读取公交卡信息
- NFC读取卡号转换程RFID设备IC读卡器读取的卡号
- BlackBerry读取NFC卡的Serial Number
- Android读取NFC卡的编号
- APDU指令学习:如何读取NFC手机钱包的余额
- 学习NFC
- NFC 学习
- BB10 读取NFC tag
- Android:NFC读取校园卡
- NFC读取数据
- android NFC读取UID
- android 读取NFC序列号
- 某NFC读取身份证
- NFC读取sim卡之建立卡连接
- Android NFC开发实例:学生卡数据读取
- Android NFC开发实例:学生卡数据读取
- nfc读取ic卡如何使用前台发布系统
- List的4种迭代方法
- spark模拟密集型计算任务
- Spring:创建Bean的几种方式
- 二十分钟学会Javascript初级语法
- bitmap转换与处理相关工具类,Bitmap与DrawAble与byte[]与InputStream之间的转换
- NFC读取卡号学习
- orr r0,r0,#R1_nF:OR:R1_iA
- 体育竞技游戏的团队AI
- 定时器
- webpack系列译文(1)
- Java的异常处理的方式
- string类函数
- 玩转AppBarLayout,更酷炫的顶部栏
- 正则表达式--start end