async void OnRecordReady(object sender, Stream stream) { var len = stream.Length; var bytes = new byte[len]; stream.Read(bytes, 0, (int)len); var recView = (Recorder)sender; var recs = App.Database.GetItems <Record>(); var id = 1; if (recs.Any()) { id = recs.Max(x => x.Id) + 1; } var rec = new Record { Id = id, Name = recView.Title.Text, Description = recView.Description.Text, UserId = Conf.User.Id, Audio = bytes, Point = recView.Position }; App.Database.SaveItem(rec); var httpConnector = new HTTPConector(); httpConnector.Address = "record"; httpConnector.Content = ("Record", rec); var resp = string.Empty; try { resp = await httpConnector.SendAsync <UserMiniSerializer>(); } catch (Exception ex) { return; } if (httpConnector.Response?.StatusCode == System.Net.HttpStatusCode.OK) { var jobj = JObject.Parse(resp); var jrec = jobj.GetValue("record"); var recFromServer = jrec.ToObject <Record>(); App.Database.DeleteItem <Record>(rec.Id); rec.Id = recFromServer.Id; App.Database.SaveItem(rec); } }
async void OnButtonClicked(object sender, System.EventArgs e) { Button button = (Button)sender; button.IsEnabled = false; systeminfo.Text = (string)HTTPConector.Resources["ServerUriPrefix"] + (string)HTTPConector.Resources["ServerUri"]; Conf.User.Phone = Phone.Text.Replace("(", "").Replace(")", "").Replace(" ", "").Replace("-", ""); var json = new { Phone = Conf.User.Phone, PublicKey = Conf.CryptoProvider.ToXmlString(false) }; var httpConnector = new HTTPConector(hash: false); httpConnector.Address = "user"; httpConnector.Content = ("User", json); var resp = string.Empty; try { resp = await httpConnector.SendAsync <UserMiniSerializer>(); } catch (Exception ex) { systeminfo.Text = ex.Message; } if (httpConnector?.Response?.StatusCode == System.Net.HttpStatusCode.OK) { var newUser = JsonConvert.DeserializeObject <User>(resp); var user = Conf.User; user.Token = newUser.Token; user.Id = newUser.Id; user.AuthId = newUser.AuthId; newUser = App.Database.FindUser(); if (newUser != null) { App.Database.DeleteItem <User>(newUser.Id); } user.IsUser = true; App.Database.SaveItem(user); Conf.User = user; await Navigation.PushAsync(new LoginConfirmPage()); } else { systeminfo.Text += resp; Submit.IsEnabled = true; } }
async void OnButtonClicked(object sender, System.EventArgs e) { Button button = (Button)sender; button.IsEnabled = false; var httpConnector = new HTTPConector(hash: true); httpConnector.Address = "user/confirm"; httpConnector.Content = ("Code", Code.Text.Replace("-", "")); var resp = string.Empty; try { resp = await httpConnector.SendAsync <UserMiniSerializer>(); } catch (Exception ex) { systeminfo.Text = ex.Message; } if (httpConnector.Response.StatusCode == System.Net.HttpStatusCode.OK) { var jobj = JObject.Parse(resp); var isConfirm = jobj.Value <bool>("isConfirmed"); if (isConfirm) { var userExt = jobj.GetValue("user").ToObject <User>(); Conf.User.CompanyId = userExt.CompanyId; Conf.User.Name = userExt.Name; Conf.User.SecondName = userExt.SecondName; Conf.User.HourPrice = userExt.HourPrice; Conf.User.IsConfirmed = true; App.Database.SaveItem(Conf.User); var mp = new MainPage(); Navigation.InsertPageBefore(mp, this); await Navigation.PopAsync(true); } else { Info.Text = "Не верный код"; Info.TextColor = Color.Red; } } Submit.IsEnabled = true; }
async Task GetRecordsToTheMap(MapSpan mapRegion) { { //Достаём из БД записи, которые входят в карту и ещё на её не помещались var recordsFromDb = App.Database.GetItems <Record>().Where(x => map.VisibleRegion.IsInclude(x.Point) && !map.Pins.Any(p => (p as PinWithEntity)?.Entity.Id == x.Id)); FillMap(recordsFromDb); } var httpConnector = new HTTPConector(); httpConnector.Address = $"record/get"; var content = new { Latitude = mapRegion.Center.Latitude, Longitude = mapRegion.Center.Longitude, Radius = mapRegion.Radius.Meters }; httpConnector.Content = ("MapSpan", content); var resp = string.Empty; //try //{ // resp = await httpConnector.SendAsync<UserMiniSerializer>(); //} //catch (Exception ex) //{ // return; //} //if (resp != null && (httpConnector.Response?.IsSuccessStatusCode ?? false)) //{ // var op = new JsonSerializerOptions { PropertyNameCaseInsensitive = true }; // var recList = System.Text.Json.JsonSerializer.Deserialize<Record[]>(resp, op) // .Where(x => !map.Pins.Any(p => (p as PinWithEntity)?.Entity?.Id == x.Id)); // FillMap(recList); // App.Database.SaveItems(recList.ToList()); //} //foreach (var pin in map.Pins.Where(p => !map.VisibleRegion.IsInclude(p.Position))) // map.Pins.Remove(pin); }
public async void RecordSelected(object sender, PositionSelectedEventArgs e) { var cvc = sender as CarouselViewControl; var item = cvc.ItemsSource.GetItem(e.NewValue) as Record; if (item.IsDownloaded) { } else { var httpConnectorDesc = new HTTPConector(); httpConnectorDesc.Address = $"record/description"; var contentDesc = new { Id = item.Id, IsPublic = true }; httpConnectorDesc.Content = ("Record", contentDesc); var respDesc = string.Empty; try { respDesc = await httpConnectorDesc.SendAsync <UserMiniSerializer>(); } catch (Exception ex) { return; } var respRec = JsonSerializer.Deserialize <Record>(respDesc, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); item.Description = respRec.Description; item.IsDownloaded = true; } var httpConnector = new HTTPConector(); httpConnector.Address = $"record/listen"; var content = new { Id = item.Id, IsPublic = true }; httpConnector.Content = ("Record", content); var resp = string.Empty; try { resp = await httpConnector.SendAsync <UserMiniSerializer>(true); } catch (Exception ex) { return; } //var path = Path.Combine(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath, item.Id.ToString() + ".wav"); //if (System.IO.File.Exists(path)) // System.IO.File.Delete(path); //var file = System.IO.File.Create(path); //var ar = await httpConnector.Response.Content.ReadAsByteArrayAsync(); //await file.WriteAsync(ar, 0, ar.Length); //file.Close(); ////file.Seek(0, SeekOrigin.Begin); /// if (Device.RuntimePlatform == Device.Android) { var path = Path.Combine(Environment.GetExternalStoragePublicDirectory(Environment.DirectoryMusic).AbsolutePath, "123.wav"); var f = new File(path); if (f.Exists()) { f.Delete(); } f.CreateNewFile(); var fd = new Java.IO.FileWriter(f); //{ var bytes = await httpConnector.Response.Content.ReadAsByteArrayAsync(); var chars = System.Text.Encoding.ASCII.GetChars(bytes); fd.Write(chars, 0, chars.Length); //} IMediaItem media = new MediaItem(); await MediaManager.CrossMediaManager.Current.Play(new FileInfo(f.AbsolutePath)); //MediaPlayer mp = new MediaPlayer(); //var mp = new MediaPlayer(); //mp.SetDataSource(f.AbsolutePath); //mp. //mp.Prepared += (sender, args) => //{ // mp.Start(); //}; //mp.PrepareAsync(); //Player.Play(); } else { Player.Load(await httpConnector.Response.Content.ReadAsStreamAsync()); Player.Play(); } }