private static NdefRecord ParseNdefRecord(NFCNdefPayload payload) { string typeString = System.Text.Encoding.UTF8.GetString(payload.Type.ToArray()); var parsedRecord = new NdefRecord() { Id = System.Text.Encoding.UTF8.GetString(payload.Identifier.ToArray()), RecordType = ParseRecordType(payload.TypeNameFormat, typeString) }; switch (parsedRecord.RecordType) { case NdefRecordType.Url: byte[] dataArray = payload.Payload.ToArray(); string urlText = string.Empty; switch (dataArray[0]) { case 1: urlText = "http://www."; break; case 2: urlText = "https://www."; break; case 3: urlText = "http://"; break; case 4: urlText = "https://"; break; } urlText += System.Text.Encoding.UTF8.GetString(dataArray, 1, dataArray.Length - 1); parsedRecord.Data = urlText; break; case NdefRecordType.AbsoluteUri: parsedRecord.Data = typeString; break; case NdefRecordType.Text: byte[] textDataArray = payload.Payload.ToArray(); byte header = textDataArray[0]; int languageLength = header & 0x1f; parsedRecord.Encoding = (header & 0x40) == 0 ? "utf-8" : "utf-16be"; parsedRecord.Language = System.Text.Encoding.ASCII.GetString(textDataArray, 1, languageLength); parsedRecord.Data = System.Text.Encoding.UTF8.GetString(textDataArray, languageLength + 1, textDataArray.Length - (languageLength + 1)); break; case NdefRecordType.Mime: parsedRecord.MediaType = typeString; parsedRecord.Data = payload.Payload.ToArray(); break; default: parsedRecord.Data = payload.Payload.ToArray(); break; } return(parsedRecord); }
internal void AddRecord(NdefRecord record) { _records.Add(record); }