2013-04-16 37 views
0

我正在開發一個minSdk = 14和targetSdk = 17的Android應用程序。我希望應用程序使用Android Beam將純文本字符串從手機發送到NFC閱讀器。我還沒有讀者,並試圖從一個Android設備光束純文本數據到另一個(我有一個Nexus 4運行4.2.2和一個LG Optimus L5運行4.0.3)。Android Beam上的純文本

我發現了兩種發送文本數據的方式,第一種是使用TNF_WELL_KNOWN和RTD_TEXT作爲類型,另一種是使用TNF_MIME_MEDIA和text/plain作爲類型。

從L5發送到N4後,我看到的所有內容都是新標籤下收集的是「text/plain」。我也嘗試使用NXP TagWriter讀取Beam數據,這是我使用RTD_TEXT http://i.imgur.com/0qbAwld.png時得到的結果,這是使用text/plain MIME http://i.imgur.com/bz9RxuI.png時的情況。

此使用RTD_TEXT

 NdefRecord[] records = { 
       new NdefRecord(NdefRecord.TNF_WELL_KNOWN, 
         NdefRecord.RTD_TEXT, 
         new byte[0], 
         "testing".getBytes()) 
     }; 
     NdefMessage msg = new NdefMessage(records); 
     adapter.setNdefPushMessage(msg, this); 

這是使用文本時的代碼時,該代碼/ MIME平原

 NdefRecord[] records = { 
       new NdefRecord(NdefRecord.TNF_MIME_MEDIA, 
         "text/plain".getBytes(), 
         new byte[0], 
         "testing".getBytes()) 
     }; 
     NdefMessage msg = new NdefMessage(records); 
     adapter.setNdefPushMessage(msg, this); 

如何正確地創建NdefRecord?或者它是否按照預期工作,只有有效載荷不顯示在另一部手機上?發送純文本數據時,這兩種方法中的哪一種(RTD_TEXT和MIME)是首選?

回答

0

RTD_TEXT記錄被映射到意圖過濾的MIME類型「text/plain」。即:「text/plain」的意圖過濾器將匹配這兩種記錄類型。所以對於你使用哪種類型無關緊要。

RTD_TEXT記錄的有效負載比MIME類型的文本/普通文件稍微複雜一些。它應該包含使用的編碼和內容的語言的信息,請參閱http://www.nfc-forum.org/specs/spec_list/上提供的規範。 (所以你創建的RTD_TEXT記錄是不正確的。)

+0

但是,即使恩智浦TagWriter不會顯示其內容,是否應該正確MIME? – Nait

+0

它看起來對我很好。 –