コード例 #1
0
        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);
        }
コード例 #2
0
 internal void AddRecord(NdefRecord record)
 {
     _records.Add(record);
 }