Android NFC 读取 ISO15693 RFID 标签

2023-11-24

我正在尝试使用 nfc android 库读取 ISO15693 RFID 标签:

以下是有关标签的更多信息:http://img42.com/gw07d+

标签 ID 已正确读取,但标签中的数据未正确读取。

onCreate Method:

// initialize NFC
    nfcAdapter = NfcAdapter.getDefaultAdapter(this);
    nfcPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this,   this.getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);

onNewIntent method:

if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction()) || NfcAdapter.ACTION_TECH_DISCOVERED.equals(intent.getAction())) {

        currentTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
        byte[] id = currentTag.getId();
        Tag_data_TextDisplay.setText("TagId:" + Common.getHexString(id));

        for (String tech : currentTag.getTechList()) {

            if (tech.equals(NfcV.class.getName())) {
                NfcV nfcvTag = NfcV.get(currentTag);

                try {
                    nfcvTag.connect();
                    txtType.setText("Hello NFC!");
                } catch (IOException e) {
                    Toast.makeText(getApplicationContext(), "Could not open a connection!", Toast.LENGTH_SHORT).show();
                    return;
                }

                try {
                    byte[] cmd = new byte[]{
                            (byte) 0x00, // Flags
                            (byte) 0x23, // Command: Read multiple blocks
                            (byte) 0x00, // First block (offset)
                            (byte) 0x04  // Number of blocks
                    };
                    byte[] userdata = nfcvTag.transceive(cmd);

                    userdata = Arrays.copyOfRange(userdata, 0, 32);
                    txtWrite.setText("DATA:" + Common.getHexString(userdata));

                } catch (IOException e) {
                    Toast.makeText(getApplicationContext(), "An error occurred while reading!", Toast.LENGTH_SHORT).show();
                    return;
                }
            }
        }
    }

userdata包含一个带有值的字节0x02 ({ 0x02 })在收发方法完成后。


所以你收到的值为{ 0x02 }来自transceive方法。正如发现的这个线程当您使用未寻址的命令时可能会发生这种情况。因此,您应该始终通过发送寻址命令NfcV(因为 Android 设备上的所有 NFC 芯片组似乎都支持此功能)。在您的情况下,您可以使用类似的方法来生成已寻址的 READ MULTIPLE BLOCKS 命令:

int offset = 0;  // offset of first block to read
int blocks = 1;  // number of blocks to read
byte[] cmd = new byte[]{
        (byte)0x60,                  // flags: addressed (= UID field present)
        (byte)0x23,                  // command: READ MULTIPLE BLOCKS
        (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,  // placeholder for tag UID
        (byte)(offset & 0x0ff),      // first block number
        (byte)((blocks - 1) & 0x0ff) // number of blocks (-1 as 0x00 means one block)
};
System.arraycopy(id, 0, cmd, 2, 8);
byte[] response = nfcvTag.transceive(cmd);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android NFC 读取 ISO15693 RFID 标签 的相关文章

  • 在S3客户端android中制作私有图像的ImageGallery

    我正在尝试在 Android 应用程序中创建 S3 Bucket 的 imageGallery 我的图像是私人的 所以我不会为每个图像提供任何特定的链接 对于此类私人图像 亚马逊有一个链接生成器 s3Client generatePresi
  • 使用 Cordova 加载应用程序时如何配置状态栏颜色?

    我用 Cordova 创建了一个应用程序 我想改进 UI UX 使其看起来尽可能像本机应用程序 当应用程序第一次加载时 状态栏 和背景 的前几毫秒 实际上不到 1 秒 没有我配置的颜色Cordova 状态栏插件 https cordova
  • Android应用程序中菜单的共享功能

    我问了很多关于我的标题的问题 但到目前为止我还没有得到正确的答案 我需要在我的应用程序中实现androd的菜单功能 即当我们进入Android手机中的画廊时 当我们按菜单时 它会提供很多选项像分享 等 我的问题是我可以在我的应用程序中实现相
  • 在Android中的TextView下方绘制下划线

    我想在我的下面画下划线TextView 我搜索了一些内容 但找不到任何有成果的内容 有人可以帮我吗 在 TextView 中添加文本下方有三种方法 跨度字符串 http developer android com reference and
  • 检索特定联系人的组

    我想检索联系方式及其所属的组 我得到了列出手机中所有联系人组的代码 Cursor groupC getContentResolver query ContactsContract Groups CONTENT URI null null n
  • 类 X 不是抽象的,并且没有实现 android.os.Parcelable 中定义的 fun writeToParcel()

    在我的 Android 应用程序中 我想添加一个 Bundle 其中包括Place下面描述我的意图的对象 由于 Serialized 速度慢且不推荐 所以我更喜欢 Parcelable 虽然我使用 Kotlin 1 3 31 但在分割某些数
  • Android应用程序是否动态更改其目标API级别

    我有一个针对 Android API 级别 30 Android 11 的 Xamarin Forms 应用程序 其中安装了 Xamarin Twilio AudioSwitch v1 1 3 该应用程序可在 Play 商店中使用 并且在
  • 调用了 BroadcastReceiver 但未调用 PhoneStateListener

    在调试下面的代码时 BroadcastReceiverCustom 正在被 已调用 但 PhoneStateListenerCustom 未调用 现在我只在 BroadcastReceiverCustom 中执行所需的操作 但可能不是最好的
  • 我的应用程序重新启动后房间数据丢失

    我的应用程序中有一个 Room 的简单实现 它有两个实体 应用程序运行时它工作正常 但应用程序重新启动后我看不到任何数据 这是我的数据库创建代码 Database entities Person class College class ve
  • Recycler查看可见项目的数量

    我正在我的应用程序中创建一个水平 RecyclerView 它必须一次在屏幕上显示 2 个图像 因此每个图像的宽度必须为屏幕的 50 目前它工作正常 但每个项目都会占用屏幕的所有宽度 这是我的代码 mRecyclerView Recycle
  • 如何检查 API 级别 23 下的权限? [复制]

    这个问题在这里已经有答案了 我的一个应用程序有权限RECORD AUDIO和我的应用程序targetSdkVersion是 22 我无法在运行时检查权限 但我注意到如果我在 Android 6 0 及更高版本中安装我的应用程序 用户可以在系
  • android,如何重命名文件?

    在我的应用程序中 我需要录制视频 在开始录制之前 我为其指定名称和目录 录制完成后 用户可以重命名其文件 我写了以下代码 但似乎不起作用 当用户输入文件名并单击按钮时 我将执行以下操作 private void setFileName St
  • 在没有 SurfaceView 的 Android 上获取 GPU 信息

    在Android上 有没有一种方法可以在不创建SurfaceView的情况下获取GPU信息 我不想使用 OpenGL 绘制任何内容 但我只需要获取硬件信息 例如供应商 OpenGL ES 版本 可用扩展等 抱歉 我不知道如何在 Androi
  • 使android listview布局可滚动

    我有一个 xml 文件 其布局为 ASCII 形式 ImageView TextView List
  • Android 导航组件,如何知道结果是否设置为 onViewCreated

    在一个片段中我setFragmentResultListener并等待结果 setFragmentResultListener EnableFingerPrintFragment ARG REQUEST KEY bundle gt bund
  • 返回 RxJava 的 Completable 的方法的命名约定

    我有一个带有视图类的 Android 应用程序 Fragment Activity 观察其ViewModel The ViewModel公开方法 例如getUserName返回Observable
  • 膨胀类 android.support.v7.internal.widget.NativeActionModeAwareLayout 时出错

    如果您以前解决过这个问题 请有人帮助我 我正在尝试使用材料设计制作一些东西 以便应用程序可以运行到 API 10 的低版本 我的代码中没有任何错误 但我不断收到此错误 Android 日志猫 06 01 05 05 37 414 E And
  • android Analytics v4 最简化

    我正在尝试以最简单的方式将谷歌分析连接到我的应用程序 我想实现analytics v4 因为google说他们很快就会强制升级到它 所以我不想做两次同样的工作 在这种情况下 谷歌的教程不是很有效 合并他们在那里所说的内容和我在互联网上找到的
  • 使用 OnContextItemSelected 从 ListView 项目中检索文本

    我有一个带有 经典 上下文菜单的 ListView 其中包含删除和类似选项 由于我要从 SharedPreferences 对象中删除 因此我需要检索键 即设置到 ListView 项目中的文本 我尝试过以下代码 Override publ
  • 在 Android 应用程序中启动应用程序时仅显示一次版本信息

    我想显示一个带有 确定 按钮的简单信息对话框 介绍此版本中的新增内容 但它应该仅在第一次启动时显示 实施这个的最好方法是什么 我会 并且已经 使用带有布尔值或 int 值的 SharedPreferences 只需检查最后一个版本是否比当前

随机推荐

  • 解开嵌入式资源的困惑

    编辑 阅读 Tim Schmelter 的答案 1 然后使用此问题作为如何嵌入资源并在运行时访问它们的示例 嵌入式资源的主题经常出现 尤其是当人们询问如何在运行时访问嵌入式文件时 事情变得更加混乱 因为 Visual Studio 为您提供
  • 在 C++ 中打开并显示图像?

    基本上我正在自学 C 程序功能的一部分是打开和关闭指定的图像 我该怎么做呢 或者我会使用什么资源 Thanks 在 C 中 无需任何额外的库 您可以打开图像 但除了一堆二进制数据之外 不会有什么特别有用的东西 那么你必须使用你自己的解码器
  • 分散数组中的重复项

    来源 谷歌面试问题 编写一个例程以确保输入中的相同元素在输出中最大程度地分布 基本上 我们需要放置相同的元素 以这样的方式TOTAL传播是尽可能最大的 Example Input 1 1 2 3 2 3 Possible Output 1
  • Linq 列表中的部分匹配?

    我有一个需要在表中匹配的部分字符串列表 我正在使用谓词构建器 var predicate PredicateBuilder False
  • Mac 上的 RStudio Python 版本更改

    我的问题是 如何将 python 版本更改为 anaconda 3 5 并可以在 RStudio 中使用 anaconda 中安装的模块 我正在使用 RStudio 版本 0 99 891R版本3 2 3 2015 12 10 平台 x86
  • 保存文件时出现权限错误(沙箱)

    我正在尝试将文件保存到沙盒应用程序 OS X 中的路径 但到目前为止 几乎每次尝试保存时都会遇到错误 错误是 Error saving Error Domain NSCocoaErrorDomain Code 513 You don t h
  • 为 iOS Metal 中 MTLBuffer 使用的数据分配内存

    作为后续问题这个答案 我正在尝试用 Metal 中的内核函数替换 CPU 上运行的 for 循环 以并行化计算并提高性能 我的函数基本上是一个卷积 由于我反复收到输入数组值的新数据 数据源于AVCaptureSession 似乎使用newB
  • Java Comparator 给出要比较的属性的名称

    我的问题是这样的 我必须订购一个数据表 表的每一行都是一个存储在 List 中的对象 我们称之为 TableObject 每列数据都是该类的一个属性 通常是字符串 当用户单击任何列时 我必须执行典型的数据排序 所以我考虑将 List 更改为
  • gdb如何显示线程名称

    我的应用程序中创建了许多线程 当我执行命令 infothreads 时 一些线程名称在 gdb 中可见 而其他线程名称则不显示 如何获取所有线程名称本身而不是像 0xb7fe1424 这样的十六进制值 4 Thread 0xb68ffb70
  • 在 Open XML SDK 中的单词书签后插入 OpenXmlElement

    我可以使用以下代码访问我的Word文档中的书签 var res from bm in mainPart Document Body Descendants
  • 如何复制 FTP 服务器上的文件?

    如何复制 FTP 服务器上的文件 我的目标是复制ftp www mysite com test jpg to ftp www mysite com testcopy jpg 要重命名文件 我会使用 var request FtpWebReq
  • 导航栏 rightbaritem 图像按钮错误 iOS 11

    这段代码在ios10上运行正常 我得到了我的标签和一个图像按钮 这是用户照片个人资料 圆形 好的 但是当运行 xcode 9 ios11 模拟器时 我发现它被拉伸了 按钮框架必须是 32x32 当检查 sim 并获取视图并告诉 xcode
  • 如何在日期选择器对话框中设置日期限制

    我想对日期进行限制 以便用户不能选择更多的日期 例如 如果今天是 1 月 1 日 那么用户不应选择超过 7 个日期 我的意思是他不能选择 1 月 9 日 我还希望他不要选择月份和年份 所以我限制他在一周内完成任务 到目前为止我所做的是显示日
  • 为什么 NodeJS KeepAlive 似乎没有按预期工作?

    引自TCP 保活操作方法 为了理解什么是 TCP keepalive 我们将称之为 keepalive 确实如此 您只需读取名称即可 keep TCP 活 这意味着您将能够检查已连接的套接字 也称为TCP套接字 并判断连接是否是 仍在运行或
  • 使用 Express 从 NodeJS 服务器下载文件

    如何将服务器中的文件下载到访问 NodeJS 服务器中页面的计算机 我正在使用 ExpressJS 并且我一直在尝试这个 app get download function req res var file fs readFileSync
  • 如何从 android 调用 ksoap web 服务?

    我有一个小困惑 在我们的移动应用程序中 有一个从 ios 调用的 ksoap Web 服务 如下所示 并正确获取数据 在下面的Web服务中 您可以从以下代码中看到 有一些参数需要传递给Web服务 void callwebservice NS
  • 在用户不点击通知的情况下处理数据负载?

    在后台时 应用程序会接收通知托盘中的通知负载 并且仅在用户点击通知时处理数据负载 有没有办法在用户不点击通知的情况下处理数据有效负载 基于 FCM 文档处理消息 App state Notification Data Both Foregr
  • document.getElementById 是否返回实时 dom 元素?

    Does document getElementByIdJavaScript 返回一个实时 DOM 元素 出于性能原因我有兴趣知道 标准和 实时 之间的区别通常用于lists的元素 document getElementById返回对 DO
  • 尝试读取数组上的属性“名称”(查看:C:\xampp\htdocs\Testing\resources\views\product.blade.php)

    我是 Laravel 的初学者 当我将统计表放入 Blade 中时 我收到此警告 尝试读取数组上的属性 名称 查看 C xampp htdocs Testing resources views product blade php 这是控制器
  • Android NFC 读取 ISO15693 RFID 标签

    我正在尝试使用 nfc android 库读取 ISO15693 RFID 标签 以下是有关标签的更多信息 http img42 com gw07d 标签 ID 已正确读取 但标签中的数据未正确读取 onCreate Method init