×
Namespaces

Variants
Actions
Revision as of 07:57, 23 July 2013 by hamishwillee (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Contactless Communication API(JSR-257)介绍

From Nokia Developer Wiki
Jump to: navigation, search
WP Metro Icon Chinese.png
Article Metadata

代码示例
文章
max.chen 在 14 Aug 2011 创建
最后由 hamishwillee 在 23 Jul 2013 编辑

Contents

介绍

近场通信(Near Field Communication,NFC),又称近距离无线通信,是一种短距离的高频无线通信技术,允许电子设备之间进行非接触式点对点数据传输(在十厘米内)交换数据。这个技术由免接触式射频识别(RFID)演变而来,并向下兼容RFID,最早由Philips、Nokia和Sony主推,主要可能用于手机等手持设备中。由于近场通讯具有天然的安全性,因此,NFC技术被认为在手机支付等领域具有很大的应用前景。

为了推动 NFC 的发展和普及,飞利浦、索尼和诺基亚创建了一个非赢利性的行业协会——NFC 论坛,促进 NFC 技术的实施和标准化,确保设备和服务之间协同合作。目前,NFC 论坛在全球拥有 70 多个成员,包括:万事达卡国际组织、松下电子工业有限公司、 微软公司、摩托罗拉公司、NEC 公司、瑞萨科技公司、三星公司、德州仪器制造公司和 Visa 国际组织。

目前诺基亚的Symbian^3手机C7已经集成了NFC芯片。

开发环境

进行C7上的NFC开发需要下载以下SDK:

进行Series 40上的NFC开发可以选择以下SDK之一进行开发:

以上的SDK全都支持Eclipse和Netbeans。

JSR-257概述

JSR-257中的类和接口分布在五个包中:

  • javax.microedition.contactless提供用于发现标签和一些其他要的基本类。
  • javax.microedition.contactless.ndef包括通过NDEF格式的数据进行通信的类和接口。
  • javax.microedition.contactless.rf提供通过不支持NDEF数据格式RFID标签进行通信的方式。
  • javax.microedition.contactless.sc是通过其他智能卡进行通信。
  • javax.microedition.contactless.visual提供读取和生成二维码的功能。

搜索标签

利用javax.microedition.contactless中的方法,可以非常方便的搜索到标签,并在targetDetected()方法中处理发现标签后的逻辑。

import java.io.IOException; 
import javax.microedition.contactless.*;
import javax.microedition.contactless.ndef.*;
import javax.microedition.io.Connector;
/**
* Example class of how to discover targets using
* JSR 257 Contactless Communication API
*/

public class CCAPIExample implements TargetListener {
private DiscoveryManager dm;
public CCAPIExample() {
registerTargetToDiscovery();
}
public void registerTargetToDiscovery() {
// Check that NDEF_TAG target is supported
TargetType[] targets = DiscoveryManager.getSupportedTargetTypes();
boolean supported = false;
for (int i=0; i<targets.length; i++) {
if (targets[i].equals(TargetType.NDEF_TAG)) {
supported = true;
}
}
if (supported) {
// Get DiscoveryManager instance and
// set TargetListener for NDEF_TAG target
dm = DiscoveryManager.getInstance();
try {
dm.addTargetListener(this, TargetType.NDEF_TAG);
}
catch (ContactlessException ce) {
// handle exception
}
}
}
public void targetDetected(TargetProperties[] prop) {
// handle notification
}
}


读取标签

如果需要读取NDEF格式的数据,就需要javax.microedition.contactless.ndef包的功能。

import java.io.IOException; 
import javax.microedition.contactless.*;
import javax.microedition.contactless.ndef.*;
import javax.microedition.io.Connector;
/**
* Example class of how to read data from NDEF_TAG target
* using JSR 257 Contactless Communication API
*/

public class CCAPIExample implements TargetListener {
private NDEFTagConnection conn = null;
public CCAPIExample() {
registerTargetToDiscovery();
}
public void registerTargetToDiscovery() {
// do the target discovery registration
}
public void targetDetected(TargetProperties[] prop) {
// Select first found target
TargetProperties target = prop[0];
// check that target type is NDEF_TAG
TargetType[] types = target.getTargetTypes();
for (int i=0; i<types.length; i++) {
if (types[i].equals(TargetType.NDEF_TAG)) {
try {
// Get URL to open the connection
String url = target.getUrl();
// Open NDEFTagConnection to the target
conn = (NDEFTagConnection)Connector.open(url);
// Read data from the target
NDEFMessage message = conn.readNDEF();
NDEFRecord[] records = message.getRecords();
for (int j=0; j<records.length; j++) {
// Handle data
}
}
catch (IOException ioe) {
// Handle exception
}
catch (ContactlessException ce) {
// Handle exception
}
}
else {
i++;
}
}
}
 
}

代码示例

This page was last modified on 23 July 2013, at 07:57.
237 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×