ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Android NFC收发()使用NFCF技术(Sony Felica)

2019-06-29 12:10:26  阅读:236  来源: 互联网

标签:android nfc


我正在尝试将我的Android平板电脑连接到使用NFC的设备,并从设备中检索数据.

我试过的

按照nfc_device_detection_1.01.pdf(第4章)中的说明发送命令

transceive() 的android java doc提到了

“应用程序不得将SoD(长度)或EoD(CRC)附加到有效载荷,它将自动计算”

因此我尝试使用和不使用CRC,有和没有数据包数据长度,但文档不清楚我是否应该留空或如果我不应该包括它.

我采取的另一种方法是遵循format_sequence_guidelines_1.1.pdf第2.2章(同步代码后跟请求)中的图表,但结果相同.

问题

我不知道将什么命令(字节)作为参数发送到transceive()方法.**

问题

有没有人:

>举一个NFCF通讯的例子?
>有关于应该使用的协议/命令的更多信息?
>知道NFC标签是否包含命令所需的字节数?

transceive()抛出IO异常“标签丢失”.

我相信这是因为我的命令字节不正确(我使用了一系列不同的命令).

最后的注释(我也厌倦了在一个while循环中放置收发()并且每次关闭并连接通信)

    String action = intent.getAction();

    if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(action)) {

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

        NfcF nfcf = NfcF.get(tag);

        nfcf.connect();

        byte[] command = new byte[] { (byte) 0x00, (byte) 0x00};

        byte[] response =  nfcf.transceive(command);

     }

如果您的答案需要任何其他信息,请发表评论.谢谢.

解决方法:

以下是给定目标设备(标记)IDm,FeliCa命令字节和有效负载时如何发送“原始”命令的示例函数:

byte[] rawCmd(NfcF nfcF, byte[] IDm, byte felicaCmd, byte[] payload) throws IOException {
    final int len = payload != null ? payload.length : 0;

    final byte[] cmd = new byte[10 + len];
    cmd[0] = (byte) (10 + len);
    cmd[1] = felicaCmd;
    System.arraycopy(IDm, 0, cmd, 2, IDm.length);

    if (payload != null) {
        System.arraycopy(payload, 0, cmd, 10, payload.length);
    }

    nfcF.transceive(cmd);
}

标签:android,nfc
来源: https://codeday.me/bug/20190629/1326061.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有