C# 如何在windows phone 8中从Nfc标记读取多个NdefTextRecord
我正在开发有关nfc标记的windows phone应用程序,在该应用程序中,我可以写入NdefTextRecord类型的所有四条记录。发布该记录时没有问题。主要问题是在读取NDEF消息时,我无法读取我发布的任何记录。我想读取所有四条记录,但在读取时却什么也看不到。 下面是两条发布消息的代码C# 如何在windows phone 8中从Nfc标记读取多个NdefTextRecord,c#,windows-phone-8,nfc,C#,Windows Phone 8,Nfc,我正在开发有关nfc标记的windows phone应用程序,在该应用程序中,我可以写入NdefTextRecord类型的所有四条记录。发布该记录时没有问题。主要问题是在读取NDEF消息时,我无法读取我发布的任何记录。我想读取所有四条记录,但在读取时却什么也看不到。 下面是两条发布消息的代码 public void ApplicationBarIconButton_Click(object sender, System.EventArgs e) { va
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();
}
您的读取代码是否正在输入foreach语句,但类型检查失败?试一试
foreach (NdefRecord record in ndefMessage) {
var recordType = record.CheckSpecializedType(false);
if (recordType == typeof(NdefTextRecord)) {
// ...
}
}
Windows Phone仅读取消息的第一条记录并对其进行操作。将忽略存储在标记上的所有其他记录。如果操作系统不理解消息中的第一条记录,则忽略标记 见: