2011-05-24 26 views
0

我正在嘗試編寫一個可以在NFC標籤上編寫簡單文本記錄的可能Nexus S的android應用。我的問題是與NFC標籤的連接建立。 我已經實施了兩個名爲「TagWriter」的活動&「TagWriterStartPage」。連接到Android應用中的NFC標籤

這裏IST的 「TagWriter」 -activity:

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()」時,都會發生異常。

任何人都可以幫助我解決問題嗎?

感謝, 丹尼斯

回答

0

這可能會更好地工作:

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

需要其他檢查,在那裏實際使用(容量,可寫等) - 但這是光禿禿的骨頭..

相關問題