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); }
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(); }); }