/// <summary> /// Starts tags detection /// </summary> public void StartListening() { if (_nfcAdapter == null) { return; } var intent = new Intent(CurrentActivity, CurrentActivity.GetType()).AddFlags(ActivityFlags.SingleTop); var pendingIntent = PendingIntent.GetActivity(CurrentActivity, 0, intent, 0); var ndefFilter = new IntentFilter(NfcAdapter.ActionNdefDiscovered); ndefFilter.AddDataType("*/*"); var tagFilter = new IntentFilter(NfcAdapter.ActionTagDiscovered); tagFilter.AddCategory(Intent.CategoryDefault); var filters = new IntentFilter[] { ndefFilter, tagFilter }; _nfcAdapter.EnableForegroundDispatch(CurrentActivity, pendingIntent, filters, null); _isListening = true; OnTagListeningStatusChanged?.Invoke(_isListening); }
/// <summary> /// Stops tag publishing /// </summary> public void StopPublishing() { _isWriting = _isFormatting = _customInvalidation = false; _tag = null; NfcSession?.InvalidateSession(); OnTagListeningStatusChanged?.Invoke(false); }
/// <summary> /// Starts tags detection /// </summary> public void StartListening() { _defaultDevice.DeviceArrived += OnDeviceArrived; _defaultDevice.DeviceDeparted += OnDeviceDeparted; _ndefSubscriptionId = _defaultDevice.SubscribeForMessage("NDEF", OnNdefMessageReceived); OnTagListeningStatusChanged?.Invoke(true); }
/// <summary> /// Starts tags detection /// </summary> public void StartListening() { NfcSession = new NFCNdefReaderSession(this, DispatchQueue.CurrentQueue, true) { AlertMessage = Configuration.Messages.NFCDialogAlertMessage }; NfcSession?.BeginSession(); OnTagListeningStatusChanged?.Invoke(true); }
/// <summary> /// Stops tags detection /// </summary> public void StopListening() { DisablePublishing(); if (_nfcAdapter != null) { _nfcAdapter.DisableForegroundDispatch(CurrentActivity); } _isListening = false; OnTagListeningStatusChanged?.Invoke(_isListening); }
/// <summary> /// Stops tags detection /// </summary> public void StopListening() { _defaultDevice.DeviceArrived -= OnDeviceArrived; _defaultDevice.DeviceDeparted -= OnDeviceDeparted; if (_ndefSubscriptionId != -1) { _defaultDevice.StopSubscribingForMessage(_ndefSubscriptionId); _ndefSubscriptionId = -1; } OnTagListeningStatusChanged?.Invoke(false); }
/// <summary> /// Starts tags detection /// </summary> public void StartListening() { _customInvalidation = false; _isWriting = false; _isFormatting = false; NfcSession = new NFCTagReaderSession(NFCPollingOption.Iso14443 | NFCPollingOption.Iso15693, this, DispatchQueue.CurrentQueue) { AlertMessage = Configuration.Messages.NFCDialogAlertMessage }; NfcSession?.BeginSession(); OnTagListeningStatusChanged?.Invoke(true); }
/// <summary> /// Invalidate the session /// </summary> /// <param name="session"><see cref="NFCTagReaderSession"/></param> /// <param name="message">Message to show</param> void Invalidate(NFCTagReaderSession session, string message = null) { _customInvalidation = true; if (string.IsNullOrWhiteSpace(message)) { session.InvalidateSession(); } else { session.InvalidateSession(message); } OnTagListeningStatusChanged?.Invoke(false); }
/// <summary> /// Starts tag publishing (writing or formatting) /// </summary> /// <param name="clearMessage">Format tag</param> public void StartPublishing(bool clearMessage = false) { if (!IsAvailable) { throw new InvalidOperationException(Configuration.Messages.NFCWritingNotSupported); } _customInvalidation = false; _isWriting = true; _isFormatting = clearMessage; NfcSession = new NFCTagReaderSession(NFCPollingOption.Iso14443 | NFCPollingOption.Iso15693, this, DispatchQueue.CurrentQueue) { AlertMessage = Configuration.Messages.NFCDialogAlertMessage }; NfcSession?.BeginSession(); OnTagListeningStatusChanged?.Invoke(true); }
/// <summary> /// Stops tags detection /// </summary> public void StopListening() { NfcSession?.InvalidateSession(); OnTagListeningStatusChanged?.Invoke(false); }