/// <summary> /// This method is called when an NFC tag is discovered by the application. /// </summary> /// <param name="intent"></param> protected override void OnNewIntent(Intent intent) { if (_inWriteMode) { _inWriteMode = false; var tag = intent.GetParcelableExtra(NfcAdapter.ExtraTag) as Tag; if (tag == null) { return; } // These next few lines will create a payload (consisting of a string) // and a mimetype. NFC record are arrays of bytes. //var payload = Encoding.ASCII.GetBytes(GetRandomHominid()); //var mimeBytes = Encoding.ASCII.GetBytes(ViewApeMimeType); //var apeRecord = new NdefRecord(NdefRecord.TnfMimeMedia, mimeBytes, new byte[0], payload); var nd = NdefRecord.CreateTextRecord(null, "Hello Test"); var ndefMessage = new NdefMessage(new[] { nd }); if (!TryAndWriteToTag(tag, ndefMessage)) { // Maybe the write couldn't happen because the tag wasn't formatted? TryAndFormatTagWithMessage(tag, ndefMessage); } } }
public NdefMessage CreateNdefMessage(NfcEvent e) { NdefRecord txt = NdefRecord.CreateTextRecord("token", token); NdefMessage message = new NdefMessage(new[] { txt }); return(message); }
/// <summary> /// Transforms a <see cref="NFCNdefRecord"/> into an Android <see cref="NdefRecord"/> /// </summary> /// <param name="record">Object <see cref="NFCNdefRecord"/></param> /// <returns>Android <see cref="NdefRecord"/></returns> NdefRecord GetAndroidNdefRecord(NFCNdefRecord record) { if (record == null) { return(null); } NdefRecord ndefRecord = null; switch (record.TypeFormat) { case NFCNdefTypeFormat.WellKnown: var languageCode = record.LanguageCode; if (string.IsNullOrWhiteSpace(languageCode)) { languageCode = Configuration.DefaultLanguageCode; } if (languageCode.Length > 5) { languageCode = languageCode.Substring(0, 5); //max support 5 chars like en-US or de-AT } ndefRecord = NdefRecord.CreateTextRecord(languageCode, Encoding.UTF8.GetString(record.Payload)); //no need to force it to 2 letters only //ndefRecord = NdefRecord.CreateTextRecord(languageCode.Substring(0, 2), Encoding.UTF8.GetString(record.Payload)); break; case NFCNdefTypeFormat.Mime: ndefRecord = NdefRecord.CreateMime(record.MimeType, record.Payload); break; case NFCNdefTypeFormat.Uri: ndefRecord = NdefRecord.CreateUri(Encoding.UTF8.GetString(record.Payload)); break; case NFCNdefTypeFormat.External: ndefRecord = NdefRecord.CreateExternal(record.ExternalDomain, record.ExternalType, record.Payload); break; case NFCNdefTypeFormat.Empty: ndefRecord = GetEmptyNdefRecord(); break; case NFCNdefTypeFormat.Unknown: case NFCNdefTypeFormat.Unchanged: case NFCNdefTypeFormat.Reserved: default: break; } return(ndefRecord); }
/// <summary> /// Transforms a <see cref="NFCNdefRecord"/> into an Android <see cref="NdefRecord"/> /// </summary> /// <param name="record">Object <see cref="NFCNdefRecord"/></param> /// <returns>Android <see cref="NdefRecord"/></returns> NdefRecord GetAndroidNdefRecord(NFCNdefRecord record) { if (record == null) { return(null); } NdefRecord ndefRecord = null; switch (record.TypeFormat) { case NFCNdefTypeFormat.WellKnown: var languageCode = record.LanguageCode; if (string.IsNullOrWhiteSpace(languageCode)) { languageCode = Configuration.DefaultLanguageCode; } ndefRecord = NdefRecord.CreateTextRecord(languageCode.Substring(0, 2), Encoding.UTF8.GetString(record.Payload)); break; case NFCNdefTypeFormat.Mime: ndefRecord = NdefRecord.CreateMime(record.MimeType, record.Payload); break; case NFCNdefTypeFormat.Uri: ndefRecord = NdefRecord.CreateUri(Encoding.UTF8.GetString(record.Payload)); break; case NFCNdefTypeFormat.External: ndefRecord = NdefRecord.CreateExternal(record.ExternalDomain, record.ExternalType, record.Payload); break; case NFCNdefTypeFormat.Empty: ndefRecord = GetEmptyNdefRecord(); break; case NFCNdefTypeFormat.Unknown: case NFCNdefTypeFormat.Unchanged: case NFCNdefTypeFormat.Reserved: default: break; } return(ndefRecord); }
/// <summary> /// Transforms a <see cref="NFCNdefRecord"/> into an Android <see cref="NdefRecord"/> /// </summary> /// <param name="record">Object <see cref="NFCNdefRecord"/></param> /// <returns>Android <see cref="NdefRecord"/></returns> NdefRecord GetAndroidNdefRecord(NFCNdefRecord record) { if (record == null) { return(null); } NdefRecord ndefRecord = null; switch (record.TypeFormat) { case NFCNdefTypeFormat.WellKnown: ndefRecord = NdefRecord.CreateTextRecord(Locale.Default.ToLanguageTag(), Encoding.UTF8.GetString(record.Payload)); break; case NFCNdefTypeFormat.Mime: ndefRecord = NdefRecord.CreateMime(record.MimeType, record.Payload); break; case NFCNdefTypeFormat.Uri: ndefRecord = NdefRecord.CreateUri(Encoding.UTF8.GetString(record.Payload)); break; case NFCNdefTypeFormat.External: ndefRecord = NdefRecord.CreateExternal(record.ExternalDomain, record.ExternalType, record.Payload); break; case NFCNdefTypeFormat.Empty: ndefRecord = GetEmptyNdefRecord(); break; case NFCNdefTypeFormat.Unknown: case NFCNdefTypeFormat.Unchanged: case NFCNdefTypeFormat.Reserved: default: break; } return(ndefRecord); }
/// <summary> /// This method is called when an NFC tag is discovered by the application. /// </summary> /// <param name="intent"></param> public void OnNewIntent(Intent intent) { if (_inReadMode) { _inReadMode = false; var tag = intent.GetParcelableExtra(NfcAdapter.ExtraTag) as Tag; var rawMsgs = intent.GetParcelableArrayExtra(NfcAdapter.ExtraNdefMessages); if (tag == null) { return; } if (NfcAdapter.ExtraTag.Contains("nfc")) { HandleNFC(intent, true); } var tagId = tag.GetId(); _tagUid = ByteArrayToString(tagId); Log.Info(this.GetType().ToString(), "Card UID is " + _tagUid); } else if (_inWriteMode) { _inWriteMode = false; var obj = intent.GetParcelableExtra(NfcAdapter.ExtraTag) as Tag; CultureInfo info = CultureInfo.CurrentCulture; var payload = _writeTextView.Text; var nfcRecord = NdefRecord.CreateTextRecord(info.TwoLetterISOLanguageName, payload); var ndefMessage = new NdefMessage(new[] { nfcRecord }); if (!TryAndWriteToTag(obj, ndefMessage)) { // Maybe the write couldn't happen because the tag wasn't formatted? TryAndFormatTagWithMessage(obj, ndefMessage); } } }
private NdefRecord GetAndroidNdefRecord(NfcNdefRecord record) { if (record == null) { return(null); } NdefRecord ndefRecord = null; switch (record.TypeFormat) { case NfcNdefTypeFormat.WellKnown: ndefRecord = NdefRecord.CreateTextRecord("en", Encoding.UTF8.GetString(record.Payload)); break; case NfcNdefTypeFormat.Mime: ndefRecord = NdefRecord.CreateMime(record.MimeType, record.Payload); break; case NfcNdefTypeFormat.Uri: ndefRecord = NdefRecord.CreateUri(Encoding.UTF8.GetString(record.Payload)); break; case NfcNdefTypeFormat.Empty: byte[] empty = Array.Empty <byte>(); ndefRecord = new NdefRecord(NdefRecord.TnfEmpty, empty, empty, empty); break; case NfcNdefTypeFormat.External: case NfcNdefTypeFormat.Unknown: case NfcNdefTypeFormat.Unchanged: case NfcNdefTypeFormat.Reserved: default: break; } return(ndefRecord); }