我正在开发关于nfc标签的windows phone应用程序,我可以写出所有四种类型为NdefTextRecord的记录。发布它没有问题。主要问题是在阅读NDEF消息时我无法读取任何我发布的记录。我想阅读所有四条记录,但阅读时却什么都没读。 以下是两个发布消息的代码。
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 :(得分:0)
您的读取代码是否已进入foreach语句但未通过类型检查?尝试
foreach (NdefRecord record in ndefMessage) {
var recordType = record.CheckSpecializedType(false);
if (recordType == typeof(NdefTextRecord)) {
// ...
}
}
答案 1 :(得分:0)
Windows Phone仅读取并处理邮件的第一条记录。存储在标记上的所有其他记录都将被忽略。如果操作系统无法理解消息中的第一条记录,则忽略该标记。