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); } }
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(); }
public Task<WriteResult> WriteTag(NdefLibrary.Ndef.NdefMessage message, System.Threading.CancellationToken cancellationToken) { return WriteTag(message, cancellationToken, TimeSpan.FromTicks(0)); }
public Task<WriteResult> WriteTag(NdefLibrary.Ndef.NdefMessage message, TimeSpan timeout) { return WriteTag(message, CancellationToken.None, timeout); }
protected override void NewMessage(string tagId,NdefLibrary.Ndef.NdefMessage message) { var nfcMessage = new MessageReceived(tagId, message, this); _messenger.Publish(nfcMessage); }
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); } }
protected abstract void NewMessage(string tagID,NdefLibrary.Ndef.NdefMessage ndefMessage);
public MessageReceived(string tagId, NdefLibrary.Ndef.NdefMessage message, object sender) : base(sender) { TagId = tagId; Message = message; }