public ECGsDemoPageViewModel() { PlotModelConvertLoss = new ReactiveProperty <PlotModel>(); PlotModelAirResistance = new ReactiveProperty <PlotModel>(); PlotModelRollingResistance = new ReactiveProperty <PlotModel>(); PlotModelRegeneLoss = new ReactiveProperty <PlotModel>(); AtentionText = new ReactiveProperty <string>(); _ecgModel = ECGModel.GetECGModel(new SemanticLink { SemanticLinkId = 207 }); _maximum = new double[] { _ecgModel.GraphData.Max(v => v.ConvertLoss), _ecgModel.GraphData.Max(v => v.AirResistance), _ecgModel.GraphData.Max(v => v.RollingResistance), _ecgModel.GraphData.Max(v => v.RegeneLoss) }.Max(); PlotModelConvertLoss.Value = CreatePlotModel("ConvertLoss"); PlotModelAirResistance.Value = CreatePlotModel("AirResistance"); PlotModelRollingResistance.Value = CreatePlotModel("RollingResistance"); PlotModelRegeneLoss.Value = CreatePlotModel("RegeneLoss"); AtentionText.Value = _ecgModel.AtentionText; }
public async void OnNavigatedTo(NavigationParameters parameters) { App.AppStatus = "ECGsPage"; App.EventList.Add(Observable.FromEventPattern <PositionEventArgs>( h => CrossGeolocator.Current.PositionChanged += h, h => CrossGeolocator.Current.PositionChanged -= h) .Subscribe(e => OnPositionChanged(e.Sender, e.EventArgs))); // DependencyService.Get<IAudio>().PlayAudioFile("broadcasting.mp3"); if (parameters.ContainsKey(ParamCalculator)) { _caluculator = parameters[ParamCalculator] as ECOLOGCalculator; } else { _caluculator = new ECOLOGCalculator(); _caluculator.Init(); } _semanticLink = parameters[ParamSemanticLink] as SemanticLink; _ecgModel = ECGModel.GetECGModel(_semanticLink); _maximum = new double[] { _ecgModel.GraphData.Max(v => v.ConvertLoss), _ecgModel.GraphData.Max(v => v.AirResistance), _ecgModel.GraphData.Max(v => v.RollingResistance), _ecgModel.GraphData.Max(v => v.RegeneLoss) }.Max(); PlotModelConvertLoss.Value = CreatePlotModel("ConvertLoss"); PlotModelAirResistance.Value = CreatePlotModel("AirResistance"); PlotModelRollingResistance.Value = CreatePlotModel("RollingResistance"); PlotModelRegeneLoss.Value = CreatePlotModel("RegeneLoss"); AtentionText.Value = _ecgModel.AtentionText; /*** テストコード ***/ /*var positions = TestPosition.TestPositions; * Timer = new ReactiveTimer(TimeSpan.FromMilliseconds(200)); * Timer.Subscribe(x => * { * Device.BeginInvokeOnMainThread(() => * { * OnPositionChanged(null, new PositionEventArgs(positions[TestPosition.Index])); * TestPosition.Index++; * }); * }); * Timer.Start();*/ /*** テストコード ***/ //CrossGeolocator.Current.PositionChanged += OnPositionChanged; if (CrossGeolocator.Current.IsListening == false) { CrossGeolocator.Current.DesiredAccuracy = 1; await CrossGeolocator.Current.StartListeningAsync(minimumTime : TimeSpan.FromMilliseconds(1000), minimumDistance : 0, includeHeading : false); } }
public async void OnNavigatedTo(NavigationParameters parameters) { App.AppStatus = "ResultPage"; App.EventList.Add(Observable.FromEventPattern <PositionEventArgs>( h => CrossGeolocator.Current.PositionChanged += h, h => CrossGeolocator.Current.PositionChanged -= h) .Subscribe(e => OnPositionChanged(e.Sender, e.EventArgs))); //CrossGeolocator.Current.PositionChanged += OnPositionChanged; if (CrossGeolocator.Current.IsListening == false) { CrossGeolocator.Current.DesiredAccuracy = 1; await CrossGeolocator.Current.StartListeningAsync(minimumTime : TimeSpan.FromMilliseconds(1000), minimumDistance : 0, includeHeading : false); } _calculatorParam = parameters[ParamCalculator] as ECOLOGCalculator; _calculatorMine = new ECOLOGCalculator(); _calculatorMine.Init(); _lostEnergy = _calculatorParam.LostEnergyList.Sum(); _transitTime = (int)(_calculatorParam.PositionCollection.Last().Timestamp - _calculatorParam.PositionCollection.First().Timestamp).TotalSeconds; var semanticLink = parameters[ParamSemanticLink] as SemanticLink; _ecgModel = ECGModel.GetECGModel(semanticLink); //DependencyService.Get<IAudio>().PlayAudioFile("broadcasting.mp3"); /*** デバッグコード ***/ /*Debug.WriteLine("Count: " + _calculatorParam.PositionCollection.Count); * Debug.WriteLine("LostEnergy: " + _calculatorParam.LostEnergyList.Sum()); * Debug.WriteLine("AirResistance: " + _calculatorParam.AirResistanceList.Sum()); * Debug.WriteLine("Rolling: " + _calculatorParam.RollingResistanceList.Sum()); * Debug.WriteLine("Convert: " + _calculatorParam.ConvertLossList.Sum()); * Debug.WriteLine("Regene: " + _calculatorParam.RegeneLossList.Sum());*/ /*** デバッグコード ***/ PlotModel.Value = CreatePlotModel(); var timer = new ReactiveTimer(TimeSpan.FromSeconds(1)); timer.Subscribe(v => { Device.BeginInvokeOnMainThread(() => { _count++; /*** テストコード ***/ //OnPositionChanged(null, new PositionEventArgs(TestPosition.TestPositions[TestPosition.Index])); //TestPosition.Index++; /*** テストコード ***/ if (_count >= 10) { timer.Stop(); if (_semanticLink != null) { var parameter = new NavigationParameters { { ECGsPageViewModel.ParamCalculator, _calculatorMine }, { ECGsPageViewModel.ParamSemanticLink, _semanticLink } }; _navigationService.NavigateAsync($"/{nameof(ECGsPage)}", parameter); } else { _navigationService.NavigateAsync($"/{nameof(MapPage)}"); } } }); }); timer.Start(); }