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;
        }
예제 #2
0
        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);
                }
            }
        }
예제 #3
0
        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)";
                }
            }
        }