主机卡仿真读卡器模型

时间:2014-01-23 21:36:05

标签: android nfc

从这里阅读HCE开发者指南HCE Developer's Guide似乎可以使用Android手机作为阅读器。我将卡信息放在NFC标签上,然后用手机读取。我想让手机充当读者。你知道这是否可能吗?我创建了一个示例项目,其中包含以下代码行:

import android.nfc.cardemulation.HostApduService;
import android.os.Bundle;


public class MyHostAPDUService extends HostApduService{
@Override
public byte[] processCommandApdu(byte[] apdu, Bundle extras) {
   ...
}
@Override
public void onDeactivated(int reason) {
   ...
}
}

我不知道接下来要去哪里。

1 个答案:

答案 0 :(得分:-1)

我已经将手机用作读卡器,但采用了稍微不同的方法:

使用一个活动作为基础我创建了一个简单的读者应用程序,我在其中发送了一个选择,然后发送了一些后续的APDU到卡

private NfcAdapter mAdapter;
private PendingIntent mPendingIntent;
private String[][] mTechLists;
private IsoDep card;

onCreate(){

...

mAdapter = NfcAdapter.getDefaultAdapter(this);

mPendingIntent = pendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP),0);

mTechLists = new String[][]{new String[]{IsoDep.class.getName()},new String[]{IsoDep.class.getName()}};


...
}

onPause(){
mAdapter.disableForegroundDispatch(this);
}

onResume(){
mAdapter.enableForegroundDispatch(this,mPendingIntent,null,mTechLists);
}

onNewIntent(Intent intent){

Tag theTag = (Tag)intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);

card = IsoDep.get(theTag);

...

card.connect();
...
byte[] response = card.transceive(apduBytes);
}

我没有做太多的工作,因为它只是一个概念证明,但我希望它有用。