private void LaunchCallback(byte[] data)
        {
            byte[] temp = new byte[data.Length - data[1] - 2];

            Array.Copy(data, 2 + data[1], temp, 0, temp.Length);

            NdefParser parser = new NdefParser(temp);

            RecordData[] payload = parser.GetPayLoad().ToArray();

            if (payload.Length > 0)
            {
                if (payload[0].NdefType.Equals("U"))
                {
                    Uri uri = new Uri(payload[0].Content);
                    if (uri.Scheme == 0)
                    {
                        return;
                    }
                    Process.Start(payload[0].Content);
                }
            }

            Task.Run(() =>
            {
                Thread.Sleep(500);
                DetectandLaunch();
            });
        }
        private void AddNdefContent(byte[] data)
        {
            byte[] temp = new byte[data.Length - data[1] - 2];

            Array.Copy(data, 2 + data[1], temp, 0, temp.Length);

            NdefParser parser = new NdefParser(temp);

            Action update = () =>
            {
                foreach (RecordData payload in parser.GetPayLoad())
                {
                    ndefData.Text += payload.Content + "\r\n";
                }
            };

            Dispatcher.BeginInvoke(update);
            ShowSuccessStatus();
        }
Пример #3
0
        private async void ProximityMessageReceivedHandler(ProximityDevice sender, ProximityMessage message)
        {
            var parser      = new NdefParser(message);
            var ndefRecords = new List <NdefRecord>();

            var err = "";

            try { ndefRecords = parser.Parse(); }
            catch (NoSonyNdefRecordException) { err = SystemUtil.GetStringResource("ErrorMessage_CantFindSonyRecord"); }
            catch (NoNdefRecordException) { err = SystemUtil.GetStringResource("ErrorMessage_ParseNFC"); }
            catch (NdefParseException) { err = SystemUtil.GetStringResource("ErrorMessage_ParseNFC"); }
            catch (Exception) { err = SystemUtil.GetStringResource("ErrorMessage_fatal"); }

            if (err != "")
            {
                DebugUtil.Log(() => "Failed to read NFC: " + err);
                await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    AppShell.Current.Toast.PushToast(new Controls.ToastContent {
                        Text = err
                    });
                });

                return;
            }

            foreach (NdefRecord r in ndefRecords)
            {
                if (r.SSID.Length > 0 && r.Password.Length > 0)
                {
                    await OnConnectionInfoFound(r.SSID, r.Password);

                    break;
                }
            }
        }
Пример #4
0
        private void NFCMessageReceivedHandler(ProximityDevice sender, ProximityMessage message)
        {
            var parser = new NdefParser(message);
            List<NdefRecord> ndefRecords = new List<NdefRecord>();
            ndefRecords = parser.Parse();
            InitializePivot();

            if (ndefRecords.Count == 0)
            {
                Dispatcher.BeginInvoke(() =>
                {
                    // there's no NDEF record.
                    NFCMessage.Text = AppResources.NFC_Message_error;
                });
            }
            else
            {
                Dispatcher.BeginInvoke(() =>
                {
                    // NDEF records found.
                    NFCMessage.Text = AppResources.NFC_Message_detected;
                    ApplicationBar = CreateAppBar();
                });
            }

            int i = 0;

            foreach (NdefRecord r in ndefRecords)
            {

                i++;

                Dispatcher.BeginInvoke(() =>
                {
                    var newPivotItem = new PivotItem()
                    {
                        Margin = new Thickness(12, 0, 12, 0),
                    };

                    var content = new NdefPivotItem(MyPivot.Items.Count, r, ndefRecords.Count);
                    newPivotItem.Content = content;

                    stringBuilder.Append(content.getAppendString());
                    MyPivot.Items.Add(newPivotItem);
                });
            }

            Dispatcher.BeginInvoke(() =>
            {
                if (MyPivot.Items.Count > 1)
                {
                    MyPivot.SelectedIndex = 1;
                }
            });
        }