Ejemplo n.º 1
0
 private void TryInvalidateSession()
 {
     try
     {
         Session?.RestartPolling();
         Session?.InvalidateSession();
     }
     catch { }
 }
Ejemplo n.º 2
0
 /// <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);
     }
 }
Ejemplo n.º 3
0
 /// <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);
 }
Ejemplo n.º 4
0
        /// <summary>
        /// NFC読取セッションがタグを検知されたら呼び出される。
        /// </summary>
        /// <param name="session">NFC読取セッション</param>
        /// <param name="tags">検知タグ</param>
        public override void DidDetectTags(NFCTagReaderSession session, INFCTag[] tags)
        {
            Debug.WriteLine($"DidDetectTags");

            // タグに接続する。
            if (tags.Length <= 0)
            {
                return;
            }
            session.ConnectTo(tags[0], connectErr =>
            {
                // 接続エラー時はメッセージを表示してNFC読取セッションを終了する、
                if (connectErr != null)
                {
                    Debug.WriteLine($"Connect Error = [{connectErr}]");
                    session.InvalidateSession("タグ接続失敗。");
                    return;
                }

                // FeliCa準拠のタグプロトコルを取得する。
                _felicaTag = tags[0].GetNFCFeliCaTag();
                if (_felicaTag == null)
                {
                    return;
                }

                // FeliCaのRequest Serviceコマンドを実行し、
                // サービスコード0x090Fを指定し、カード種別およびカード残額情報サービスに接続する。
                // (サービスコードはリトルエンディアンで)
                _felicaTag.RequestService(ServiceCodes, OnCompletedRequestService);
            });
        }
Ejemplo n.º 5
0
        public bool IsAvailable()
        {
            NfcSession = new NFCTagReaderSession(NFCPollingOption.Iso14443, this, null)
            {
                AlertMessage = "NFC not available."
            };

            if (NfcSession != null)
            {
                NfcSession.InvalidateSession();
                return(true);
            }
            return(false);
        }