2014-02-24 69 views
-1

我正在嘗試使用NFC開始編寫應用程序。我只需要將一個NDef消息從一個電話發送到另一個電話,只包含一個簡單的字符串。簡單的NFC代碼不起作用?

我的發射活動:

public class MainActivity extends Activity { 

    NfcAdapter mNfcAdapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mNfcAdapter = NfcAdapter.getDefaultAdapter(this); 
     if (mNfcAdapter == null) { 
      Toast.makeText(this, "NFC is not available", Toast.LENGTH_LONG).show(); 
      finish(); 
      return; 
     } 
     NdefMessage msg = new NdefMessage(
       new NdefRecord[] { createTextRecord("Bla", Locale.GERMANY , true)}); 
     mNfcAdapter.setNdefPushMessage(msg, this); 
    } 



    public NdefRecord createTextRecord(String payload, Locale locale, boolean encodeInUtf8) { 
     byte[] langBytes = locale.getLanguage().getBytes(Charset.forName("US-ASCII")); 
     Charset utfEncoding = encodeInUtf8 ? Charset.forName("UTF-8") : Charset.forName("UTF-16"); 
     byte[] textBytes = payload.getBytes(utfEncoding); 
     int utfBit = encodeInUtf8 ? 0 : (1 << 7); 
     char status = (char) (utfBit + langBytes.length); 
     byte[] data = new byte[1 + langBytes.length + textBytes.length]; 
     data[0] = (byte) status; 
     System.arraycopy(langBytes, 0, data, 1, langBytes.length); 
     System.arraycopy(textBytes, 0, data, 1 + langBytes.length, textBytes.length); 
     NdefRecord record = new NdefRecord(NdefRecord.TNF_WELL_KNOWN, 
     NdefRecord.RTD_TEXT, new byte[0], data); 
     return record; 
    } 
    } 

然後,我只是嘗試接受一些意向對方手機上的東西happend:如果我點擊了手機

public class MainActivity extends Activity { 

    NfcAdapter mNfcAdapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mNfcAdapter = NfcAdapter.getDefaultAdapter(this); 
     if (mNfcAdapter == null) { 
      Toast.makeText(this, "NFC is not available", Toast.LENGTH_LONG).show(); 
      finish(); 
      return; 
     } 
    } 


    @Override 
    protected void onResume() { 
     // TODO Auto-generated method stub 
     super.onResume(); 

      if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) { 
       Toast.makeText(getApplicationContext(), "Received an Event onResume", Toast.LENGTH_LONG).show(); 
      } 

     } 

} 

可悲的是沒有任何反應。謝謝你的幫助!

+0

@ArtooDetoo哈哈是什麼? :D –

+0

@小孩:我在開玩笑......;) –

回答

2

On Their website。你應該總是先查閱文檔。

本文檔介紹了您在Android中執行的基本NFC任務。它解釋瞭如何以NDEF消息 的形式發送和接收NFC數據,並描述了支持這些功能的Android框架API。 有關更高級主題,包括討論使用非NDEF數據的 ,請參閱高級NFC。

+0

當然是的,我看了看網站並使用了它,但我無法得到這個例子並開始工作。沒有演示代碼似乎在任何地方都可以正常工作。 –

相關問題