Example #1
0
        public TextRecord Parse(NdefRecord record)
        {
            Preconditions.CheckArgument(record.Tnf == NdefRecord.TnfWellKnown);
            var typeInfo = record.GetTypeInfo();

            if (record.GetTypeInfo()[0] != NdefRecord.RtdText[0])
            {
                throw new Exception();
            }
            //Preconditions.CheckArgument(Arrays.Equals(record.GetTypeInfo()[0], NdefRecord.RtdText[0]));
            // Preconditions.CheckArgument(Array.Equals(record.GetType(), NdefRecord.RtdText));

            var      payload            = record.GetPayload();
            string   textEncoding       = (payload[0] & 0200) == 0 ? "UTF-8" : "UTF-16";
            int      languageCodeLength = payload[0] & 0077;
            Encoding enc          = Encoding.GetEncoding("US-ASCII");
            Encoding encText      = Encoding.GetEncoding(textEncoding);
            string   languageCode = enc.GetString(payload, 0, languageCodeLength);
            string   text         = encText.GetString(payload, languageCodeLength + 1, payload.Length - languageCodeLength - 1);

            return(new TextRecord(text));

            /*
             * String textEncoding = ((payload[0] & 0200) == 0) ? "UTF-8" : "UTF-16";
             * int languageCodeLength = payload[0] & 0077;
             * String languageCode = new String(payload, 1, languageCodeLength, "US-ASCII");
             * String text =
             *  new String(payload, languageCodeLength + 1,
             *      payload.length - languageCodeLength - 1, textEncoding);
             * return new TextRecord(languageCode, text);
             */
        }
        public void ReadFromTag(Tag tag, Intent intent)
        {
            var messages = intent.GetParcelableArrayExtra(NfcAdapter.ExtraNdefMessages);

            Ndef ndef = Ndef.Get(tag);

            try
            {
                ndef.Connect();

                NdefMessage[] ndefMessages = new NdefMessage[messages.Length];
                for (int i = 0; i < messages.Length; i++)
                {
                    ndefMessages[i] = (NdefMessage)messages[i];
                }
                NdefRecord record = ndefMessages[0].GetRecords()[0];

                byte[] payload = record.GetPayload();

                var msg = System.Text.Encoding.UTF8.GetString(payload);
                msg = msg.Remove(0, 3);

                EditText AccNoetxt = FindViewById <EditText>(Resource.Id.AccNoetxt);
                AccNoetxt.Text            = msg;
                PublicVariables.AccountNo = msg;


                ndef.Close();
            }

            catch (Exception e)
            {
                Toast.MakeText(this, "Message: " + e.Message, ToastLength.Long).Show();
            }
        }
Example #3
0
        private UriRecord ParseWellKnown(NdefRecord record)
        {
            //Preconditions.CheckArgument(Arrays.Equals(record.GetTypeInfo(), NdefRecord.RtdUri));

            if (record.GetTypeInfo()[0] != NdefRecord.RtdUri[0])
            {
                throw new Exception();
            }

            //                 Preconditions.checkArgument(Arrays.equals(record.getType(), NdefRecord.RTD_URI));
            //              byte[] payload = record.getPayload();
            /// *
            // * payload[0] contains the URI Identifier Code, per the
            // * NFC Forum "URI Record Type Definition" section 3.2.2.
            // *
            // * payload[1]...payload[payload.length - 1] contains the rest of
            // * the URI.
            // */
            //        String prefix = URI_PREFIX_MAP.get(payload[0]);
            //        byte[] fullUri =
            //            Bytes.concat(prefix.getBytes(Charset.forName("UTF-8")), Arrays.copyOfRange(payload, 1,
            //                payload.length));
            //        Uri uri = Uri.parse(new String(fullUri, Charset.forName("UTF-8")));
            //        return new UriRecord(uri);

            var      payload = record.GetPayload();
            string   prefix  = Utility.UriMap(payload[0]);
            Encoding enc     = Encoding.GetEncoding("UTF-8");
            string   text    = enc.GetString(payload, 1, payload.Length - 1);

            return(new UriRecord(prefix + text));
        }
Example #4
0
        private string ParseUriRecord(NdefRecord ndefRecord)
        {
            byte[] payload = ndefRecord.GetPayload();

            // Get the Language Code
            int languageCodeLength = payload[0] & 0063;

            return(new String(System.Text.UTF8Encoding.ASCII.GetChars(payload), languageCodeLength + 1, payload.Length - languageCodeLength - 1));
        }
Example #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="ndefRecord"></param>
        /// <returns></returns>
        private string ParseNdefRecord(NdefRecord ndefRecord)
        {
            byte[] payload = ndefRecord.GetPayload();

            // Get the Language Code
            int languageCodeLength = payload[0] & 0063;

            char[] payloadChars = UTF8Encoding.ASCII.GetChars(payload);
            var    payloadValue = new String(payloadChars, languageCodeLength + 1, payload.Length - languageCodeLength - 1);

            return(payloadValue);
        }
Example #6
0
        private UriRecord ParseAbsolute(NdefRecord record)
        {
            /*
             *  byte[] payload = record.getPayload();
             *  Uri uri = Uri.parse(new String(payload, Charset.forName("UTF-8")));
             *  return new UriRecord(uri);
             */

            var      payload = record.GetPayload();
            Encoding enc     = Encoding.GetEncoding("UTF-8");
            string   text    = enc.GetString(payload);

            return(new UriRecord(text));
        }
Example #7
0
        internal SmartPoster Parse(NdefRecord record)
        {
            /*
             *
             *        Preconditions.checkArgument(record.getTnf() == NdefRecord.TNF_WELL_KNOWN);
             * Preconditions.checkArgument(Arrays.equals(record.getType(), NdefRecord.RTD_SMART_POSTER));
             * try {
             * NdefMessage subRecords = new NdefMessage(record.getPayload());
             * return parse(subRecords.getRecords());
             * } catch (FormatException e) {
             * throw new IllegalArgumentException(e);
             * }
             */
            Preconditions.CheckArgument(record.Tnf == NdefRecord.TnfWellKnown);
            //Preconditions.CheckArgument(Arrays.Equals(record.GetTypeInfo(), NdefRecord.RtdSmartPoster));
            if (record.GetTypeInfo()[0] != NdefRecord.RtdSmartPoster[0])
            {
                throw new Exception();
            }
            NdefMessage subRecords = new NdefMessage(record.GetPayload());

            return(Parse(subRecords.GetRecords()));
        }
Example #8
0
 protected override void OnNewIntent(Intent intent)
 {
     base.OnNewIntent(intent);
     if (_nfc_avaible && _do_scanning && intent.Action == NfcAdapter.ActionTagDiscovered)
     {
         Tag tag = intent.GetParcelableExtra(NfcAdapter.ExtraTag) as Tag;
         if (tag != null)
         {
             IParcelable[] raw_data = intent.GetParcelableArrayExtra(NfcAdapter.ExtraNdefMessages);
             if (raw_data != null)
             {
                 NdefRecord record = (raw_data[0] as NdefMessage).GetRecords()[0];
                 if (record != null)
                 {
                     TagScanner._on_result(record.GetPayload());
                     _do_scanning = false;
                     return;
                 }
             }
         }
     }
     TagScanner._on_result(null);
 }
Example #9
0
 private string ReadText(NdefRecord record)
 {
     return(Encoding.UTF8.GetString(record.GetPayload()));
 }
Example #10
0
 public AndroidNdefRecord(NdefRecord nativeRecord)
 {
     TypeNameFormat = GetTypeNameFormat(nativeRecord.Tnf);
     Payload        = nativeRecord.GetPayload();
 }