public static LocalizacaoInfo atualizarPosicao(LocalizacaoInfo local) { var localRetorno = local; if (_simulando) { if (_indexPercuso < _percursoSimulado.Pontos.Count()) { PercursoPontoInfo ponto = _percursoSimulado.Pontos[_indexPercuso]; localRetorno = executarPosicao(new LocalizacaoInfo { Latitude = ponto.Latitude, Longitude = ponto.Longitude, Sentido = ponto.Sentido, Precisao = ponto.Precisao, Tempo = ponto.Data, Velocidade = ponto.Velocidade }); _indexPercuso++; } else { pararSimulacao(); } } else { localRetorno = executarPosicao(local); } return(localRetorno); }
public bool executarGravacao(LocalizacaoInfo local, RadarInfo radar = null) { if (!PercursoUtils.Gravando) { return(false); } //TimeSpan tempo = local.Tempo.Subtract(_dataAnterior); //if (tempo.TotalSeconds > TEMPO_ATUALIZACAO_PONTO) { /* * if (local.Velocidade >= VELOCIDADE_MAXIMA_PARADO) * { * _ultimoMovimentoReal = local.Tempo; * _emMovimento = true; * } * else { * TimeSpan tempoMovimento = local.Tempo.Subtract(_ultimoMovimentoReal); * if (_emMovimento && tempoMovimento.TotalSeconds > TEMPO_MINIMO_PARADO) * { * _emMovimento = false; * _ultimoMovimentoReal = local.Tempo; * processarPonto(local, false); * } * } * * // if (_emMovimento) * // { * processarPonto(local, true); * return true; * } */ processarPonto(local, radar); return(false); }
private static void avisarRadar(LocalizacaoInfo local, RadarInfo radar) { var regraAviso = new AvisoSonoroBLL(); RadarBLL.RadarAtual = radar; string mensagem = "Tem um radar a frente, diminua para " + radar.Velocidade.ToString() + "km/h!"; MensagemUtils.notificar(RADAR_ID, "Radar Club", mensagem, radar.Velocidade); if (PreferenciaUtils.BeepAviso) { regraAviso.play(PreferenciaUtils.SomAlarme); } if (PreferenciaUtils.VibrarAlerta) { int tempo = PreferenciaUtils.TempoDuracaoVibracao; if (tempo <= 0) { tempo = 1; } tempo = tempo * 1000; MensagemUtils.vibrar(tempo); } if (PreferenciaUtils.HabilitarVoz) { int distancia = arredondarDistancia(local.Distancia); if (distancia != DistanciaOld) { regraAviso.play(RadarTipoEnum.RadarFixo, radar.Velocidade, distancia); DistanciaOld = distancia; } } }
public static void atualizarPosicao(LocalizacaoInfo local) { if (!_simulando) { executarPosicao(local); } }
public bool radarContinuaAFrente(LocalizacaoInfo local, RadarInfo radar) { //if (local.Velocidade > radar.Velocidade) { double anguloRelacaoRadar = local.Sentido - radar.Direcao; if (((Math.Abs(anguloRelacaoRadar) % 360) <= PreferenciaUtils.AnguloRadar) || ((360 - Math.Abs(anguloRelacaoRadar)) % 360) <= PreferenciaUtils.AnguloRadar) { double anguloRadar = angleFromCoordinate(local.Latitude, local.Longitude, radar.Latitude, radar.Longitude); double anguloDiferencial = local.Sentido - anguloRadar; if (anguloDiferencial < 0) { anguloDiferencial += 360; } if (anguloDiferencial > 360) { anguloDiferencial -= 360; } if (((Math.Abs(anguloDiferencial) % 360) <= PreferenciaUtils.AnguloCone) || ((360 - Math.Abs(anguloDiferencial)) % 360) <= PreferenciaUtils.AnguloCone) { return(true); } else { Debug.WriteLine("Radar não está no cone. Meu angulo (" + Math.Floor(local.Sentido) + ") + eu/radar(" + Math.Floor(anguloRadar) + ")."); } } else { Debug.WriteLine("Radar encontrado mas angulo não bate com o do radar = " + Math.Floor(anguloRelacaoRadar) + "."); } //} return(false); }
public virtual void cadastrarRadar(Object sender, EventArgs e) { if (InternetUtils.estarConectado()) { LocalizacaoInfo local = GPSUtils.UltimaLocalizacao; float latitude = (float)local.Latitude; float longitude = (float)local.Longitude; GeocoderUtils.pegarAsync(latitude, longitude, (send, ev) => { var endereco = ev.Endereco; Emagine.Utils.MensagemUtils.avisar(endereco.Logradouro); }); } try { LocalizacaoInfo local = GPSUtils.UltimaLocalizacao; if (local != null) { RadarBLL regraRadar = RadarFactory.create(); regraRadar.inserir(local); MensagemUtils.avisar("Radar incluído com sucesso."); } else { MensagemUtils.avisar("Nenhum movimento registrado pelo GPS."); } } catch (Exception e2) { MensagemUtils.avisar(e2.Message); } }
private static void executarPosicao(LocalizacaoInfo local) { try { _ultimaLocalizacao = local; RadarBLL regraRadar = RadarFactory.create(); PercursoBLL regraPercurso = PercursoFactory.create(); if (RadarBLL.RadarAtual != null) { if (!regraRadar.radarContinuaAFrente(local, RadarBLL.RadarAtual)) { RadarBLL.RadarAtual = null; } } else { double distanciaRadar = (local.Velocidade < 90) ? PreferenciaUtils.DistanciaAlertaUrbano : PreferenciaUtils.DistanciaAlertaEstrada; RadarInfo radar = regraRadar.calcularRadar(local, distanciaRadar); if (radar != null) { local.Distancia = regraRadar.calcularDistancia(local.Latitude, local.Longitude, radar.Latitude, radar.Longitude); if (PreferenciaUtils.AlertaInteligente) { if ((local.Velocidade - 5) > radar.Velocidade) { avisarRadar(local, radar); } } else { avisarRadar(local, radar); } } } var visualPage = GlobalUtils.Visual; if (visualPage != null) { visualPage.VelocidadeAtual = (float)local.Velocidade; visualPage.Precisao = local.Precisao; visualPage.Sentido = local.Sentido; RadarInfo radar = RadarBLL.RadarAtual; if (radar != null) { visualPage.VelocidadeRadar = radar.Velocidade; visualPage.DistanciaRadar = (float)local.Distancia; } else { visualPage.VelocidadeRadar = 0; visualPage.DistanciaRadar = 0; } visualPage.atualizarPosicao(local); visualPage.redesenhar(); } regraPercurso.executarGravacao(local); } catch (Exception e) { ErroPage.exibir(e); } }
public void atualizarPosicao(LocalizacaoInfo local) { //if (AoRotacinar != null && _rotacao != value) _localAtual = local; if (AoAtualizaPosicao != null) { AoAtualizaPosicao(this, local); //this.VisibleRegion = new MapSpan(new Position(local.Latitude, local.Longitude), Configuracao.GPSDeltaPadrao, Configuracao.GPSDeltaPadrao); } }
public bool executarGravacao(LocalizacaoInfo local, RadarInfo radar = null) { if (!PercursoUtils.Gravando) { return(false); } if (local.Precisao > 15) { return(false); } processarPonto(local, radar); return(false); }
private void atualizarMinhaPosicao(LocalizacaoInfo local) { if (minhaPosicao != null) { minhaPosicao.Position = (new LatLng(local.Latitude, local.Longitude)); } else { var marker = new MarkerOptions(); marker.SetPosition(new LatLng(local.Latitude, local.Longitude)); marker.SetTitle("Minha Posição"); minhaPosicao = map.AddMarker(marker); } }
private PercursoPontoInfo gerarPonto(LocalizacaoInfo local, RadarInfo radar = null) { return(new PercursoPontoInfo() { IdPercurso = PercursoUtils.PercursoAtual.Id, Latitude = local.Latitude, Longitude = local.Longitude, Velocidade = local.Velocidade, Sentido = local.Sentido, Precisao = local.Precisao, Data = local.Tempo, IdRadar = (radar != null) ? radar.Id : 0 }); }
/* * private void alertar(LocalizacaoInfo local, RadarInfo radar) { * string mensagem = "Tem um radar a frente, diminua para " + radar.Velocidade.ToString() + "km/h!"; * MensagemUtils.notificar(RADAR_ID, "Alerta de Radar", mensagem); * } */ public bool radarEstaAFrente(LocalizacaoInfo local, RadarInfo radar) { //if (local.Velocidade > radar.Velocidade) { double anguloRelacaoRadar = local.Sentido - radar.Direcao; if (((Math.Abs(anguloRelacaoRadar) % 360) <= PreferenciaUtils.AnguloRadar) || ((360 - Math.Abs(anguloRelacaoRadar)) % 360) <= PreferenciaUtils.AnguloRadar) { string posLatLong = radar.Latitude.ToString() + "|" + radar.Longitude.ToString(); if ((_radares.ContainsKey(posLatLong) && _radares[posLatLong] == false) || !_radares.ContainsKey(posLatLong)) { double anguloRadar = angleFromCoordinate(local.Latitude, local.Longitude, radar.Latitude, radar.Longitude); //double meuAngulo = local.Sentido; double anguloDiferencial = local.Sentido - anguloRadar; if (anguloDiferencial < 0) { anguloDiferencial += 360; } if (anguloDiferencial > 360) { anguloDiferencial -= 360; } if (((Math.Abs(anguloDiferencial) % 360) <= PreferenciaUtils.AnguloCone) || ((360 - Math.Abs(anguloDiferencial)) % 360) <= PreferenciaUtils.AnguloCone) { if (!_radares.ContainsKey(posLatLong)) { _radares.Add(posLatLong, true); } //alertar(local, radar); return(true); } else { Debug.WriteLine("Radar não está no cone. Meu angulo (" + Math.Floor(local.Sentido) + ") + eu/radar(" + Math.Floor(anguloRadar) + ")."); } } else { Debug.WriteLine("Radar encontrado mas já foi alertado."); } } else { Debug.WriteLine("Radar encontrado mas angulo não bate com o do radar = " + Math.Floor(anguloRelacaoRadar) + "."); } //} return(false); }
private static void avisarRadar(LocalizacaoInfo local, RadarInfo radar) { var regraAviso = new AvisoSonoroBLL(); RadarBLL.RadarAtual = radar; string titulo = "Radar+"; string mensagem = "Tem um radar a frente, diminua para " + radar.Velocidade.ToString() + "km/h!"; if (PreferenciaUtils.VibrarAlerta) { int tempo = PreferenciaUtils.TempoDuracaoVibracao; if (tempo <= 0) { tempo = 1; } tempo = tempo * 1000; MensagemUtils.vibrar(tempo); } if (PreferenciaUtils.HabilitarVoz) { MensagemUtils.notificar(RADAR_ID, titulo, mensagem, velocidade: radar.Velocidade); int distancia = arredondarDistancia(local.Distancia); regraAviso.play(radar.Tipo, radar.Velocidade, distancia); DistanciaOld = distancia; } else { if (PreferenciaUtils.CanalAudio == AudioCanalEnum.Notificacao) { if (PreferenciaUtils.BeepAviso) { string arquivoAlarme = regraAviso.pegarArquivo(PreferenciaUtils.SomAlarme); MensagemUtils.notificar(RADAR_ID, titulo, mensagem, audio: arquivoAlarme, velocidade: radar.Velocidade); } else { MensagemUtils.notificar(RADAR_ID, titulo, mensagem, velocidade: radar.Velocidade); } } else { MensagemUtils.notificar(RADAR_ID, titulo, mensagem, velocidade: radar.Velocidade); if (PreferenciaUtils.BeepAviso) { regraAviso.play(PreferenciaUtils.SomAlarme); } } } }
private void pegaEndereco() { if (InternetUtils.estarConectado()) { LocalizacaoInfo localEndereco = GPSUtils.UltimaLocalizacao; float latitude = (float)localEndereco.Latitude; float longitude = (float)localEndereco.Longitude; GeocoderUtils.pegarAsync(latitude, longitude, async(send, ev) => { var endereco = ev.Endereco; mostraEndereco(endereco.Logradouro); }); } }
private LocalizacaoInfo converterLocalizacao(Location location) { LocalizacaoInfo local = new LocalizacaoInfo(); local.Latitude = location.Latitude; local.Longitude = location.Longitude; local.Precisao = location.Accuracy; if (location.HasBearing) { local.Sentido = location.Bearing; _sentidoAnterior = local.Sentido; } else { local.Sentido = _sentidoAnterior; } local.Tempo = (new DateTime(1970, 1, 1)).AddMilliseconds(location.Time); local.Velocidade = location.Speed * 3.6; return(local); }
private void processarPonto(LocalizacaoInfo local, RadarInfo radar = null) { var distancia = GPSUtils.calcularDistancia(local.Latitude, local.Longitude, PercursoUtils.Latitude, PercursoUtils.Longitude); bool alterado = false; if (distancia >= DISTANCIA_MINIMA_PROCESSAMENTO) { var ponto = gerarPonto(local, radar); gravarPonto(ponto); PercursoUtils.PercursoAtual.Pontos.Add(ponto); PercursoUtils.Latitude = (float)local.Latitude; PercursoUtils.Longitude = (float)local.Longitude; alterado = true; } if (PercursoUtils.PaginaAtual != null) { PercursoUtils.PaginaAtual.atualizarGravacao(local, alterado); } }
public void atualizarGravacao(LocalizacaoInfo local, bool alterado) { var percurso = PercursoUtils.PercursoAtual; if (percurso != null) { TimeSpan tempo = TimeSpan.Zero; if (percurso.Pontos.Count > 0) { tempo = local.Tempo.Subtract(percurso.Pontos[0].Data); } _tempoCorrendo.Text = "Tempo: " + tempo.ToString(@"hh\:mm\:ss"); if (alterado) { _tempoParado.Text = "Parado: " + percurso.TempoParadoStr; _paradas.Text = "Paradas: " + percurso.QuantidadeParadaStr; _velocidadeMedia.Text = "V Méd: " + percurso.VelocidadeMediaStr; _velocidadeMaxima.Text = "V Max: " + percurso.VelocidadeMaximaStr; _radares.Text = "Radares: " + percurso.QuantidadeRadarStr; } } }
public int gravar(LocalizacaoInfo local, bool inativar) { //DateTime saveNow = DateTime.Now; int velocidade = (int)Math.Floor(local.Velocidade); velocidade = ((velocidade % 10) > 0) ? (velocidade - (velocidade % 10)) + 10 : velocidade; RadarInfo radar = new RadarInfo { Latitude = local.Latitude, Longitude = local.Longitude, LatitudeCos = Math.Cos(local.Latitude * Math.PI / 180), LatitudeSin = Math.Sin(local.Latitude * Math.PI / 180), LongitudeCos = Math.Cos(local.Longitude * Math.PI / 180), LongitudeSin = Math.Sin(local.Longitude * Math.PI / 180), Direcao = (int)Math.Floor(local.Sentido), Velocidade = velocidade, Tipo = RadarTipoEnum.RadarFixo, DataInclusao = DateTime.Now, Endereco = "", Usuario = true }; return(gravar(radar, inativar)); }
/// <summary> /// Faz todos os calculos referentes a posição do radar referente a posição do usuário /// </summary> /// <param name="local">Localização enviada pelo GPS.</param> public RadarInfo calcularRadar(LocalizacaoInfo local, double distanciaRadar) { double latitudeOld = local.Latitude; double longitudeOld = local.Longitude; /* * double latitudeCos = Math.Cos(local.Latitude * Math.PI / 180); * double latitudeSin = Math.Sin(local.Latitude * Math.PI / 180); * double longitudeCos = Math.Cos(local.Longitude * Math.PI / 180); * double longitudeSin = Math.Sin(local.Longitude * Math.PI / 180); * double distanciaCos = Math.Cos((PreferenciaUtils.DistanciaRadar / 1000) / DIAMETRO_TERRA); */ var args = new RadarBuscaInfo { latitudeCos = Math.Cos(local.Latitude * Math.PI / 180), latitudeSin = Math.Sin(local.Latitude * Math.PI / 180), longitudeCos = Math.Cos(local.Longitude * Math.PI / 180), longitudeSin = Math.Sin(local.Longitude * Math.PI / 180), distanciaCos = Math.Cos((distanciaRadar / 1000) / GPSUtils.DIAMETRO_TERRA), Filtros = listarRadarTipo() }; limparAlertado(local.Latitude, local.Longitude, distanciaRadar); RadarInfo radarCapturado = null; IList <RadarInfo> radares = _db.listar(args); foreach (RadarInfo radar in radares) { if (radarEstaAFrente(local, radar)) { radarCapturado = radar; break; } } return(radarCapturado); }
public GPSiOS() { this.locMgr = new CLLocationManager(); this.locMgr.PausesLocationUpdatesAutomatically = false; if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0)) { locMgr.RequestAlwaysAuthorization(); // works in background //locMgr.RequestWhenInUseAuthorization (); // only in foreground } if (UIDevice.CurrentDevice.CheckSystemVersion(9, 0)) { locMgr.AllowsBackgroundLocationUpdates = true; } LocationUpdated += (sender, e) => { CLLocation location = e.Location; LocalizacaoInfo local = new LocalizacaoInfo(); local.Latitude = location.Coordinate.Latitude; local.Longitude = location.Coordinate.Longitude; local.Precisao = (float)((location.HorizontalAccuracy + location.VerticalAccuracy) / 2); if (location.Course == -1) { local.Sentido = _sentidoAntigo; } else { local.Sentido = (float)location.Course; _sentidoAntigo = local.Sentido; } local.Tempo = NSDateToDateTime(location.Timestamp); local.Velocidade = location.Speed * 3.6; GPSUtils.atualizarPosicao(local); }; }
public abstract void atualizarPosicao(LocalizacaoInfo local);
protected virtual void inicializarComponente() { _GPSSentidoLabel = new Label { Text = "0º", FontSize = 16, HorizontalTextAlignment = TextAlignment.Center, VerticalTextAlignment = TextAlignment.Center }; AbsoluteLayout.SetLayoutBounds(_GPSSentidoLabel, new Rectangle(0.9, 0.12, 0.15, 0.15)); //AbsoluteLayout.SetLayoutBounds(_PrecisaoLabel, new Rectangle(0.11, 0.12, 0.15, 0.15)); AbsoluteLayout.SetLayoutFlags(_GPSSentidoLabel, AbsoluteLayoutFlags.All); _VelocidadeRadarLabel = new Label { Text = "Velocidade", FontSize = 16, HorizontalTextAlignment = TextAlignment.Center, VerticalTextAlignment = TextAlignment.Center }; if (Device.OS == TargetPlatform.iOS) { } AbsoluteLayout.SetLayoutBounds(_VelocidadeRadarLabel, new Rectangle(1, 0.950, 1, 0.1)); AbsoluteLayout.SetLayoutFlags(_VelocidadeRadarLabel, AbsoluteLayoutFlags.All); _DistanciaRadarLabel = new Label { Text = "0 m", FontSize = 16, //HorizontalTextAlignment = TextAlignment.Center, //VerticalTextAlignment = TextAlignment.Center }; //AbsoluteLayout.SetLayoutBounds(_DistanciaRadarLabel, new Rectangle(1, 0.975, 1, 0.1)); //AbsoluteLayout.SetLayoutFlags(_DistanciaRadarLabel, AbsoluteLayoutFlags.All); if (PreferenciaUtils.ExibirBotaoRemover) { _RemoverRadarButton = new Image { Aspect = Aspect.AspectFit, Source = ImageSource.FromFile("menos.png"), WidthRequest = 180, HeightRequest = 180 }; AbsoluteLayout.SetLayoutBounds(_RemoverRadarButton, new Rectangle(0.93, 0.975, 0.2, 0.2)); AbsoluteLayout.SetLayoutFlags(_RemoverRadarButton, AbsoluteLayoutFlags.All); _RemoverRadarButton.GestureRecognizers.Add( new TapGestureRecognizer() { Command = new Command(() => { //var regraAviso = new AvisoSonoroBLL(); //regraAviso.play(RadarTipoEnum.RadarFixo, 40, 300); //AudioUtils.play(AudioEnum.Alarm001); //MensagemUtils.avisar("teste"); //var downloader = new DownloaderAtualizacao(); //downloader.download(); if (InternetUtils.estarConectado()) { LocalizacaoInfo local = GPSUtils.UltimaLocalizacao; float latitude = (float)local.Latitude; float longitude = (float)local.Longitude; GeocoderUtils.pegarAsync(latitude, longitude, (sender, e) => { var endereco = e.Endereco; ClubManagement.Utils.MensagemUtils.avisar(endereco.Logradouro); }); } try { LocalizacaoInfo local = GPSUtils.UltimaLocalizacao; if (local != null) { RadarBLL regraRadar = RadarFactory.create(); regraRadar.gravar(local, false); MensagemUtils.avisar("Radar incluído com sucesso."); } else { MensagemUtils.avisar("Nenhum movimento registrado pelo GPS."); } } catch (Exception e) { MensagemUtils.avisar(e.Message); } } ) }); } if (PreferenciaUtils.ExibirBotaoAdicionar) { _AdicionarRadarButton = new Image { Aspect = Aspect.AspectFit, Source = ImageSource.FromFile("mais.png"), WidthRequest = 180, HeightRequest = 180 }; AbsoluteLayout.SetLayoutBounds(_AdicionarRadarButton, new Rectangle(0.93, 0.975, 0.2, 0.2)); AbsoluteLayout.SetLayoutFlags(_AdicionarRadarButton, AbsoluteLayoutFlags.All); if (TelaUtils.Orientacao == "Landscape") { AbsoluteLayout.SetLayoutBounds(_AdicionarRadarButton, new Rectangle(1, 0.5, 0.2, 0.2)); AbsoluteLayout.SetLayoutFlags(_AdicionarRadarButton, AbsoluteLayoutFlags.All); } _AdicionarRadarButton.GestureRecognizers.Add( new TapGestureRecognizer() { Command = new Command(() => { //var regraAviso = new AvisoSonoroBLL(); //regraAviso.play(RadarTipoEnum.RadarFixo, 40, 300); //AudioUtils.play(AudioEnum.Alarm001); //MensagemUtils.avisar("teste"); //var downloader = new DownloaderAtualizacao(); //downloader.download(); if (InternetUtils.estarConectado()) { LocalizacaoInfo local = GPSUtils.UltimaLocalizacao; float latitude = (float)local.Latitude; float longitude = (float)local.Longitude; GeocoderUtils.pegarAsync(latitude, longitude, (sender, e) => { var endereco = e.Endereco; ClubManagement.Utils.MensagemUtils.avisar(endereco.Logradouro); }); } try { LocalizacaoInfo local = GPSUtils.UltimaLocalizacao; if (local != null) { RadarBLL regraRadar = RadarFactory.create(); regraRadar.gravar(local, false); MensagemUtils.avisar("Radar incluído com sucesso."); } else { MensagemUtils.avisar("Nenhum movimento registrado pelo GPS."); } } catch (Exception e) { MensagemUtils.avisar(e.Message); } } ) }); } _BussolaFundo = new Image { Aspect = Aspect.AspectFit, Source = ImageSource.FromFile("bussolacorpo.png"), WidthRequest = 180, HeightRequest = 180 }; AbsoluteLayout.SetLayoutBounds(_BussolaFundo, new Rectangle(0.93, 0, 0.2, 0.2)); AbsoluteLayout.SetLayoutFlags(_BussolaFundo, AbsoluteLayoutFlags.All); _BussolaAgulha = new Image { Aspect = Aspect.AspectFit, Source = ImageSource.FromFile("bussolaagulha.png"), WidthRequest = 180, HeightRequest = 180 }; AbsoluteLayout.SetLayoutBounds(_BussolaAgulha, new Rectangle(0.93, 0, 0.2, 0.2)); AbsoluteLayout.SetLayoutFlags(_BussolaAgulha, AbsoluteLayoutFlags.All); _PrecisaoFundoImage = new Image { Aspect = Aspect.AspectFit, Source = ImageSource.FromFile("bussolacorpo.png"), WidthRequest = 180, HeightRequest = 180 }; AbsoluteLayout.SetLayoutBounds(_PrecisaoFundoImage, new Rectangle(0.07, 0, 0.2, 0.2)); AbsoluteLayout.SetLayoutFlags(_PrecisaoFundoImage, AbsoluteLayoutFlags.All); _PrecisaoImage = new Image { Aspect = Aspect.AspectFit, Source = ImageSource.FromFile("sat04.png"), WidthRequest = 180, HeightRequest = 180 }; AbsoluteLayout.SetLayoutBounds(_PrecisaoImage, new Rectangle(0.11, 0.04, 0.15, 0.15)); AbsoluteLayout.SetLayoutFlags(_PrecisaoImage, AbsoluteLayoutFlags.All); _PrecisaoLabel = new Label { Text = "0 m", FontSize = 16, HorizontalTextAlignment = TextAlignment.Center, VerticalTextAlignment = TextAlignment.Center }; //AbsoluteLayout.SetLayoutBounds(_PrecisaoLabel, new Rectangle(0.1, 0.025, 0.1, 0.1)); AbsoluteLayout.SetLayoutBounds(_PrecisaoLabel, new Rectangle(0.11, 0.12, 0.15, 0.15)); AbsoluteLayout.SetLayoutFlags(_PrecisaoLabel, AbsoluteLayoutFlags.All); }
public static bool simularPercurso(int idPercurso) { if (_simulando) { ClubManagement.Utils.MensagemUtils.avisar("Já existe uma simulação em andamento."); return(false); } PercursoBLL regraPercurso = PercursoFactory.create(); _percursoSimulado = regraPercurso.pegar(idPercurso); _simulando = true; _indexPercuso = 0; _ultimoPonto = DateTime.MinValue; if (_percursoSimulado == null) { ClubManagement.Utils.MensagemUtils.avisar("Percurso não encontrado."); return(false); } if (_percursoSimulado.Pontos.Count() == 0) { ClubManagement.Utils.MensagemUtils.avisar("Nenhum movimento registrado nesse percurso."); return(false); } //MensagemUtils.notificarPermanente(NOTIFICACAO_SIMULACAO_ID, "Simulando percurso!", string.Empty); ClubManagement.Utils.MensagemUtils.notificarPermanente( PercursoBLL.NOTIFICACAO_SIMULACAO_PERCURSO_ID, "Radar Club", "Simulando percurso...", PercursoBLL.NOTIFICACAO_SIMULACAO_PARAR_PERCURSO_ID, "Parar", PercursoBLL.ACAO_PARAR_SIMULACAO ); ClubManagement.Utils.MensagemUtils.avisar("Iniciando simulação!"); var task = Task.Factory.StartNew(() => { while (_simulando) { if (_indexPercuso < _percursoSimulado.Pontos.Count()) { PercursoPontoInfo ponto = _percursoSimulado.Pontos[_indexPercuso]; LocalizacaoInfo local = new LocalizacaoInfo { Latitude = ponto.Latitude, Longitude = ponto.Longitude, Sentido = ponto.Sentido, Precisao = ponto.Precisao, Tempo = ponto.Data, Velocidade = ponto.Velocidade }; //executarPosicao(local); ThreadUtils.RunOnUiThread(() => { executarPosicao(local); }); if (_ultimoPonto != DateTime.MinValue) { TimeSpan delay = ponto.Data.Subtract(_ultimoPonto); Task.Delay((int)delay.TotalMilliseconds).Wait(); //_ultimoPonto = ponto.Data; } _ultimoPonto = ponto.Data; _indexPercuso++; } else { pararSimulacao(); break; } } }); return(true); }
private static LocalizacaoInfo executarPosicao(LocalizacaoInfo local) { try { var regraPercurso = PercursoFactory.create(); if (PreferenciaUtils.SalvarPercurso && !PercursoUtils.Gravando && local.Velocidade > 20) { var inicializou = regraPercurso.iniciarGravacao(); } _ultimaLocalizacao = local; RadarBLL regraRadar = RadarFactory.create(); if (RadarBLL.RadarAtual != null) { if (regraRadar.radarContinuaAFrente(local, RadarBLL.RadarAtual)) { RadarInfo radar = RadarBLL.RadarAtual; local.Distancia = calcularDistancia(local.Latitude, local.Longitude, radar.Latitude, radar.Longitude); } else { RadarBLL.RadarAtual = null; } } else { double distanciaRadar = (local.Velocidade < 90) ? PreferenciaUtils.DistanciaAlertaUrbano : PreferenciaUtils.DistanciaAlertaEstrada; RadarInfo radar = regraRadar.calcularRadar(local, distanciaRadar); if (radar != null) { local.Distancia = calcularDistancia(local.Latitude, local.Longitude, radar.Latitude, radar.Longitude); if (PreferenciaUtils.AlertaInteligente) { if ((local.Velocidade - 5) > radar.Velocidade) { avisarRadar(local, radar); } } else { if (local.Velocidade > 15) { avisarRadar(local, radar); } } } } regraPercurso.executarGravacao(local, RadarBLL.RadarAtual); var visualPage = GlobalUtils.Visual; if (visualPage != null) { visualPage.VelocidadeAtual = (float)local.Velocidade; visualPage.Precisao = local.Precisao; visualPage.Sentido = local.Sentido; RadarInfo radar = RadarBLL.RadarAtual; if (radar != null) { visualPage.VelocidadeRadar = radar.Velocidade; visualPage.DistanciaRadar = (float)local.Distancia; } else { visualPage.VelocidadeRadar = 0; visualPage.DistanciaRadar = 0; } visualPage.atualizarPosicao(local); visualPage.redesenhar(); } //regraPercurso.executarGravacao(local, RadarBLL.RadarAtual); //MensagemUtils.avisar(MemoryUtils.getInfo().ToString()); } catch (Exception e) { ErroPage.exibir(e); } return(local); }
public override void atualizarPosicao(LocalizacaoInfo posicao) { _map.atualizarPosicao(posicao); }
public void OnLocationChanged(Location location) { if (desativando) { return; } LocalizacaoInfo local = converterLocalizacao(location); /* * local.Velocidade = 20; * local.Latitude = -16.620743; * local.Longitude = -49.356621; * local.Sentido = 324; */ if (Situacao == GPSSituacaoEnum.Ativo) { if (Xamarin.Forms.Forms.IsInitialized) { local = GPSUtils.atualizarPosicao(local); RadarInfo radar = RadarBLL.RadarAtual; if (radar != null) { //var velocidadeImagem = mRootLayout.FindViewById<ImageView>(Resource.Id.velocidadeImagem); atualizarVelocidadeRadar(radar.Velocidade); var distanciaRadar = mRootLayout.FindViewById <TextView>(Resource.Id.distanciaRadar); int distancia = Convert.ToInt32(Math.Floor(local.Distancia)); //velocidadeImagem.SetImageResource(Resource.Drawable.radar_20); //velocidadeRadar.Text = radar.VelocidadeStr; distanciaRadar.Text = distancia.ToString() + " m"; if (mRootLayout.Visibility != ViewStates.Visible) { mRootLayout.Visibility = ViewStates.Visible; } } else { if (mRootLayout.Visibility == ViewStates.Visible) { mRootLayout.Visibility = ViewStates.Invisible; } } } } else if (Situacao == GPSSituacaoEnum.Espera) { var regraPreferencia = new PreferenciaBLL(); if (regraPreferencia.pegar("ligarDesligar", "") == "1" && local.Precisao <= 30) { if (local.Velocidade >= 15) { Situacao = GPSSituacaoEnum.Ativo; if (!Xamarin.Forms.Forms.IsInitialized) { Intent intent = new Intent(this, typeof(MainActivity)); intent.AddFlags(ActivityFlags.NewTask); StartActivity(intent); } else if (MainActivity.Situacao != JanelaSituacaoEnum.Aberta) { Intent intent = new Intent(this, typeof(MainActivity)); intent.AddFlags(ActivityFlags.NewTask); StartActivity(intent); } } else { desativarGPS(); new Handler().PostDelayed(() => { ativarGPS(); }, 30000); } } } }
public void atualizarLocalizacao(LocalizacaoInfo local) { }