展会信息港展会大全

用Android模拟器也可以开发和测试NFC应用
来源:互联网   发布日期:2015-09-28 16:15:08   浏览:1684次  

导读:从Android2.3开始支持NFC。不过NFC应用只能在Android手机(或平板电脑)上测试和开发,而且Android手机还必须有NFC芯 片。而且如果测试NFC传输文件时至少需要两部支...

从Android2.3开始支持NFC。不过NFC应用只能在Android手机(或平板电脑)上测试和开发,而且Android手机还必须有NFC芯 片。而且如果测试NFC传输文件时至少需要两部支持NFC的手机。当然,如果测试读写NFC标签,还需要一些NFC标签或帖子。而且NFC在模拟器上时不 能运行的。所以从这一点来说,NFC开发需要更多的设备,比较麻烦。这也蓝牙、传感器是一样的。都不能在Android模拟器上开发和测试。真不知道 Google为什么不解决这一问题。

不过这种问题也不是不能解决,而且并不复杂。既然模拟器没有提供这样的功能。我们可以将NFC功能模拟出来(实际上,蓝牙、传感器都可以进行模拟,可能很 多读者用过一些传感器模拟软件,NFC模拟和这个类似)。而且要求是与真实的NFC环境无缝对接。也就是说,使用模拟NFC功能开发的Android应用 可以不需要修改一行代码,甚至不需要重新编译,就可以直接用在真实的NFC环境。

那么怎么解决这个问题呢?要想知道如何模拟NFC,需要先从宏观上了解NFC的工作原理。这里用NFC标签作为例子。NFC数据传输和这个类似。当NFC 标签靠近手机时,Android系统中有一个叫Nfc的系统应用(在<Android源代码根目录>/pakcages/apps/Nfc目 录中),该应用会发送一个Activity Action,该Action会调用一个在系统中注册的用于处理NFC请求的窗口(如果没有,就调用Nfc应用中默认的处理窗口)。这里的关键是 Activity Action。既然Nfc应用会发出一个Activity Action,那么用于模拟NFC的程序,也发送一个Activity Action,不就可以共享用于处理NFC请求的窗口(由用户建立的Activity)了吗?只要在发送Activity Action时加一个标志,就可以区分是Activity Action是Nfc系统应用发出的,还是模拟NFC的程序发出的。这样在处理请求的NFC窗口中就可以根据不同的情况进行处理。为了更透明,可以编写一 个Activity类(如NFCActivity),该类根据这两种情况进行处理。又因为不管是哪种情况,都需要提供写入NFC标签的数据,或接收NFC 标签中的数据。所以可以在该NFCActivity中提供一些回调方法,当需要提供或接收数据时,调用这些方法即可。最后需要使用NFC功能时,用户自己 编写的窗口类只需要从NFCActivity类继承,并实现相应的回调方法即可。例如,下面就是一个实现方法,可接收NFC标签的数据,并写入新数据。

复制代码

public class NFCManTestActivity extends NFCActivity

{

private NFCMan mNfcMan;

private EditText nfcTagText;

@Override

protected void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_nfcman_test);

nfcTagText = (EditText) findViewById(R.id.edittext_nfc);

mNfcMan = new NFCMan(this);

}

//当NFC标签靠近手机时调用,data用于接收NFC标签中的数据,

//返回值会重新写到NFC标签中

@Override

public String onNear(NFCData data)

{

//返回要写入NFC标签的文本

return nfcTagText.getText().toString();

}

//将数据成功写入NFC标签后会调用该方法

@Override

public void onNFCSuccess()

{

//显示成功写入数据的提示

Toast.makeText(this, "成功写入数据", Toast.LENGTH_LONG).show();

}

//写入数据失败后调用该方法

@Override

public void onNFCFailed(int error, String errorMsg)

{

//显示写入数据异常的编码和信息

Toast.makeText(this, "error:" + error + "\n" + "msg:" + errorMsg,

Toast.LENGTH_LONG).show();

}

}

复制代码

从NFCManTestActivity类的代码可以看出,共有如下三个回调方法。分别处理读写NFC标签数据,写入成功和写入失败三个事件。

onNear

onNFCSuccess

onNFCFailed

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港