protected void UpdateDisplay(NdefLibrary.Ndef.NdefMessage messages)
 {
     Messages.Clear();
     foreach (var message in messages)
     {
         Messages.Add(new MessageViewModel(message));
     }
 }
 public MessageViewModel(NdefLibrary.Ndef.NdefRecord message)
 {
     Type type = message.CheckSpecializedType(true);
     Type = type.Name;
     Info = "Feel free to add this mapping to the message view model";
     if (type == typeof (NdefLibrary.Ndef.NdefTextRecord))
     {
         var text = new NdefTextRecord(message);
         Info = string.Format("The message on the tag is \"{0}\". The language is \"{1}\"", text.Text,
             text.LanguageCode);
     }
     if (type == typeof(NdefLibrary.Ndef.NdefUriRecord))
     {
         var text = new NdefUriRecord(message);
         Info = string.Format("The URI on the tag is \"{0}\"", text.Uri);
     }
 }
Example #3
0
        public void WriteTag(NdefLibrary.Ndef.NdefMessage message)
        {
            int messageSize = 0;

            foreach (NdefRecord record in message)
            {
                messageSize += record.Payload.Length;
                if (!record.CheckIfValid())
                    throw new Exception("A record on NDEFMessage is not valid");
            }

            if (!isTagPresent)
                throw new Exception("No Tag present or Tag is incompatible ");

            if (!nfcTag.IsWriteable)
                throw new Exception("Tag is write locked ");

            if (nfcTag.MaxSize < messageSize)
                throw new Exception("Tag is too small for this message");

            RaiseTagConnected(nfcTag);

            nfcDevice.PublishBinaryMessage("NDEF:WriteTag", message.ToByteArray().AsBuffer(), writerHandler);
        }
 public Task<WriteResult> WriteTag(NdefLibrary.Ndef.NdefMessage message, System.Threading.CancellationToken cancellationToken, TimeSpan timeout)
 {
     throw new NotImplementedException();
 }
 public Task<WriteResult> WriteTag(NdefLibrary.Ndef.NdefMessage message, TimeSpan timeout)
 {
     throw new NotImplementedException();
 }
Example #6
0
        public Task<WriteResult> WriteTag(NdefLibrary.Ndef.NdefMessage message, System.Threading.CancellationToken cancellationToken)
        {
            return WriteTag(message, cancellationToken, TimeSpan.FromTicks(0));

        }
Example #7
0
 public Task<WriteResult> WriteTag(NdefLibrary.Ndef.NdefMessage message, TimeSpan timeout)
 {
     return WriteTag(message, CancellationToken.None, timeout);
 }
Example #8
0
 protected override void NewMessage(string tagId,NdefLibrary.Ndef.NdefMessage message)
 {
     var nfcMessage = new MessageReceived(tagId, message, this);
     _messenger.Publish(nfcMessage);
 }
Example #9
0
		public void WriteTag (NdefLibrary.Ndef.NdefMessage message)
		{
			if (droidTag == null) 
			{
				throw new Exception("Tag Error: No Tag to write, register to NewTag event before calling WriteTag()");
			}

			Ndef ndef = GetNdef (droidTag);

			if (ndef == null) 
			{
				throw new Exception("Tag Error: NDEF not supported");
			}


			try
			{
				ndef.Connect();
				RaiseTagConnected (nfcTag);
			}

			catch
			{
				throw new Exception("Tag Error: No Tag nearby");
			}

			if(!ndef.IsWritable) 
			{				
				ndef.Close ();
				throw new Exception("Tag Error: Tag is write locked");
			}

			int size = message.ToByteArray ().Length;

			if(ndef.MaxSize < size) 
			{
				ndef.Close ();
				throw new Exception("Tag Error: Tag is too small");
			}

			try 
			{
				List<Android.Nfc.NdefRecord> records = new List<Android.Nfc.NdefRecord>();
				for(int i = 0; i< message.Count;i++)
				{
					if(message[i].CheckIfValid())
						records.Add(new Android.Nfc.NdefRecord(Android.Nfc.NdefRecord.TnfWellKnown,message[i].Type,message[i].Id,message[i].Payload));
					else
					{
						throw new Exception("NDEFRecord number " + i + "is not valid");
					}
				};
				Android.Nfc.NdefMessage msg = new Android.Nfc.NdefMessage(records.ToArray());
				ndef.WriteNdefMessage(msg);
			}

			catch (TagLostException tle) 
			{
				throw new Exception("Tag Lost Error: " + tle.Message);
			} 

			catch (IOException ioe) 
			{
				throw new Exception("Tag IO Error: " +  ioe.ToString());
			}

			catch (Android.Nfc.FormatException fe) 
			{
				throw new Exception("Tag Format Error: " + fe.Message);
			}

			catch (Exception e) 
			{
				throw new Exception("Tag Error: " + e.ToString());
			}

			finally
			{
				ndef.Close ();
				RaiseTagTagDisconnected (nfcTag);
			}

		}
Example #10
0
 protected abstract void NewMessage(string tagID,NdefLibrary.Ndef.NdefMessage ndefMessage);
Example #11
0
 public MessageReceived(string tagId, NdefLibrary.Ndef.NdefMessage message, object sender)
     : base(sender)
 {
     TagId = tagId;
     Message = message;
 }