Exemplo n.º 1
0
 protected abstract void NewIntent(Cirrious.CrossCore.Core.MvxValueEventArgs <Intent> e);
Exemplo n.º 2
0
        protected override async void NewIntent(Cirrious.CrossCore.Core.MvxValueEventArgs <Intent> e)
        {
            WriteResult writeResult = new WriteResult();

            writeResult.ReasonForFailure = FailureReasons.Unkown;


            var id     = GetIdFromTag(e.Value);
            var intent = e.Value;
            Tag tag    = (Tag)intent.GetParcelableExtra(NfcAdapter.ExtraTag);

            Ndef ndef = Ndef.Get(tag);

            if (ndef != null)
            {
                ndef.Connect();
                if (!ndef.IsWritable)
                {
                    writeResult.ReasonForFailure = FailureReasons.TagReadOnly;
                    _taskCompletionSource.TrySetResult(writeResult);
                    return;
                }
                byte[] message = _messageToWrite.ToByteArray();
                if (ndef.MaxSize < message.Length)
                {
                    writeResult.ReasonForFailure = FailureReasons.TagTooSmall;
                    _taskCompletionSource.TrySetResult(writeResult);
                    return;
                }

                try
                {
                    await ndef.WriteNdefMessageAsync(new Android.Nfc.NdefMessage(message));

                    writeResult.ReasonForFailure = FailureReasons.DidNotFail;
                    writeResult.NFCTag           = new NFCTag()
                    {
                        Id = id
                    };
                    _taskCompletionSource.TrySetResult(writeResult);
                    return;
                }
                catch (TagLostException tagLost)
                {
                    writeResult.ReasonForFailure = FailureReasons.TagLostDuringWrite;
                    _taskCompletionSource.TrySetResult(writeResult);
                    return;
                }
                catch (Exception err)
                {
                    Mvx.Error("Error writing Tag: " + err.ToString());
                    writeResult.ReasonForFailure = FailureReasons.ErrorDuringWrite;
                    _taskCompletionSource.TrySetResult(writeResult);
                    return;
                }
            }
            else
            {
                writeResult.ReasonForFailure = FailureReasons.UnableToFormatTag;
                _taskCompletionSource.TrySetResult(writeResult);
                return;
            }
        }
Exemplo n.º 3
0
 /// <summary>
 /// This is fired when a NFC tag is scanned (and we are doing foreground scanning)
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void droidEvents_NewIntentCalled(object sender, Cirrious.CrossCore.Core.MvxValueEventArgs <Intent> e)
 {
     NewIntent(e);
 }
Exemplo n.º 4
0
 public override void HandleViewDidDisappearCalled(object sender, Cirrious.CrossCore.Core.MvxValueEventArgs <bool> e)
 {
     Console.WriteLine(this.ViewController.GetType().Name + ": ViewDidDisappear");
 }