对于Android 4.0 SDK中提供的Beam例子,对于NFC开发来说的确是一个不错的模板。对于了解NFC的NDEF消息处理过程不妨看下面的代码。
public class Beam extends Activity implements CreateNdefMessageCallback,
OnNdefPushCompleteCallback {
NfcAdapter mNfcAdapter;
TextView mInfoText;
private static final int MESSAGE_SENT = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mInfoText = (TextView) findViewById(R.id.textView);
mNfcAdapter = NfcAdapter.getDefaultAdapter(this); //实例化NFC设备
if (mNfcAdapter == null) {
mInfoText = (TextView) findViewById(R.id.textView);
mInfoText.setText("NFC is not available on this device.");
}
mNfcAdapter.setNdefPushMessageCallback(this, this); //注册NDEF回调消息
mNfcAdapter.setOnNdefPushCompleteCallback(this, this);
}
@Override
public NdefMessage createNdefMessage(NfcEvent event) {
Time time = new Time();
time.setToNow();
String text = ("Beam me up!\n\n" +
"Beam Time: " + time.format("%H:%M:%S"));
NdefMessage msg = new NdefMessage(
new NdefRecord[] { createMimeRecord(
"application/com.example.android.beam", text.getBytes())
});
return msg;
}
@Override
public void onNdefPushComplete(NfcEvent arg0) {
// A handler is needed to send messages to the activity when this
// callback occurs, because it happens from a binder thread
mHandler.obtainMessage(MESSAGE_SENT).sendToTarget();
}
private final Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MESSAGE_SENT:
Toast.makeText(getApplicationContext(), "Message sent!", Toast.LENGTH_LONG).show();
break;
}
}
};
@Override
public void onResume() {
super.onResume();
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) {
processIntent(getIntent());
}
}
@Override
public void onNewIntent(Intent intent) {
// onResume gets called after this to handle the intent
setIntent(intent);
}
/**
* Parses the NDEF Message from the intent and prints to the TextView
*/
void processIntent(Intent intent) {
Parcelable[] rawMsgs = intent.getParcelableArrayExtra(
NfcAdapter.EXTRA_NDEF_MESSAGES);
// only one message sent during the beam
NdefMessage msg = (NdefMessage) rawMsgs[0];
// record 0 contains the MIME type, record 1 is the AAR, if present
mInfoText.setText(new String(msg.getRecords()[0].getPayload()));
}
/**
* Creates a custom MIME type encapsulated in an NDEF record
*
* @param mimeType
*/
public NdefRecord createMimeRecord(String mimeType, byte[] payload) {
byte[] mimeBytes = mimeType.getBytes(Charset.forName("US-ASCII"));
NdefRecord mimeRecord = new NdefRecord(
NdefRecord.TNF_MIME_MEDIA, mimeBytes, new byte[0], payload);
return mimeRecord;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// If NFC is not available, we won't be needing this menu
if (mNfcAdapter == null) {
return super.onCreateOptionsMenu(menu);
}
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_settings:
Intent intent = new Intent(Settings.ACTION_NFCSHARING_SETTINGS);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
分享到:
相关推荐
android NFC 开发实例;NFC功能样例代码;NFC通讯实例
android NFC 开发实例;NFC功能样例代码;NFC通讯实例.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
android nfc读写实例,可供初学者参考,本文档非原创,转来的文档,与大家分享
android nfc开发的示例程序,可以根据自己需要自定义裁剪
Android NFC 开发教程 NFC手机推出后,基于NFC的Android开发升温,银行卡、公交卡充值、余额查询等业务不断推出,开发NFC功能的Android程序也成为程序猿们的工作。
android nfc读写实例,亲测可用。可读NFC标签,但公交卡信息无法读取。
android nfc 开发demo
Android NFC开发实战详解
android NFC开发实例,读写NFC卡信息
Android NFC 开发实战详解 一书简介及目录 http://blog.csdn.net/zgzhaobo/article/details/21453941 http://www.cnblogs.com/skyseraph/p/3599172.html
android nfc开发demo。本人在里面写了不少注释,还有经过几天开发,这个demo已经应用公司app。根据这个demo可以写很多版本的简化版。我的csdn博客地址:http://blog.csdn.net/qq_16064871。我在博客中还有nfc开发...
android NFC读写标签实例
[Android NFC开发实战详解]1(请于part2一起解压) 请下载2一起解压,都在我的资源中 请自寻
android 手持机nfc开发示例,能够读取卡片信息、也能写入信息
android nfc开发demo.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
Android NFC 开发实战详解 第4章 http://blog.csdn.net/zgzhaobo/article/details/21453941 http://www.cnblogs.com/skyseraph/p/3599172.html
Android NFC Tag ID 读取
Android NFC 开发介绍 API和官方翻译
主要包括Android NFC 系统层次架构,Code分布结构,code代码架构概括等等。