如何以原始格式查看NFC标签对象



我在Android API的NFC基础指南中了解了Tag对象。然后,我将这个enter-link描述here项目添加到我的Eclipse环境中,并可以在Samsung Note上运行它。我现在想查看在代码中创建的Tag对象。我已经标记了添加到现有代码中的代码。我不确定做得是否正确。我是否可以看到代码中Tag对象的内部内容?我确实尝试添加了一个断点,并查看了变量中的内容,但没有看到一个名为标记的变量。以下是来源代码:

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate");
setContentView(R.layout.main);
// initialize NFC
nfcAdapter = NfcAdapter.getDefaultAdapter(this);
nfcPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, this.getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
// Register Android Beam callback
nfcAdapter.setNdefPushMessageCallback(this, this);
// Register callback to listen for message-sent success
nfcAdapter.setOnNdefPushCompleteCallback(this, this);
/***********************************
* I added this portion of the code myself to view the tag object
***************************/
Intent intent = new Intent(NfcAdapter.ACTION_TAG_DISCOVERED);
intent.putExtra(NfcAdapter.EXTRA_TAG, "");
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
//************************************************************
if(getIntent().hasExtra(NfcAdapter.EXTRA_TAG)) {
TextView textView = (TextView) findViewById(R.id.title);
//textView.setText("Hello NFC tag from home screen!");
textView.setTag(tag);
};
printTagId(getIntent());
}

Tag对象是一个句柄,它指向Android NFC服务与正确的标签进行通信。除了检测到标签支持什么通信技术和标签ID(在通信协议的枚举或防冲突阶段使用)之外,它不包含太多关于标签的信息。您可以使用getTechList()方法(对于支持的通信技术)和getId()方法(对于标签的标识符)来获取该信息。

除此之外,Tag对象本身不包含任何关于标签的结构或内容的信息。因此,在Tag对象中没有可"查看"的内容。事实上,它甚至比这更复杂:

非接触式令牌可以是纯存储卡(它提供某些读写数据的命令),也可以是处理器智能卡(它包含可以通过智能卡命令接口的应用程序)。根据目前(由NFC论坛)标准化的NFC标签,有四种不同的标签类型。它们在通信协议和内存布局方面有所不同。其中一个甚至可以基于处理器智能卡。除了那些标准化的标签类型之外,还存在几种NFC兼容的标签类型,它们在存储器布局和通信协议方面也有所不同。

因此,如果你想检索标签的结构和数据,你需要实现该标签的特定通信协议(有时你甚至需要知道确切的内存布局)。

然而,有一个例外:存在一个用于NFC标签的抽象层:NDEF(NFC数据交换格式)。当前的NFC设备通常针对至少四种标准化标签类型来实现该抽象层。如果支持您的标记(您可以通过浏览标记技术列表或简单地尝试使用Ndef.get(tag)获取实例来找到它),则可以使用Tag对象的Ndef实例的方法来获取标记的NDEF内容。

Btw。各种Android UI元素的CCD_ 9/CCD_。因此,将标签句柄与它们一起存储并没有多大意义。

最新更新