private async void StartRecordBtn_Click(object sender, RoutedEventArgs e) { if (ViewModel?.CurrentPosition == null || ViewModel.IsBusy || recordButtonIsBusy) { return; } recordButtonIsBusy = true; var basicGeoposition = new BasicGeoposition() { Latitude = ViewModel.CurrentPosition.Latitude, Longitude = ViewModel.CurrentPosition.Longitude }; if (ViewModel.IsRecording) { // Need to update Map UI before we start saving. So that the entire trip is visible. UpdateMap_PositionChanged(basicGeoposition); // Changing the record button icon and andding end marker earlier to notify user about the stop process. recordButtonImage = new BitmapImage(new Uri("ms-appx:///Assets/StartRecord.png", UriKind.Absolute)); OnPropertyChanged(nameof(RecordButtonImage)); AddEndMarker(basicGeoposition); if (!await ViewModel.StopRecordingTrip()) { recordButtonIsBusy = false; return; } await ViewModel.SaveRecordingTripAsync(); var recordedTripSummary = ViewModel.TripSummary; // Launch Trip Summary Page. Frame.Navigate(typeof(TripSummaryView), recordedTripSummary); } else { if (!await ViewModel.StartRecordingTrip()) { recordButtonIsBusy = false; return; } if (ViewModel.CurrentTrip.HasSimulatedOBDData) { App.SetTitle("CURRENT TRIP (SIMULATED OBD)"); } // Update UI to start recording. recordButtonImage = new BitmapImage(new Uri("ms-appx:///Assets/StopRecord.png", UriKind.Absolute)); OnPropertyChanged(nameof(RecordButtonImage)); // Update the Map with StartMarker, Path AddStartMarker(basicGeoposition); UpdateMap_PositionChanged(basicGeoposition); UpdateStats(); } recordButtonIsBusy = false; }
async void RecordButton_TouchUpInside(object sender, EventArgs e) { if (!CurrentTripViewModel.Geolocator.IsGeolocationEnabled) { Acr.UserDialogs.UserDialogs.Instance.Alert( "Please ensure that geolocation is enabled and permissions are allowed for MyDriving to start a recording.", "Geolocation Disabled", "OK"); return; } if (!CurrentTripViewModel.IsRecording) { if (!await CurrentTripViewModel.StartRecordingTrip()) { return; } UpdateRecordButton(true); ResetTripInfoView(); AnimateTripInfoView(); if (CurrentTripViewModel.CurrentTrip.HasSimulatedOBDData) { NavigationItem.Title = "Current Trip (Sim OBD)"; } var endpoint = "A"; var annotation = new WaypointAnnotation(CurrentTripViewModel.CurrentPosition.ToCoordinate(), endpoint); tripMapView.AddAnnotation(annotation); } else { if (await CurrentTripViewModel.StopRecordingTrip()) { ResetMapViewState(); InvokeOnMainThread(delegate { mapDelegate = new TripMapViewDelegate(true); tripMapView.Delegate = mapDelegate; }); UpdateRecordButton(false); tripInfoView.Alpha = 0; NavigationItem.Title = "Current Trip"; await CurrentTripViewModel.SaveRecordingTripAsync(); var vc = Storyboard.InstantiateViewController("tripSummaryViewController") as TripSummaryViewController; vc.ViewModel = CurrentTripViewModel; PresentModalViewController(vc, true); } } }
async void OnRecordButtonClick(object sender, EventArgs e) { if (viewModel?.CurrentPosition == null || viewModel.IsBusy) { return; } if (viewModel.NeedSave) { await viewModel.SaveRecordingTripAsync(); } if (viewModel.IsRecording) { if (!await viewModel.StopRecordingTrip()) { return; } //24AddEndMarker(viewModel.CurrentPosition.ToLatLng()); UpdateCarIcon(false); var activity = (Xamarin.Forms.Platform.Android.FormsAppCompatActivity)Activity; activity.SupportActionBar.Title = "Current Trip"; await viewModel.SaveRecordingTripAsync(); } else { if (!await viewModel.StartRecordingTrip()) { return; } //25AddStartMarker(viewModel.CurrentPosition.ToLatLng()); Activity.SupportInvalidateOptionsMenu(); UpdateCarIcon(true); UpdateStats(); StartFadeAnimation(true); if (viewModel.CurrentTrip.HasSimulatedOBDData) { var activity = (BaseActivity)Activity; activity.SupportActionBar.Title = "Current Trip (Sim OBD)"; } } }