【问题标题】:connection to a NFC-tag in an android app连接到 Android 应用程序中的 NFC 标签
【发布时间】:2011-05-24 13:36:52
【问题描述】:

我正在尝试为可能的 Nexus S 编写一个能够在 NFC-Tag 上编写简单文本记录的 android 应用程序。我的问题是与 NFC 标签的连接建立。 我已经实现了两个名为“TagWriter”和“TagWriterStartPage”的活动。

这里是“TagWriter”活动:

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()”方法都会出现异常。

谁能帮我解决这个问题???

谢谢, 丹尼斯

【问题讨论】:

    标签: android tags connection nfc


    【解决方案1】:

    这可能会更好:

    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);
      }           
    }
    

    需要其他检查以供实际使用(容量、可写等) - 但那是最基本的......

    【讨论】:

      猜你喜欢
      • 2016-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      • 1970-01-01
      • 2013-11-15
      相关资源
      最近更新 更多