在Android

时间:2016-04-20 07:35:34

标签: android nfc

我正在开发一个应用程序,我必须从ITSO智能卡读取信息。它支持以下三种技术,用于过滤ACTION_TECH_DISCOVERED。 android.nfc.tech.IsoDep, android.nfc.tech.NfcA android.nfc.tech.NdefFormatable 现在当我使用下面的代码

byte[] apduCmd = {
                0x00, //CLA
                (byte)0xA4, //INS select
                0x00, //P1
                0x00, //P2
                0x02 //LE
        };
     Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
IsoDep isoDep = IsoDep.get(tag);                
                    try {
                        isoDep.connect();                    
                       byte[] result = isoDep.transceive(apduCmd);
                        Log.i(TAG, "SELECT: " + bytesToHex(result));
                        if (!(result[0] == (byte) 0x90 && result[1] == (byte) 0x00)) {
                            Toast.makeText(this, "Exception occurred!", Toast.LENGTH_SHORT).show();
                        }else{                        
                            Toast.makeText(this, "Read successfully!", Toast.LENGTH_SHORT).show();
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

上面的代码给出了成功字节,即9000 现在我不知道下一步该做什么?如何从此ITSO卡读取完整的数据/信息。 (这张卡是公交车票的类型)。 有什么建议吗?

感谢迈克尔,我已阅读文档ITSO specification,并想知道创建命令以从卡中读取数据。 我按以下顺序执行命令。

1) SELECT DIRECTORY- 906A000000
2) SELECT APPLICATION- 905A0000031602A000
3) READ DATA- 90BD0000070400000000000000 (File number- 4)
4) ADDITIONAL FRAME- 90AF000000 (This will execute only if we have Additional frame in response.)

我得到的回复如下所示(如果文件编号为4,则低于响应)

Response: 230A00009469FA0798004600002698400100000000000000000000000000000000042C00C0001CDC131089EB4A583BC000000000000000000000000000000000

现在我不确定如何从中获取信息? 我可以用XML或JSON一次获取所有信息吗?有没有更简单的方法可以做到这一点?

2016年10月5日更新 我在HEX String中获取了shell信息,你能帮我解码一下它的文本信息。 (参考上面给出的ITSO规范。

0 个答案:

没有答案