Android Ndef Message解析
@concept:NDEF NFC Form论坛定义的NFC数据交换通用数据格式。

如上所示:一条NDEF消息由诸多Record记录组成,Record又由Header和Payload组成,Header定义了Payload的ID 长度与ID,携带数据的格式与格式长度,携带的数据的字节数。
Header的具体结构如下图:


第一个字节是状态字节(1byte=8bit),用于指定Record有无ID,该Record是首记录还是尾记录,是长记录还是短记录,以及关键的Record的类型。
Record的类型可以有一下8种,Type指定的是载荷Payload的类型。

常见的Payload类型有:Text、URI、MIME类型,TNF_WELL_KNOWN类型的Record类型,有以下几种Payload类型。

本文重点关注RTD_TEXT类型的解析,Payload类型为RTD_TEXT的Payload结构如下。

第一个字节(1byte)是状态标志位,位定如下:

这个状态字节0-5位定义了语言码的长度,最高位MSB定义文本的编码格式。注意语言码和文本编码是两个概念,前面定义了语言码长度,紧接着Payload第二个字节开始就定义了对应长度的语言码字节。语言码之后的字节就是文本的字节(实际的内容),文本的编码方式就是MSB位定义的编码格式。
相关解析代码如下所示:0200是八级制对应十六进制0x80,最后解析出来的字符串放在payloadStr字符变量中。
大致流程为:取Record状态字节,根据文本编码方式以及语言码长度取出语言码,根据文本的编码方式将文本内容对应的字节按照相应编码格式转换为字符串。

Android Ndef Message解析的更多相关文章
- Android 基于Message的进程间通信 Messenger完全解析
一.概述 说到Android进程间通信,大家肯定能想到的是编写aidl文件,然后通过aapt生成的类方便的完成服务端,以及客户端代码的编写.如果你对这个过程不熟悉,可以查看Android aidl B ...
- Android 手机卫士--解析json与消息机制发送不同类型消息
本文地址:http://www.cnblogs.com/wuyudong/p/5900800.html,转载请注明源地址. 1.解析json数据 解析json的代码很简单 JSONObject jso ...
- Android IntentService完全解析 当Service遇到Handler
一 概述 大家都清楚,在Android的开发中,凡是遇到耗时的操作尽可能的会交给Service去做,比如我们上传多张图,上传的过程用户可能将应用置于后台,然后干别的去了,我们的Activity就很可能 ...
- Android HandlerThread 完全解析
HandlerThread本质上是一个线程类,它继承了Thread: HandlerThread有自己的内部Looper对象,可以进行looper循环: 通过获取HandlerThread的loope ...
- Android源码解析——Toast
简介 Toast是一种向用户快速展示少量信息的视图.当它显示时,它会浮在整个应用层的上面,并且不会获取到焦点.它的设计思想是能够向用户展示些信息,但又能尽量不显得唐突.本篇我们来研读一下Toast的源 ...
- 《Android源代码设计模式解析》读书笔记——Android中你应该知道的设计模式
断断续续的,<Android源代码设计模式解析>也看了一遍.书中提到了非常多的设计模式.可是有部分在开发中见到的几率非常小,所以掌握不了也没有太大影响. 我认为这本书的最大价值有两点,一个 ...
- 【Android开发精要笔记】Android组件模型解析
Android组件模型解析 Android中的Mashup 将应用切分成不同类别的组件,通过统一的定位模型和接口标准将他们整合在一起,来共同完成某项任务.在Android的Mashup模式下,每个组件 ...
- Android IntentService全然解析 当Service遇到Handler
转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/47143563: 本文出自:[张鸿洋的博客] 一 概述 大家都清楚.在Andro ...
- Android的Message Pool是什么——源码角度分析
原文地址: http://blog.csdn.net/xplee0576/article/details/46875555 Android中,我们在线程之间通信传递通常采用Android的消息机制,而 ...
随机推荐
- 014_zk路径过滤分析
一.线上zk访问延迟特别高需要统计一段时间内的zk写入路径top10,实现如下: #!/usr/bin/env python # -*- coding:utf-8 -*- import re,trac ...
- 玩玩LED点阵屏(arduino nano)
做些记录,特别是led显示左移效果的代码,二进制位的特效函数 unsigned ][]= { 0xff,0xd7,0x83,0xd6,0xc6,0xd4,0xc6,0x82,0xd6,0xba,0xf ...
- Python之shutil模块(复制移动文件)
用python实现将某代码文件复制/移动到指定路径下.场景例如:mv ./xxx/git/project1/test.sh ./xxx/tmp/tmp/1/test.sh (相对路径./xxx/tmp ...
- 基于Python玩转人工智能最火框架 TensorFlow应用实践
慕K网-299元-基于Python玩转人工智能最火框架 TensorFlow应用实践 需要联系我,QQ:1844912514
- element vue 表格编辑
https://xuliangzhan.github.io/vue-element-extends/#/editable/click1
- Linux下MySql的登陆和管理操作
一.mysql数据库启停1.linux下启动mysql的命令: mysqladmin start/ect/init.d/mysql start (前面为mysql的安装路径)2.linux下重启 ...
- 告别回调,拥抱async await
之前使用jquery中ajax,请求的结果需要写在回调函数里面,后面接触到了axios/fetch,使用了es6中Promise进行封装,这种链式结构调用,看起来比之前直观,可是还是没有解决回调的问题 ...
- 【简】题解 AWSL090429 【市场】
因为这有个时间的限制 并且 求的时间都是前缀和 那么 我们可以根据时间将排序 因为题中没有修改可以直接用背包预处理出答案 但是因为题目ci mi<=1e9 vi<=300 所以发现不 ...
- python第十天
函数 1.函数:完成特定功能的代码块,作为一个整体,对其进行特定的命名,该名字就代表函数 在现实中,很多问题要通过一些工具进行处理==>可以将工具提前生产出来,并命名==>通过名字就可以找 ...
- TODO springboot学习笔记
学习中,是在是搞不懂是什么狗屎....