コード例 #1
0
        public async void OpenScanner()
        {
            var ScannerPage = new ZXingScannerPage();

            ScannerPage.IsScanning = true;

            ScannerPage.OnScanResult += (result) => {
                ScannerPage.IsScanning = false;

                Device.BeginInvokeOnMainThread(async() => {
                    string[] values = result.Text.Split('*');
                    if (values.Length == 3)
                    {
                        Contact contact   = new Contact();
                        contact.FirstName = values[0];
                        contact.LastName  = values[1];
                        contact.Phone     = values[2];
                        contact.Color     = GoogleColors.GetRandomColor();
                        App.Database.SaveContact(contact);
                    }
                    else
                    {
                        await App.Current.MainPage.DisplayAlert("Invalid QR Code Scanned", "Couldn't load contact data from scanned QR Code", "OK");
                    }
                    await App.Current.MainPage.Navigation.PopAsync();
                });
            };


            await App.Current.MainPage.Navigation.PushAsync(ScannerPage);
        }
コード例 #2
0
        public ContactEditPageViewModel(Contact contact)
        {
            this.Contact   = contact ?? new Contact();
            this.ViewTitle = contact == null ? "New Contact" : "Edit Contact";

            this.CreateContactCommand = new Command(async() =>
            {
                if (await Validate())
                {
                    if (this.Contact.Id != 0)
                    {
                        App.Database.UpdateContact(this.Contact);
                    }
                    else
                    {
                        this.Contact.Color = GoogleColors.GetRandomColor();
                        App.Database.SaveContact(this.Contact);
                    }
                    await App.Current.MainPage.Navigation.PopAsync();
                }
            });

            this.PickPhotoCommand = new Command(async() =>
            {
                await CrossMedia.Current.Initialize();

                if (!CrossMedia.Current.IsPickPhotoSupported)
                {
                    await App.Current.MainPage.DisplayAlert("No Camera", ":( No camera available.", "OK");
                    return;
                }

                var file = await CrossMedia.Current.PickPhotoAsync(new Plugin.Media.Abstractions.PickMediaOptions
                {
                    PhotoSize = Plugin.Media.Abstractions.PhotoSize.Small
                });

                if (file == null)
                {
                    return;
                }

                using (var memoryStream = new MemoryStream())
                {
                    file.GetStream().CopyTo(memoryStream);
                    this.Contact.Image = memoryStream.ToArray();
                }
            });

            this.GoBackCommand = new Command(async() =>
            {
                await App.Current.MainPage.Navigation.PopAsync();
            });
        }