gpt4 book ai didi

android - 如何读取 NFC 标签?

转载 作者:行者123 更新时间:2023-11-29 14:53:16 24 4
gpt4 key购买 nike

您好,我正在尝试读取 NFC 标签。但我遇到了一个异常(exception)。

我已经把这个条件用来检测标签了吗?

if(NfcAdapter.ACTION_TAG_DISCOVERED != null)

这个条件是否正确?

最佳答案

首先,您必须初始化 NFC 适配器并在 onCreate 回调中定义 Pending Intent:

NfcAdapter mAdapter;
PendingIntent mPendingIntent;
mAdapter = NfcAdapter.getDefaultAdapter(this);

if (mAdapter == null) {
//nfc not support your device.
return;
}
mPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this,
getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);

在 onResume() 回调中启用前台调度以检测 NFC Intent 。

mAdapter.enableForegroundDispatch(this, mPendingIntent, null, null);

在 onPause() 回调中,您必须禁用前台调度:

if (mAdapter != null) {
mAdapter.disableForegroundDispatch(this);
}

在 onNewIntent() 回调方法中,您将获得新的 Nfc Intent。得到 Intent 后,你必须解析 Intent 来检测卡片:

@Override
protected void onNewIntent(Intent intent) {
getTagInfo(intent)
}

private void getTagInfo(Intent intent) {
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);

String[] techList = tag.getTechList();
for (int i = 0; i<techList.length; i++) {
if (techList[i].equals(MifareClassic.class.getName())) {

MifareClassic mifareClassicTag = MifareClassic.get(tag);
switch (mifareClassicTag.getType()) {
case MifareClassic.TYPE_CLASSIC:
//Type Clssic
break;
case MifareClassic.TYPE_PLUS:
//Type Plus
break;
case MifareClassic.TYPE_PRO:
//Type Pro
break;
}
} else if (techList[i].equals(MifareUltralight.class.getName())) {
//For Mifare Ultralight
MifareUltralight mifareUlTag = MifareUltralight.get(tag);
switch (mifareUlTag.getType()) {
case MifareUltralight.TYPE_ULTRALIGHT:
break;
case MifareUltralight.TYPE_ULTRALIGHT_C:

break;
}
} else if (techList[i].equals(IsoDep.class.getName())) {
// info[1] = "IsoDep";
IsoDep isoDepTag = IsoDep.get(tag);

} else if (techList[i].equals(Ndef.class.getName())) {
Ndef.get(tag);

} else if (techList[i].equals(NdefFormatable.class.getName())) {

NdefFormatable ndefFormatableTag = NdefFormatable.get(tag);

}
}
}

完整的完整代码是 here .

关于android - 如何读取 NFC 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12313596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com