连接到android应用程序中的NFC标签
我正在尝试为may Nexus S编写一个android应用程序,它可以在NFC标签上写一条简单的文本记录。我的问题是NFC标签的连接建立。 我已经实现了两个名为“TagWriter”和“TagWriterStartPage”的活动 以下是“TagWriter”-活动:连接到android应用程序中的NFC标签,android,tags,connection,nfc,Android,Tags,Connection,Nfc,我正在尝试为may Nexus S编写一个android应用程序,它可以在NFC标签上写一条简单的文本记录。我的问题是NFC标签的连接建立。 我已经实现了两个名为“TagWriter”和“TagWriterStartPage”的活动 以下是“TagWriter”-活动: package nfc.example.writer; import java.util.Locale; import com.google.common.base.Charsets; import com.google.c
package nfc.example.writer;
import java.util.Locale;
import com.google.common.base.Charsets;
import com.google.common.primitives.Bytes;
import android.app.Activity;
import android.content.Intent;
import android.nfc.NdefMessage;
import android.nfc.NdefRecord;
import android.nfc.NfcAdapter;
import android.nfc.Tag;
import android.nfc.tech.Ndef;
import android.nfc.tech.NdefFormatable;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class TagWriter extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.tagwriter);
Intent intent = this.getIntent();
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
writeTag(tag);
}
private void writeTag(Tag t)
{
Ndef tag = Ndef.get(t);
Locale locale = Locale.US;
final byte[] langBytes = locale.getLanguage().getBytes(Charsets.US_ASCII);
String text = "Tag, you're it!";
final byte[] textBytes = text.getBytes(Charsets.UTF_8);
final int utfBit = 0;
final char status = (char) (utfBit + langBytes.length);
final byte[] data = Bytes.concat(new byte[] {(byte) status}, langBytes, textBytes);
NdefRecord record = new NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_TEXT, new byte[0], data);
try
{
NdefRecord[] records = {record};
NdefMessage message = new NdefMessage(records);
tag.connect();
boolean connected = tag.isConnected();
boolean writeable = tag.isWritable();
if( connected && writeable)
{
tag.writeNdefMessage(message);
}
tag.close();
}
catch (Exception e)
{
//do error handling
}
}
}
当我将设备放在NFC标签上时,会调用活动“TagWriter”。每次调用方法“tag.connect()”时,都会发生异常
谁能帮我解决这个问题
谢谢,
丹尼斯这可能更有效:
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
Ndef ndef = Ndef.get(tag);
if (ndef != null) {
ndef.connect();
ndef.writeNdefMessage(message);
} else {
NdefFormatable format = NdefFormatable.get(tag);
if (format != null) {
format.connect();
format.format(message);
}
}
需要其他检查才能真正使用(容量、可写性等),但这只是空穴来风