2011-09-26 123 views

回答

10

1)所述NFC的Android上的一般描述是here
2)NFCDemo是here
3)非常好信息也here
4)此外,從 「Zigurd Mednieks」 書 「編程Android」 的有一個關於NFC

BR章
斯登

5

我們有兩個選項來讀取NFC卡。

  1. 通過使用

    公共無效readFromTag(意向意圖){

    Ndef ndef = Ndef.get(detectedTag); 
    
    
    try{ 
        ndef.connect(); 
    
        txtType.setText(ndef.getType().toString()); 
        txtSize.setText(String.valueOf(ndef.getMaxSize())); 
        txtWrite.setText(ndef.isWritable() ? "True" : "False"); 
        Parcelable[] messages = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); 
    
        if (messages != null) { 
         NdefMessage[] ndefMessages = new NdefMessage[messages.length]; 
         for (int i = 0; i < messages.length; i++) { 
          ndefMessages[i] = (NdefMessage) messages[i]; 
         } 
        NdefRecord record = ndefMessages[0].getRecords()[0]; 
    
        byte[] payload = record.getPayload(); 
        String text = new String(payload); 
        txtRead.setText(text); 
    
    
        ndef.close(); 
    
    } 
    } 
    catch (Exception e) { 
        Toast.makeText(getApplicationContext(), "Cannot Read From Tag.", Toast.LENGTH_LONG).show(); 
    } 
    

    }

從緩存

Ndef ndef = Ndef.get(tag); 
    if (ndef == null) { 
     // NDEF is not supported by this Tag. 
     return null; 
    } 

    NdefMessage ndefMessage = ndef.getCachedNdefMessage(); 

    if (ndefMessage == null) { 
     mTextView.setText("The tag is empty !"); 
     return null; 
    } 

    NdefRecord[] records = ndefMessage.getRecords(); 
    for (NdefRecord ndefRecord : records) { 
     if (ndefRecord.getTnf() == NdefRecord.TNF_WELL_KNOWN && Arrays.equals(ndefRecord.getType(), NdefRecord.RTD_TEXT)) { 
      try { 
       return readText(ndefRecord); 
      } catch (UnsupportedEncodingException e) { 
       Log.e(TAG, "Unsupported Encoding", e); 
      } 
     } 
    } 
  • 直接讀讀