在 ST25 SDK Zip 文件中,您将找到使用 ST25 SDK 库的基本 Android 应用程序示例(位于 \integration\android\examples\ST25AndroidDemoApp)。
此示例使用名为“TagDiscovery”的类,该类能够识别任何 ST25 标签并实例化正确的对象。就您而言,如果您仅使用 ST25DV64K 标签,您可能会想做一些简单的事情。
这是我给你的建议:
在您的 Android 活动中,我希望您订阅每次粘贴 NFC 标签时都会收到通知(在“ST25AndroidDemoApp”示例中,请查看 onResume() 函数中的enableForegroundDispatch())。
为了确定 Intent 是否对应于“NFC Intent”,我们检查 Intent 的 Action 是否为 ACTION_NDEF_DISCOVERED、ACTION_TECH_DISCOVERED 或 ACTION_TAG_DISCOVERED。
当出现这种情况时,我们就知道这是一个 NFC Intent。然后我们可以调用它来获取 androidTag 的实例:
Tag androidTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
该对象代表Android中当前的NFC标签。
我们现在要实例化一个 ST25DVTag 对象。
import com.st.st25sdk.type5.st25dv.ST25DVTag;
…
AndroidReaderInterface readerInterface = AndroidReaderInterface.newInstance(androidTag);
byte[] uid = androidTag.getId();
uid = Helper.reverseByteArray(uid);
ST25DVTag myST25DVTag = new ST25DVTag(readerInterface, uid);
您现在有一个名为 myST25DVTag 的对象,可用于与标签进行通信!
例如,如果您想使用密码:
byte[] password = new byte[]; // TODO: Fill the password
int passwordNumber = myST25DVTag.getPasswordNumber(area);
myST25DVTag.presentPassword(passwordNumber, password);
NDEFMsg ndefMsg = myST25DVTag.readNdefMessage(area);
在此之前,您需要检查与该区域关联的密码。该标签有 3 个密码,可以自由分配给任何区域。默认情况下没有设置密码,因此您应该设置一个。以下是我对 Area1 使用密码 2 的示例:
int AREA1 = 1;
int passwordChosen = 2;
myST25DVTag.setPasswordNumber(AREA1, passwordChosen);
我建议您从 Google Play 安装“ST25 NFC Tap”Android 应用程序:如果您点击 ST25DV 并进入“区域安全状态”菜单,您将能够看到:区域数量、哪些区域受读取和/或写入密码保护、使用哪个密码……等
如果您有兴趣,可以在这里找到该应用程序的源代码:https://www.st.com/en/embedded-software/stsw-st25001.html https://www.st.com/en/embedded-software/stsw-st25001.html
如果有不清楚的地方请告诉我。
免责声明:我是 ST25 SDK 开发团队的成员。