2014-09-04 50 views
0

我正在開發有關nfc標籤的windows phone應用程序,我可以在其中編寫所有四種類型爲NdefTextRecord的記錄。發佈它時沒有問題。主要問題在閱讀NDEF消息時出現我無法讀取我發佈的任何記錄。我想要讀取所有四條記錄,但是讀取它時什麼也不讀。 下面是發佈消息的代碼。如何從Windows Phone 8中的Nfc標籤讀取多個NdefTextRecord

 public void ApplicationBarIconButton_Click(object sender, System.EventArgs e) 
    { 

     var fRecord = new NdefTextRecord{Text = TxtFloor.Text , LanguageCode = "en-US" }; 
     var zRecord = new NdefTextRecord { Text = TxtZone.Text, LanguageCode = "en-US" }; 
     var latRecord = new NdefTextRecord { Text = LatitudeTextBlock.Text, LanguageCode = "en-US" }; 
     var longRecord = new NdefTextRecord { Text = LongitudeTextBlock.Text, LanguageCode = "en-US" }; 

     var msg = new NdefMessage {}; 
     msg.Add(fRecord); 
     msg.Add(zRecord); 
     msg.Add(latRecord); 
     msg.Add(longRecord); 

     _device.PublishBinaryMessage(
      "NDEF:WriteTag", 
      msg.ToByteArray().AsBuffer(), 
      MessageWrittenHandler); 

     SetStatusOutput("Message written"); 
     } 
下面

是訂閱

private void InitializeProximityDevice() 
    { 
     _device = Windows.Networking.Proximity.ProximityDevice.GetDefault(); 
     if (_device != null) 
     { 
      _subscriptionIdNdef = _device.SubscribeForMessage("NDEF", MessageReceivedHandler); 

     } 

    } 

     private void MessageReceivedHandler(ProximityDevice sender, ProximityMessage message) 
    { 

     var rawMsg = message.Data.ToArray(); 
     var ndefMessage = NdefMessage.FromByteArray(rawMsg); 


     // Loop over all records contained in the NDEF message 
     foreach (NdefRecord record in ndefMessage) 
     { 

      if (NdefTextRecord.IsRecordType(record)) 
      { 
       // Convert and extract URI info 
       var textRecord = new NdefTextRecord(record); 
       var str = textRecord; 


       //SetLogStatus(); 


      } 

回答

0

是您的讀碼進入foreach語句,但失敗的類型檢查的代碼?請嘗試

foreach (NdefRecord record in ndefMessage) { 
    var recordType = record.CheckSpecializedType(false); 

    if (recordType == typeof(NdefTextRecord)) { 
    // ... 
    } 
} 
0

Windows Phone只會讀取消息的第一條記錄並對其執行操作。存儲在標籤上的所有其他記錄都將被忽略。如果操作系統無法理解消息中的第一條記錄,則該標記將被忽略。

參見:Multiple Records on Tags